예제 #1
0
        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
                    });
                }
            }
        }
예제 #2
0
 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;
         }
     }
 }
예제 #3
0
        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);
 }
예제 #7
0
        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;
                }
            }
        }