public List <GuideViewModel> GetFilteredList(GuideBindingModel model) { if (model == null) { return(null); } using (var context = new TourFirmDatabase()) { return(context.Guides .Include(rec => rec.GuideExcursions) .ThenInclude(rec => rec.Excursion) .Where(rec => (rec.OperatorID == model.OperatorID)) .ToList(). Select(rec => new GuideViewModel { ID = rec.ID, Name = rec.Name, Surname = rec.Surname, PhoneNumber = rec.PhoneNumber, WorkPlace = rec.WorkPlace, MainLanguage = rec.MainLanguage, AdditionalLanguage = rec.AdditionalLanguage, OperatorID = rec.OperatorID, GuideExcursions = rec.GuideExcursions .ToDictionary(recEX => recEX.ExcursionID, recEX => (recEX.Excursion?.Name)) }).ToList()); } }
public void Insert(GuideBindingModel model) { using (var context = new TourFirmDatabase()) { using (var transaction = context.Database.BeginTransaction()) { try { Guide guide = new Guide { Name = model.Name, Surname = model.Surname, PhoneNumber = model.PhoneNumber, WorkPlace = model.WorkPlace, MainLanguage = model.MainLanguage, AdditionalLanguage = model.AdditionalLanguage, OperatorID = model.OperatorID }; context.Guides.Add(guide); context.SaveChanges(); CreateModel(model, guide, context); context.SaveChanges(); transaction.Commit(); } catch { transaction.Rollback(); throw; } } } }
public GuideViewModel GetElement(GuideBindingModel model) { if (model == null) { return(null); } using (var context = new TourFirmDatabase()) { var guide = context.Guides .Include(rec => rec.GuideExcursions) .ThenInclude(rec => rec.Excursion) .FirstOrDefault(rec => rec.ID == model.ID || rec.Surname == model.Surname); return(guide != null ? new GuideViewModel { ID = guide.ID, Name = guide.Name, Surname = guide.Surname, PhoneNumber = guide.PhoneNumber, WorkPlace = guide.WorkPlace, MainLanguage = guide.MainLanguage, AdditionalLanguage = guide.AdditionalLanguage, OperatorID = guide.OperatorID, GuideExcursions = guide.GuideExcursions .ToDictionary(recEX => recEX.ExcursionID, recEX => (recEX.Excursion?.Name)) } : null); } }
private Guide CreateModel(GuideBindingModel model, Guide guide, TourFirmDatabase context) { guide.Name = model.Name; guide.Surname = model.Surname; guide.PhoneNumber = model.PhoneNumber; guide.WorkPlace = model.WorkPlace; guide.MainLanguage = model.MainLanguage; guide.AdditionalLanguage = model.AdditionalLanguage; guide.OperatorID = model.OperatorID; if (model.GuideExcursions != null) { if (model.ID.HasValue) { var excursionGuides = context.GuideExcursions.Where(rec => rec.GuideID == model.ID.Value).ToList(); // удалили те, которых нет в модели context.GuideExcursions.RemoveRange(excursionGuides.Where(rec => !model.GuideExcursions.ContainsKey(rec.ExcursionID)).ToList()); context.SaveChanges(); } // добавили новые foreach (var eg in model.GuideExcursions) { context.GuideExcursions.Add(new GuideExcursion { GuideID = guide.ID, ExcursionID = eg.Key, }); context.SaveChanges(); } } return(guide); }
public void Update(GuideBindingModel model) { using (var context = new TourFirmDatabase()) { using (var transaction = context.Database.BeginTransaction()) { try { var element = context.Guides.FirstOrDefault(rec => rec.ID == model.ID); if (element == null) { throw new Exception("Элемент не найден"); } CreateModel(model, element, context); context.SaveChanges(); transaction.Commit(); } catch { transaction.Rollback(); throw; } } } }
public void Delete(GuideBindingModel model) { var element = _guideStorage.GetElement(new GuideBindingModel { ID = model.ID }); if (element == null) { throw new Exception("Элемент не найден"); } _guideStorage.Delete(model); }
public List <GuideViewModel> Read(GuideBindingModel model) { if (model == null) { return(_guideStorage.GetFullList()); } if (model.ID.HasValue || model.Surname != null) { return(new List <GuideViewModel> { _guideStorage.GetElement(model) }); } return(_guideStorage.GetFilteredList(model)); }
public void Delete(GuideBindingModel model) { using (var context = new TourFirmDatabase()) { Guide element = context.Guides.FirstOrDefault(rec => rec.ID == model.ID); if (element != null) { context.Guides.Remove(element); context.SaveChanges(); } else { throw new Exception("Элемент не найден"); } } }
public void CreateOrUpdate(GuideBindingModel model) { var element = _guideStorage.GetElement(new GuideBindingModel { Name = model.Name, Surname = model.Surname, PhoneNumber = model.PhoneNumber }); if (element != null && element.ID != model.ID) { throw new Exception("Данный гид уже зарегистрирован"); } if (model.ID.HasValue) { _guideStorage.Update(model); } else { _guideStorage.Insert(model); } }