public void updateElement(BoundOutputModel model) { Output element = source.Outputs.FirstOrDefault(rec => rec.OutputName == model.OutputName && rec.ID != model.ID); if (element != null) { throw new Exception("Уже есть изделие с таким названием"); } element = source.Outputs.FirstOrDefault(rec => rec.ID == model.ID); if (element == null) { throw new Exception("Элемент не найден"); } element.OutputName = model.OutputName; element.Price = model.Price; int maxPCId = source.OutputElements.Count > 0 ? source.OutputElements.Max(rec => rec.ID) : 0; var compIds = model.OutputElements.Select(rec => rec.ElementID).Distinct(); var updateComponents = source.OutputElements .Where(rec => rec.OutputID == model.ID && compIds.Contains(rec.ElementID)); foreach (var updateComponent in updateComponents) { updateComponent.Count = model.OutputElements .FirstOrDefault(rec => rec.ID == updateComponent.ID).Count; } source.OutputElements.RemoveAll(rec => rec.OutputID == model.ID && !compIds.Contains(rec.ElementID)); var groupComponents = model.OutputElements .Where(rec => rec.ID == 0) .GroupBy(rec => rec.ElementID) .Select(rec => new { ComponentId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupComponent in groupComponents) { OutputElement elementPC = source.OutputElements .FirstOrDefault(rec => rec.OutputID == model.ID && rec.ElementID == groupComponent.ComponentId); if (elementPC != null) { elementPC.Count += groupComponent.Count; } else { source.OutputElements.Add(new OutputElement { ID = ++maxPCId, OutputID = model.ID, ElementID = groupComponent.ComponentId, Count = groupComponent.Count }); } } }
public void addElement(BoundOutputModel model) { using (var transaction = context.Database.BeginTransaction()) { try { Output element = context.Outputs.FirstOrDefault(rec => rec.OutputName == model.OutputName); if (element != null) { throw new Exception("Уже есть изделие с таким названием"); } element = new Output { OutputName = model.OutputName, Price = model.Price }; context.Outputs.Add(element); context.SaveChanges(); var groupComponents = model.OutputElements .GroupBy(rec => rec.ElementID) .Select(rec => new { ComponentId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupComponent in groupComponents) { context.OutputElements.Add(new OutputElement { OutputID = element.ID, ElementID = groupComponent.ComponentId, Count = groupComponent.Count }); context.SaveChanges(); } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }
public void addElement(BoundOutputModel model) { Output element = source.Outputs.FirstOrDefault(rec => rec.OutputName == model.OutputName); if (element != null) { throw new Exception("Уже есть изделие с таким названием"); } int maxId = source.Outputs.Count > 0 ? source.Outputs.Max(rec => rec.ID) : 0; source.Outputs.Add(new Output { ID = maxId + 1, OutputName = model.OutputName, Price = model.Price }); int maxPCId = source.OutputElements.Count > 0 ? source.OutputElements.Max(rec => rec.ID) : 0; var groupComponents = model.OutputElements .GroupBy(rec => rec.ElementID) .Select(rec => new { ComponentId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupComponent in groupComponents) { source.OutputElements.Add(new OutputElement { ID = ++maxPCId, OutputID = maxId + 1, ElementID = groupComponent.ComponentId, Count = groupComponent.Count }); } }
public void DelElement(BoundOutputModel model) { _service.deleteElement(model.ID); }
public void UpdElement(BoundOutputModel model) { _service.updateElement(model); }
public void AddElement(BoundOutputModel model) { _service.addElement(model); }
public void updateElement(BoundOutputModel model) { using (var transaction = context.Database.BeginTransaction()) { try { Output element = context.Outputs.FirstOrDefault(rec => rec.OutputName == model.OutputName && rec.ID != model.ID); if (element != null) { throw new Exception("Уже есть изделие с таким названием"); } element = context.Outputs.FirstOrDefault(rec => rec.ID == model.ID); if (element == null) { throw new Exception("Элемент не найден"); } element.OutputName = model.OutputName; element.Price = model.Price; context.SaveChanges(); var compIds = model.OutputElements.Select(rec => rec.ElementID).Distinct(); var updateComponents = context.OutputElements .Where(rec => rec.OutputID == model.ID && compIds.Contains(rec.ElementID)); foreach (var updateComponent in updateComponents) { updateComponent.Count = model.OutputElements .FirstOrDefault(rec => rec.ID == updateComponent.ID).Count; } context.SaveChanges(); context.OutputElements.RemoveRange( context.OutputElements.Where(rec => rec.OutputID == model.ID && !compIds.Contains(rec.ElementID))); context.SaveChanges(); var groupComponents = model.OutputElements .Where(rec => rec.ID == 0) .GroupBy(rec => rec.ElementID) .Select(rec => new { ComponentId = rec.Key, Count = rec.Sum(r => r.Count) }); foreach (var groupComponent in groupComponents) { OutputElement elementPC = context.OutputElements .FirstOrDefault(rec => rec.OutputID == model.ID && rec.ElementID == groupComponent.ComponentId); if (elementPC != null) { elementPC.Count += groupComponent.Count; context.SaveChanges(); } else { context.OutputElements.Add(new OutputElement { OutputID = model.ID, ElementID = groupComponent.ComponentId, Count = groupComponent.Count }); context.SaveChanges(); } } transaction.Commit(); } catch (Exception) { transaction.Rollback(); throw; } } }