using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using UnivateProperties_API.Containers.Timeshare.Detailed; using UnivateProperties_API.Context; using UnivateProperties_API.Helpers; using UnivateProperties_API.Model.Users; namespace UnivateProperties_API.Repository.Users { public class IndividualRepository : IRepository { private readonly DataContext _dbContext; public IndividualRepository(DataContext dbContext) { _dbContext = dbContext; } public List Get(Func where) { return _dbContext.Individuals.Include("User").Where(where).ToList(); } public List GetAll() { foreach(var item in _dbContext.Individuals.Include("User").ToList()) { var list = MyCommon.GetVisibleColumns(item); } return _dbContext.Individuals.Include("User").ToList(); } public Individual GetDetailed(Func first) { var item = _dbContext.Individuals.FirstOrDefault(first); IndividualRepository account = new IndividualRepository(_dbContext); item = GetDetailedObject(item, account); return item; } private Individual GetDetailedObject(Individual item, IndividualRepository repo) { item = repo.GetDetailed(x => x.Id == item.Id); return item; } public List GetAllIndividuals() { List list = new List(); foreach(var item in GetAll()) { list.Add(new DetailedOwner(item)); } return list; } public DetailedOwner GetIndividual(int id) { var item = _dbContext.Individuals.FirstOrDefault(x => x.UserId == id); if(item != null) { return new DetailedOwner(item); } else { var aItem = _dbContext.Agents.FirstOrDefault(x => x.UserId == id); if(aItem != null) { return new DetailedOwner(aItem); } } return new DetailedOwner(); } public void Insert(Individual item) { item.Id = NewId(); _dbContext.Add(item); Save(); } public void Insert(IEnumerable item) { int id = NewId(); foreach (var i in item) { i.Id = id; _dbContext.Add(i); id += 1; } Save(); } public void Remove(Individual item) { var i = _dbContext.Individuals.Find(item); _dbContext.Individuals.Remove(i); Save(); } public void Remove(IEnumerable items) { foreach (var item in items) { Individual i = _dbContext.Individuals.Find(item); _dbContext.Individuals.Remove(i); } Save(); } public void RemoveAtId(int item) { var i = _dbContext.Individuals.Find(item); _dbContext.Individuals.Remove(i); Save(); } //Updates in DB public void Update(Individual item) { _dbContext.Entry(item).State = EntityState.Modified; Save(); } public void Save() { _dbContext.SaveChanges(); } public List GetDetailedAll() { return _dbContext.Individuals.Include("User").Include("Address").Include("BankAccount").ToList(); } public int NewId() { int id = 0; if (_dbContext.Individuals.Count() > 0) { id = _dbContext.Individuals.Max(x => x.Id); } id += 1; return id; } } }