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();
        }
Exemple #4
0
        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;
                }
            }
        }
Exemple #6
0
        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;
                }
            }
        }