public void TakeApplicationInWork(ApplicationBindingModel model)
        {
            using (var transaction = context.Database.BeginTransaction())

            {
                try
                {
                    Application element = context.Applications.FirstOrDefault(rec => rec.ApplicationId ==
                                                                              model.ApplicationId);
                    if (element == null)
                    {
                        throw new Exception("Элемент не найден");
                    }
                    if (element.Status != ApplicationStatus.Создана)
                    {
                        throw new Exception("Заявка не в статусе \"Создана\"");
                    }
                    var applications = context.Applications.Include(rec => rec.Resourse).Where(rec => rec.ApplicationId == element.ApplicationId);
                    // списываем
                    foreach (var application in applications)
                    {
                        int countOnSklads  = application.Count * element.Count;
                        var skladResourses = context.SkladResourses.Where(rec =>
                                                                          rec.ResourseId == application.ResourseId);
                        foreach (var skladResourse in skladResourses)
                        {
                            // компонентов на одном слкаде может не хватать
                            if (skladResourse.Count >= countOnSklads)
                            {
                                skladResourse.Count -= countOnSklads;
                                countOnSklads        = 0;
                                context.SaveChanges();
                                break;
                            }
                            else
                            {
                                countOnSklads      -= skladResourse.Count;
                                skladResourse.Count = 0;
                                context.SaveChanges();
                            }
                        }
                        if (countOnSklads >= 0)
                        {
                            throw new Exception("Не достаточно ресурсов ");
                        }
                    }
                    element.DateImplement = DateTime.Now;
                    element.Status        = ApplicationStatus.Отправлена;
                    context.SaveChanges();
                    transaction.Commit();
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
        }
Ejemplo n.º 2
0
 public void CreateApplication(ApplicationBindingModel model)
 {
     context.Applications.Add(new Application
     {
         DateCreate = DateTime.Now,
         ResourseId = model.ResourseId,
         Count      = model.Count,
         Sum        = model.Summa,
         Status     = ApplicationStatus.Создана
     });
     context.SaveChanges();
 }
        public void AddElement(SkladBindingModel model)
        {
            Sklad element = context.Sklads.FirstOrDefault(rec => rec.SkladName ==
                                                          model.SkladName);

            if (element != null)
            {
                throw new Exception("Уже есть магазин с таким названием");
            }
            context.Sklads.Add(new Sklad
            {
                SkladName = model.SkladName
            });
            context.SaveChanges();
        }
Ejemplo n.º 4
0
        public void AddElement(MessageInfoBindingModel model)
        {
            MessageInfo element = context.MessageInfos.FirstOrDefault(rec =>
                                                                      rec.MessageId == model.MessageId);

            if (element != null)
            {
                return;
            }
            var message = new MessageInfo
            {
                MessageId       = model.MessageId,
                FromMailAddress = model.FromMailAddress,
                DateDelivery    = model.DateDelivery,
                Subject         = model.Subject,
                Body            = model.Body
            };
            var mailAddress = "*****@*****.**";
            //if (mailAddress.Success)
            //{
            var client = context.Providers.FirstOrDefault(rec => rec.Mail ==
                                                          mailAddress);

            if (client != null)
            {
                message.ProviderId = client.ProviderId;
            }
            // }
            context.MessageInfos.Add(message);
            context.SaveChanges();
        }
Ejemplo n.º 5
0
        public void AddElement(ResourseBindingModel model)
        {
            Resourse element = context.Resourses.FirstOrDefault(rec => rec.ResourseName ==
                                                                model.ResourseName);

            if (element != null)
            {
                throw new Exception("Уже есть компонент с таким названием");
            }
            context.Resourses.Add(new Resourse
            {
                ResourseName  = model.ResourseName,
                ResoursePrice = model.ResoursePrice
            });
            context.SaveChanges();
        }
        public void PutResourseOnSklad(SkladResourseBindingModel model)
        {
            SkladResourse element = context.SkladResourses.FirstOrDefault(rec =>
                                                                          rec.SkladId == model.SkladId && rec.ResourseId == model.ResourseId);

            if (element != null)
            {
                element.Count += model.Count;
            }
            else
            {
                context.SkladResourses.Add(new SkladResourse
                {
                    SkladId    = model.SkladId,
                    ResourseId = model.ResourseId,
                    Count      = model.Count
                });
            }
            context.SaveChanges();
        }