public void CreateOrUpdate(DetailBindingModel model) { using (var context = new KorytoDatabase()) { Detail element = context.Details.FirstOrDefault(rec => rec.DetailName == model.DetailName && rec.Id != model.Id); if (element != null) { throw new Exception("Уже есть деталь с таким названием"); } if (model.Id.HasValue) { element = context.Details.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } } else { element = new Detail(); context.Details.Add(element); } element.DetailName = model.DetailName; element.Price = model.Price; element.TotalAmount = model.TotalAmount; context.SaveChanges(); } }
public void Delete(RequestBindingModel model) { using (var context = new KorytoDatabase()) { using (var transaction = context.Database.BeginTransaction()) { try { context.DetailRequests.RemoveRange(context.DetailRequests.Where(rec => rec.RequestId == model.Id)); Request element = context.Requests.FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Requests.Remove(element); context.SaveChanges(); } else { throw new Exception("Элемент не найден"); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } }
public void CreateOrUpdate(ClientBindingModel model) { using (var context = new KorytoDatabase()) { Client element = model.Id.HasValue ? null : new Client(); if (model.Id.HasValue) { element = context.Clients.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } } else { element = new Client(); context.Clients.Add(element); } element.ClientFIO = model.ClientFIO; element.Password = model.Password; element.Mail = model.Mail == null ? element.Mail : model.Mail; element.Login = model.Login == null ? element.Login : model.Login; context.SaveChanges(); } }
public void Delete(DetailBindingModel model) { using (var context = new KorytoDatabase()) { Detail element = context.Details.FirstOrDefault(rec => rec.Id == model.Id); if (element != null) { context.Details.Remove(element); context.SaveChanges(); } else { throw new Exception("Элемент не найден"); } } }
public void CreateOrUpdate(RequestBindingModel model) { using (var context = new KorytoDatabase()) { using (var transaction = context.Database.BeginTransaction()) { try { Request element = context.Requests.FirstOrDefault(rec => rec.RequestName == model.RequestName && rec.Id != model.Id); if (element != null) { throw new Exception("Уже есть заявка с таким названием"); } if (model.Id.HasValue) { element = context.Requests.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } } else { element = new Request(); context.Requests.Add(element); } element.RequestName = model.RequestName; element.DateCreate = model.DateCreate; context.SaveChanges(); if (model.Id.HasValue) { var DetailRequests = context.DetailRequests.Where(rec => rec.RequestId == model.Id.Value).ToList(); context.DetailRequests.RemoveRange(DetailRequests.Where(rec => !model.DetailRequests.ContainsKey(rec.DetailId)).ToList()); context.SaveChanges(); foreach (var updateDetail in DetailRequests) { updateDetail.Count = model.DetailRequests[updateDetail.DetailId].Item2; model.DetailRequests.Remove(updateDetail.DetailId); } context.SaveChanges(); } foreach (var pc in model.DetailRequests) { context.DetailRequests.Add(new DetailRequest { RequestId = element.Id, DetailId = pc.Key, Count = pc.Value.Item2 }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } }
public void CreateOrUpdate(CarBindingModel model) { using (var context = new KorytoDatabase()) { using (var transaction = context.Database.BeginTransaction()) { try { Car element = context.Cars.FirstOrDefault(rec => rec.CarName == model.CarName && rec.Id != model.Id); if (element != null) { throw new Exception("Уже есть автомобиль с таким названием"); } if (model.Id.HasValue) { element = context.Cars.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } } else { element = new Car(); context.Cars.Add(element); } element.CarName = model.CarName; element.Price = model.Price; element.FullPrice = model.FullPrice; element.Year = model.Year; context.SaveChanges(); if (model.Id.HasValue) { var CarDetails = context.CarDetails.Where(rec => rec.CarId == model.Id.Value).ToList(); context.CarDetails.RemoveRange(CarDetails.Where(rec => !model.CarDetails.ContainsKey(rec.DetailId)).ToList()); context.SaveChanges(); foreach (var updateDetail in CarDetails) { updateDetail.Count = model.CarDetails[updateDetail.DetailId].Item2; model.CarDetails.Remove(updateDetail.DetailId); } context.SaveChanges(); } foreach (var pc in model.CarDetails) { context.CarDetails.Add(new CarDetail { CarId = element.Id, DetailId = pc.Key, Count = pc.Value.Item2, Sum = pc.Value.Item3 }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } }
public void CreateOrUpdate(OrderBindingModel model) { using (var context = new KorytoDatabase()) { using (var transaction = context.Database.BeginTransaction()) { try { Order element = model.Id.HasValue ? null : new Order(); if (model.Id.HasValue) { element = context.Orders.FirstOrDefault(rec => rec.Id == model.Id); if (element == null) { throw new Exception("Элемент не найден"); } element.ClientId = model.ClientId; element.DateCreate = model.DateCreate; element.DateImplement = model.DateImplement; element.Price = model.Price; element.Status = model.Status; context.SaveChanges(); } else { element.ClientId = model.ClientId; element.DateCreate = model.DateCreate; element.DateImplement = model.DateImplement; element.Price = model.Price; element.Status = model.Status; context.Orders.Add(element); context.SaveChanges(); var groupCars = model.OrderCars .GroupBy(rec => rec.CarId) .Select(rec => new { CarId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupCar in groupCars) { context.OrderCars.Add(new OrderCar { OrderId = element.Id, CarId = groupCar.CarId, Count = groupCar.Count }); context.SaveChanges(); } } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } } }