using Contracts.BindingModels; using Contracts.SearchModels; using Contracts.StorageContracts; using Contracts.ViewModels; using DatabaseImplement.Models; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DatabaseImplement.Implements { public class ProviderStorage : IProviderStorage { public List GetFullList() { using var context = new Database(); return context.Providers.Select(x=>x.GetViewModel).ToList(); } public List GetFilteredList(ProviderSearchModel model) { if (string.IsNullOrEmpty(model.OrganisationType)) { return new(); } using var context = new Database(); return context.Providers.Where(x => x.OrganisationType == model.OrganisationType).Select(x=> x.GetViewModel).ToList(); } public ProviderViewModel? GetElement(ProviderSearchModel model) { if(!model.Id.HasValue) { return null; } using var context = new Database(); return context.Providers.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; } public ProviderViewModel? Insert(ProviderBindingModel model) { var newProvider = Provider.Create(model); if (newProvider == null) return null; using var context = new Database(); context.Providers.Add(newProvider); context.SaveChanges(); return newProvider.GetViewModel; } public ProviderViewModel? Update(ProviderBindingModel model) { using var context = new Database(); var provider = context.Providers.FirstOrDefault(x=> x.Id == model.Id); if(provider == null) return null; provider.Update(model); context.SaveChanges(); return provider.GetViewModel; } public ProviderViewModel? Delete(ProviderBindingModel model) { using var context = new Database(); var element = context.Providers.FirstOrDefault(x=>x.Id == model.Id); if(element != null) { context.Providers.Remove(element); context.SaveChanges(); return element.GetViewModel; } return null; } } }