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;
                }
            }
        }
Beispiel #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 FinishApplication(ApplicationBindingModel model)
        {
            Application element = source.Applications.FirstOrDefault(rec => rec.ApplicationId == model.ApplicationId);

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            if (element.Status != ApplicationStatus.Отправлена)
            {
                throw new Exception("Заявка не в статусе \"Отправлена\"");
            }
            element.Status = ApplicationStatus.Выполнена;
        }
        public void CreateApplication(ApplicationBindingModel model)
        {
            int maxId = source.Applications.Count > 0 ? source.Applications.Max(rec => rec.ApplicationId) : 0;

            source.Applications.Add(new Application
            {
                ApplicationId = maxId + 1,
                ResourseId    = model.ResourseId,
                DateCreate    = DateTime.Now,
                Count         = model.Count,
                Summa         = model.Summa,
                Status        = ApplicationStatus.Создана
            });
        }
        public void SendApplication(ApplicationBindingModel model)
        {
            Application element = source.Applications.FirstOrDefault(rec => rec.ApplicationId == model.ApplicationId);

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            if (element.Status != ApplicationStatus.Создана)
            {
                throw new Exception("Заявка не в статусе \"Создана\"");
            }
            element.DateImplement = DateTime.Now;
            element.Status        = ApplicationStatus.Отправлена;
        }
Beispiel #6
0
        public bool ApplicationFinished(ApplicationBindingModel model)
        {
            Application element = context.Applications.FirstOrDefault(rec => rec.ApplicationId == model.ApplicationId);

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            if (element.Status != ApplicationStatus.Отправлена)
            {
                throw new Exception("Заявка не в статусе \"Отправлена\"");
            }
            //if (код проверки выполнена ли)
            //{
            //    return true;
            //}
            return(false);
        }
Beispiel #7
0
        public void SendApplication(ApplicationBindingModel model)
        {
            Application element = context.Applications.FirstOrDefault(rec => rec.ApplicationId == model.ApplicationId);

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            if (element.Status != ApplicationStatus.Создана)
            {
                throw new Exception("Заявка не в статусе \"Создана\"");
            }
            //код отправка по почте
            SendEmail(element.Provider.Mail, "Оповещение по заказам",
                      string.Format("Заказ №{0} от {1} передеан в работу"));


            element.Status = ApplicationStatus.Отправлена;
            context.SaveChanges();
        }
Beispiel #8
0
        public void FinishApplication(ApplicationBindingModel model)
        {
            Application element = context.Applications.FirstOrDefault(rec => rec.ApplicationId == model.ApplicationId);

            if (element == null)
            {
                throw new Exception("Элемент не найден");
            }
            if (element.Status != ApplicationStatus.Отправлена)
            {
                throw new Exception("Заявка не в статусе \"Отправлена\"");
            }
            if (ApplicationFinished(model) != true)
            {
                throw new Exception("Заявка ещё не выполнена");
            }
            element.DateImplement = DateTime.Now;
            element.Status        = ApplicationStatus.Выполнена;
            context.SaveChanges();
        }
        // POST api/applications
        public IHttpActionResult Post(ApplicationBindingModel application)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                using (var db = new ObljubivaSiContext())
                {
                    // Insert only if this is the first application with this name
                    // var oldApplications = db.WeddingApplication.Where(x => x.Name == application.Name && x.Type == application.Type).ToArray();
                    //
                    // if (oldApplications.Length > 0)
                    // {
                    //     return BadRequest("Neustrezna prijava.");
                    // }

                    WeddingApplication newApplication = new WeddingApplication();
                    newApplication.Name        = application.Name;
                    newApplication.Remarks     = application.Remarks;
                    newApplication.TimeApplied = DateTime.Now;
                    newApplication.Phone       = application.Phone;
                    newApplication.Type        = application.Type;

                    db.WeddingApplication.Add(newApplication);
                    db.SaveChanges();
                }

                return(Ok());
            }
            catch (Exception e)
            {
                return(InternalServerError(e));
            }
        }