using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using UnivateProperties_API.Containers.Regions; using UnivateProperties_API.Context; using UnivateProperties_API.Model.Region; namespace UnivateProperties_API.Repository.Region { public class SuburbRepository : ISuburbRepository { private readonly DataContext dBContext; public SuburbRepository(DataContext _dBContext) { dBContext = _dBContext; } public List Get(Func where) { return dBContext.Suburbs.Where(where).ToList(); } public List GetAll() { return dBContext.Suburbs.ToList(); } public List GetBy(string province, string city) { var provObj = dBContext.Provinces.Where(p => p.Description == province).FirstOrDefault(); var cityObj = dBContext.Cities.Where(c => c.ProvinceId == provObj.Id && c.Description == city).FirstOrDefault(); if (cityObj != null) return dBContext.Suburbs.Where(s => s.CityId == cityObj.Id).OrderBy(s => s.Description).ToList(); else return null; } public Suburb GetDetailed(Func first) { throw new NotImplementedException(); } public List GetDetailedAll() { throw new NotImplementedException(); } public void Insert(Suburb item) { item.Id = NewId(); dBContext.Add(item); Save(); } public void Insert(IEnumerable items) { int id = NewId(); foreach (var item in items) { item.Id = id; dBContext.Add(item); id += 1; } Save(); } public void Remove(Suburb item) { dBContext.Suburbs.Remove(item); Save(); } public void Remove(IEnumerable items) { foreach (var item in items) { dBContext.Suburbs.Remove(item); } Save(); } public void RemoveAtId(int item) { var suburb = Get(x => x.Id == item).FirstOrDefault(); if (suburb != null) { dBContext.Suburbs.Remove(suburb); Save(); } } public void Save() { dBContext.SaveChanges(); } public void Update(Suburb item) { dBContext.Entry(item).State = EntityState.Modified; Save(); } public int NewId() { int id = 0; if (dBContext.Suburbs.Count() > 0) { id = dBContext.Suburbs.Max(x => x.Id); } id += 1; return id; } public List GetSearchList() { var suburbs = dBContext.Suburbs.Include("City").Include("City.Province").ToList(); List searchList = new List(); foreach (var sub in suburbs) { searchList.Add(new SuburbSearch() { Province = sub.City.Province.Description, City = sub.City.Description, Suburb = sub.Description, Display = string.Format("{0} - {1}", sub.Description, sub.City.Description) }); } var cities = dBContext.Cities.Include("Province").ToList(); foreach(var city in cities) { searchList.Add(new SuburbSearch() { Province = city.Province.Description, City = city.Description, Suburb = "", Display = string.Format("{0}", city.Description) }); } return searchList.OrderBy(s => s.City).ThenBy(s => s.Suburb).ToList(); } public List GetByProperty(int propertyId) { var prop = dBContext.Properties.Where(p => p.Id == propertyId).FirstOrDefault(); if (prop != null) { var Suburbs = dBContext.Suburbs.Where(s => s.CityId == prop.CityId).ToList(); return Suburbs; } else { return null; } } } }