Example #1
0
 public void AddElement(OrderListBindingModel model)
 {
     using (var transaction = context.Database.BeginTransaction())
     {
         try
         {
             OrderList element = context.OrderLists.FirstOrDefault(rec =>
                                                                   rec.OrderListName == model.OrderListName);
             if (element != null)
             {
                 throw new Exception("Уже есть список с таким названием");
             }
             element = new OrderList
             {
                 OrderListName = model.OrderListName,
                 Sum           = model.Sum,
             };
             context.OrderLists.Add(element);
             context.SaveChanges();
             // убираем дубли по компонентам
             var groupProducts = model.OrderListProducts
                                 .GroupBy(rec => rec.ProductId)
                                 .Select(rec => new
             {
                 ProductId = rec.Key,
                 Count     = rec.Sum(r => r.Count)
             });
             // добавляем компоненты
             foreach (var groupProduct in groupProducts)
             {
                 context.OrderListProducts.Add(new OrderListProduct
                 {
                     OrderListId = element.Id,
                     ProductId   = groupProduct.ProductId,
                     Count       = groupProduct.Count
                 });
                 context.SaveChanges();
             }
             transaction.Commit();
         }
         catch (Exception)
         {
             transaction.Rollback();
             throw;
         }
     }
 }
Example #2
0
        public List <OrderListProductBindingModel> ReadExcel(string FileName)
        {
            int rows = 0;
            OrderListBindingModel OL = new OrderListBindingModel();
            var ObjWorkExcel         = new Microsoft.Office.Interop.Excel.Application();

            Microsoft.Office.Interop.Excel.Workbook ObjWorkBook = ObjWorkExcel.Workbooks.Open(FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                                              Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBook.Sheets[1];
            var lastCell = ObjWorkSheet.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell);

            string[,] list = new string[lastCell.Column, lastCell.Row];
            for (int i = 0; i < lastCell.Column; i++)
            {
                for (int j = 0; j < lastCell.Row; j++)
                {
                    list[i, j] = ObjWorkSheet.Cells[j + 1, i + 1].Text.ToString();
                    rows       = j + 1;
                }
            }
            ObjWorkBook.Close(false, Type.Missing, Type.Missing);
            ObjWorkExcel.Quit();
            GC.Collect();

            List <OrderListProductBindingModel> orderlistProductBM = new
                                                                     List <OrderListProductBindingModel>();

            for (int i = 0; i < rows; i++)
            {
                orderlistProductBM.Add(new OrderListProductBindingModel
                {
                    Id          = Convert.ToInt32(list[0, i]),
                    OrderListId = Convert.ToInt32(list[1, i]),
                    Price       = Convert.ToDecimal(list[2, i]),
                    ProductName = list[3, i].ToString(),
                    ProductId   = Convert.ToInt32(list[4, i]),
                    Count       = Convert.ToInt32(list[5, i]),
                    Sum         = Convert.ToDecimal(list[6, i])
                });
            }
            OL.OrderListProducts = orderlistProductBM;
            return(orderlistProductBM);
        }
        public void AddElement(OrderListBindingModel model)
        {
            OrderList element = source.OrderLists.FirstOrDefault(rec => rec.OrderListName == model.OrderListName);

            if (element != null)
            {
                throw new Exception("Уже есть изделие с таким названием");
            }
            int maxId = source.OrderLists.Count > 0 ? source.OrderLists.Max(rec => rec.Id) :
                        0;

            source.OrderLists.Add(new OrderList
            {
                Id            = maxId + 1,
                OrderListName = model.OrderListName,
                Sum           = model.Sum
            });
            // компоненты для изделия
            int maxPCId = source.OrderListProducts.Count > 0 ?
                          source.OrderListProducts.Max(rec => rec.Id) : 0;

            // убираем дубли по компонентам
            var groupComponents = model.OrderListProducts.GroupBy(rec => rec.ProductId).Select(rec => new
            {
                ProductId = rec.Key,
                Count     = rec.Sum(r => r.Count)
            });

            // добавляем компоненты
            foreach (var groupMaterial in groupComponents)
            {
                source.OrderListProducts.Add(new OrderListProduct
                {
                    Id          = ++maxPCId,
                    OrderListId = maxId + 1,
                    ProductId   = groupMaterial.ProductId,
                    Count       = groupMaterial.Count
                });
            }
        }
Example #4
0
 public void UpdElement(OrderListBindingModel model)
 {
     using (var transaction = context.Database.BeginTransaction())
     {
         try
         {
             OrderList element = context.OrderLists.FirstOrDefault(rec =>
                                                                   rec.OrderListName == model.OrderListName && rec.Id != model.Id);
             if (element != null)
             {
                 throw new Exception("Уже есть изделие с таким названием");
             }
             element = context.OrderLists.FirstOrDefault(rec => rec.Id == model.Id);
             if (element == null)
             {
                 throw new Exception("Элемент не найден");
             }
             element.OrderListName = model.OrderListName;
             element.Sum           = model.Sum;
             context.SaveChanges();
             // обновляем существуюущие компоненты
             var compIds = model.OrderListProducts.Select(rec =>
                                                          rec.ProductId).Distinct();
             var updateProducts = context.OrderListProducts.Where(rec =>
                                                                  rec.ProductId == model.Id && compIds.Contains(rec.ProductId));
             foreach (var updateProduct in updateProducts)
             {
                 updateProduct.Count =
                     model.OrderListProducts.FirstOrDefault(rec => rec.Id == updateProduct.Id).Count;
             }
             context.SaveChanges();
             context.OrderListProducts.RemoveRange(context.OrderListProducts.Where(rec =>
                                                                                   rec.OrderListId == model.Id && !compIds.Contains(rec.ProductId)));
             context.SaveChanges();
             // новые записи
             var groupProducts = model.OrderListProducts
                                 .Where(rec => rec.Id == 0)
                                 .GroupBy(rec => rec.ProductId)
                                 .Select(rec => new
             {
                 ProductId = rec.Key,
                 Count     = rec.Sum(r => r.Count)
             });
             foreach (var groupProduct in groupProducts)
             {
                 OrderListProduct elementPC =
                     context.OrderListProducts.FirstOrDefault(rec => rec.OrderListId == model.Id &&
                                                              rec.ProductId == groupProduct.ProductId);
                 if (elementPC != null)
                 {
                     elementPC.Count += groupProduct.Count;
                     context.SaveChanges();
                 }
                 else
                 {
                     context.OrderListProducts.Add(new OrderListProduct
                     {
                         OrderListId = model.Id,
                         ProductId   = groupProduct.ProductId,
                         Count       = groupProduct.Count
                     });
                     context.SaveChanges();
                 }
             }
             transaction.Commit();
         }
         catch (Exception)
         {
             transaction.Rollback();
             throw;
         }
     }
 }
        public void UpdElement(OrderListBindingModel model)
        {
            OrderList element = source.OrderLists.FirstOrDefault(rec => rec.OrderListName ==
                                                                 model.OrderListName && rec.Id != model.Id);

            if (element != null)
            {
                throw new Exception("Уже есть изделие с таким названием");
            }
            element = source.OrderLists.FirstOrDefault(rec => rec.Id == model.Id);
            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            element.OrderListName = model.OrderListName;
            element.Sum           = model.Sum;
            int maxPCId = source.OrderListProducts.Count > 0 ?
                          source.OrderListProducts.Max(rec => rec.Id) : 0;

            // обновляем существуюущие компоненты
            var compIds = model.OrderListProducts.Select(rec =>
                                                         rec.ProductId).Distinct();
            var updateMaterials = source.OrderListProducts.Where(rec => rec.OrderListId ==
                                                                 model.Id && compIds.Contains(rec.ProductId));

            foreach (var updateMaterial in updateMaterials)
            {
                updateMaterial.Count = model.OrderListProducts.FirstOrDefault(rec =>
                                                                              rec.Id == updateMaterial.Id).Count;
            }
            source.OrderListProducts.RemoveAll(rec => rec.OrderListId == model.Id &&
                                               !compIds.Contains(rec.ProductId));

            // новые записи
            var groupMaterials = model.OrderListProducts.Where(rec => rec.Id == 0).GroupBy(rec => rec.ProductId)
                                 .Select(rec => new
            {
                ProductId = rec.Key,
                Count     = rec.Sum(r => r.Count)
            });

            foreach (var groupMaterial in groupMaterials)
            {
                OrderListProduct elementPC = source.OrderListProducts.FirstOrDefault(rec
                                                                                     => rec.OrderListId == model.Id && rec.ProductId == groupMaterial.ProductId);
                if (elementPC != null)
                {
                    elementPC.Count += groupMaterial.Count;
                }
                else
                {
                    source.OrderListProducts.Add(new OrderListProduct
                    {
                        Id          = ++maxPCId,
                        OrderListId = model.Id,
                        ProductId   = groupMaterial.ProductId,
                        Count       = groupMaterial.Count
                    });
                }
            }
        }