public void AddElement(RequestBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { var request = new Request { DateCreate = model.DateCreate }; context.Requests.Add(request); context.SaveChanges(); var groupDetails = model.DetailRequests .GroupBy(record => record.DetailId) .Select(record => new { detailId = record.Key, amount = record.Sum(r => r.Amount) }); foreach (var gr in groupDetails) { var detailRequest = new RequestDetail { RequestId = request.Id, DetailId = gr.detailId, Amount = gr.amount }; context.RequestDetails.Add(detailRequest); context.SaveChanges(); var updateDetail = context.Details.FirstOrDefault(record => record.Id == detailRequest.DetailId); if (updateDetail == null) { continue; } updateDetail.Amount += detailRequest.Amount; context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public void AddElement(DetailBindingModel model) { var detail = context.Details.FirstOrDefault(record => record.DetailName == model.DetailName); if (detail != null) { throw new Exception("Уже есть деталь"); } context.Details.Add(new Detail { DetailName = model.DetailName, Amount = model.Amount }); context.SaveChanges(); }
public void AddElement(ClientBindingModel model) { var element = context.Clients.FirstOrDefault(rec => rec.ClientFIO == model.ClientFIO); if (element != null) { throw new Exception("Уже есть клиент с таким ФИО"); } context.Clients.Add(new Client { ClientFIO = model.ClientFIO, Login = model.Login, Mail = model.Mail, Password = model.Password }); context.SaveChanges(); }
public void AddElement(CarBindingModel model) { var element = context.Cars.FirstOrDefault(rec => rec.VIN == model.VIN); if (element != null) { throw new Exception("Уже есть автомобиль с данным VIN-номером"); } context.Cars.Add(new Car { VIN = model.VIN, Brand = model.Brand, ClientId = model.ClientId, Mileage = model.Mileage, Model = model.Model }); context.SaveChanges(); }
public void AddElement(TOBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { var _TO = context.TOs.FirstOrDefault(record => record.TOName == model.TOName); if (_TO != null) { throw new Exception("Такое ТО уже существует."); } else { _TO = new TO { TOName = model.TOName, Price = model.Price }; } context.TOs.Add(_TO); context.SaveChanges(); var duplicates = model.TODetails .GroupBy(record => record.DetailId) .Select(record => new { detailId = record.Key, amount = record.Sum(rec => rec.Amount) }); foreach (var duplicate in duplicates) { context.TO_Details.Add(new TO_Detail { TOId = _TO.Id, DetailId = duplicate.detailId, Amount = duplicate.amount }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public void CreateOrder(OrderBindingModel model) { using (var transaction = context.Database.BeginTransaction()) { try { var element = new Order { ClientId = model.ClientId, DateCreate = DateTime.Now, TotalSum = model.TotalSum, OrderStatus = OrderStatus.Принят }; context.Orders.Add(element); context.SaveChanges(); var groupTOs = model.OrderTOs .GroupBy(rec => rec.TOId) .Select(rec => new { TOId = rec.Key, Amount = rec.Sum(r => r.Amount) }); foreach (var groupTO in groupTOs) { context.OrderTOs.Add(new OrderTO { OrderId = element.Id, TOId = groupTO.TOId, Amount = groupTO.Amount }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }