using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.IO; using System.Linq; using UnivateProperties_API.Containers.Misc; using UnivateProperties_API.Containers.Property; using UnivateProperties_API.Context; using UnivateProperties_API.Model.Misc; namespace UnivateProperties_API.Repository.Misc { public class CarouselRepository : ICarouselRepository { private readonly DataContext dBContext; public CarouselRepository(DataContext _dBContext) { dBContext = _dBContext; } public List Get(Func where) { var CarouselList = dBContext.Carousel.Where(where).ToList(); foreach (var item in CarouselList) { if (!string.IsNullOrEmpty(item.Image) && !item.Image.StartsWith("data:image")) item.Image = ImageFormatter.ImageToBase64(item.Image); } return CarouselList; } public List GetAll() { var CarouselList = dBContext.Carousel.ToList(); foreach (var item in CarouselList) { if (!string.IsNullOrEmpty(item.Image) && !item.Image.StartsWith("data:image")) item.Image = ImageFormatter.ImageToBase64(item.Image); } return CarouselList; } public Carousel GetDetailed(Func first) { return dBContext.Carousel.FirstOrDefault(first); } public List GetDetailedAll() { return dBContext.Carousel.ToList(); } public void Insert(Carousel item) { string image = item.Image; item.Image = ""; dBContext.Add(item); Save(); bool saveFiles = false; var loc = dBContext.Location.FirstOrDefault().PropertyImageLocation; var lastID = item.Id; item.Id = lastID; if (!string.IsNullOrEmpty(loc)) { saveFiles = true; loc = loc.Replace("Properties", "Carousel"); if (Directory.Exists(loc)) { Directory.CreateDirectory(loc); } } if (saveFiles) { string path = ImageFormatter.Base64ToImage(image, loc, lastID.ToString()); item.Image = path; } Update(item); } public void Insert(IEnumerable items) { foreach (var item in items) { dBContext.Carousel.Add(item); Save(); } } public void Remove(Carousel item) { dBContext.Carousel.Remove(item); Save(); } public void Remove(IEnumerable items) { foreach (var item in items) { dBContext.Carousel.Remove(item); Save(); } } public void RemoveAtId(int item) { var Carousel = Get(x => x.Id == item).FirstOrDefault(); if (Carousel != null) { dBContext.Carousel.Remove(Carousel); Save(); } } public void Save() { dBContext.SaveChanges(); } public void Update(Carousel item) { dBContext.Entry(item).State = EntityState.Modified; Save(); } public int NewId() { // Not sure if properties need it return 0; } public List GetCarouselItems() { List list = new List(); var CarouselList = dBContext.Carousel.ToList(); foreach (var item in CarouselList) { if (!string.IsNullOrEmpty(item.Image) && !item.Image.StartsWith("data:image")) item.Image = ImageFormatter.ImageToBase64(item.Image); var carItem = new CarouselList() { Id = item.Id, Image = item.Image, Header = item.Header }; if (item.PropertyId > 0) { var property = dBContext.Properties.Include("Province").Include("City").Include("Suburb").Where(p => p.Id == item.PropertyId).FirstOrDefault(); carItem.Address = string.Format("{0}, {1}
{2}", property.Suburb.Description, property.City.Description, property.AddressLine3); carItem.IsProperty = true; } if (item.TimeshareId > 0) { var timeshare = dBContext.Weeks.Where(t => t.Id == item.TimeshareId).FirstOrDefault(); carItem.Bedrooms = timeshare.Bedrooms; carItem.Sleeps = timeshare.MaxSleep; carItem.Arrival = timeshare.ArrivalDate; carItem.Departure = timeshare.DepartureDate; carItem.IsProperty = false; } list.Add(carItem); } return list; } public CarouselList GetCarousel(int id) { var carousel = dBContext.Carousel.Where(c => c.Id == id).FirstOrDefault(); CarouselList item = new CarouselList(); if (carousel != null) { foreach (string prop in carousel.GetAllProperties()) { if (prop != "Item" && prop != "Display") item[prop] = carousel[prop]; } if (item.PropertyId > 0) { var property = dBContext.Properties.Include("Province").Include("City").Include("Suburb").Where(p => p.Id == item.PropertyId).FirstOrDefault(); item.Address = string.Format("{0}, {1}
{2}", property.Suburb.Description, property.City.Description, property.AddressLine3); item.IsProperty = true; } if (item.TimeshareId > 0) { var timeshare = dBContext.Weeks.Where(t => t.Id == item.TimeshareId).FirstOrDefault(); item.Bedrooms = timeshare.Bedrooms; item.Sleeps = timeshare.MaxSleep; item.Arrival = timeshare.ArrivalDate; item.Departure = timeshare.DepartureDate; item.IsProperty = false; } } return item; } } }