using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using UnivateProperties_API.Context; using UnivateProperties_API.Model.Timeshare; using UnivateProperties_API.Repository.Region; using UnivateProperties_API.Repository.Users; namespace UnivateProperties_API.Repository.Timeshare { public class WeekRepository : IRepository { private readonly DataContext _dbContext; public WeekRepository(DataContext dbContext) { _dbContext = dbContext; } public List Get(Func where) { return _dbContext.Weeks.Where(where).ToList(); } public List GetAll() { return _dbContext.Weeks.ToList(); } private TimeshareWeek GetWeekDetailed(TimeshareWeek week) { // Get Agent if(week.AgentId != 0 && week.Agent == null) { AgentRepository agentRepo = new AgentRepository(_dbContext); week.Agent = agentRepo.GetDetailed(x => x.Id == week.AgentId); } // Get Agency if(week.AgencyId != 0 && week.Agency == null) { AgencyRepository agencyRepo = new AgencyRepository(_dbContext); week.Agency = agencyRepo.GetDetailed(x => x.Id == week.AgencyId); } // Get Region if(week.RegionId != 0 && week.Region == null) { ProvinceRepository provinceRepo = new ProvinceRepository(_dbContext); week.Region = provinceRepo.GetDetailed(x => x.Id == week.RegionId); } // Get Status if(week.StatusId != 0 && week.Status == null) { StatusRepository statusRepo = new StatusRepository(_dbContext); week.Status = statusRepo.GetDetailed(x => x.Id == week.StatusId); } return week; } public TimeshareWeek GetDetailed(Func first) { var item = _dbContext.Weeks.FirstOrDefault(first); item = GetWeekDetailed(item); return item; } public List GetDetailedAll() { var list = GetAll(); List weeklist = new List(); foreach(var item in list) { weeklist.Add(GetWeekDetailed(item)); } return weeklist; } public void Insert(TimeshareWeek item) { item = GetWeekDetailed(item); _dbContext.Add(item); Save(); } public void Insert(IEnumerable items) { foreach (var item in items) { _dbContext.Add(item); } Save(); } public void Remove(TimeshareWeek item) { var i = _dbContext.Weeks.Find(item); _dbContext.Weeks.Remove(i); Save(); } public void Remove(IEnumerable items) { foreach (var item in items) { var i = _dbContext.Weeks.Find(item); _dbContext.Weeks.Remove(i); } Save(); } public void RemoveAtId(int item) { var i = _dbContext.Weeks.Find(item); _dbContext.Weeks.Remove(i); Save(); } public void Save() { _dbContext.SaveChanges(); } public void Update(TimeshareWeek item) { _dbContext.Entry(item).State = EntityState.Modified; Save(); } } }