using HotelContracts.BindingModels; using HotelContracts.SearchModels; using HotelContracts.StoragesContracts; using HotelContracts.ViewModels; using HotelDatabaseImplement.Models; namespace HotelDatabaseImplement.Implements; public class MaitreStorage : IMaitreStorage { public List GetFullList() { using var context = new HotelDataBase(); return context.Maitres .Select(x => x.GetViewModel) .ToList(); } public List GetFilteredList(MaitreSearchModel model) { if (string.IsNullOrEmpty(model.Login)) { return new List(); } using var context = new HotelDataBase(); return context.Maitres .Where(x => x.Login == model.Login) .Select(x => x.GetViewModel) .ToList(); } public MaitreViewModel? GetElement(MaitreSearchModel model) { if (!model.Id.HasValue) return null; using var context = new HotelDataBase(); return context.Maitres.FirstOrDefault(x => x.Id == model.Id)?.GetViewModel; } public MaitreViewModel? Insert(MaitreBindingModel model) { var item = Maitre.Create(model); using var context = new HotelDataBase(); context.Maitres.Add(item); context.SaveChanges(); return item.GetViewModel; } public MaitreViewModel? Update(MaitreBindingModel model) { using var context = new HotelDataBase(); var item = context.Maitres.FirstOrDefault(x => x.Id == model.Id); if (item == null) return null; item.Update(model); context.SaveChanges(); return item.GetViewModel; } public MaitreViewModel? Delete(MaitreBindingModel model) { using var context = new HotelDataBase(); var item = context.Maitres.FirstOrDefault(x => x.Id == model.Id); if (item == null) return null; context.Maitres.Remove(item); context.SaveChanges(); return item.GetViewModel; } }