示例#1
0
        public static PaymentRequestState FromString(string state)
        {
            PaymentRequestState s = PaymentRequestState.InProcess;

            switch (state)
            {
            case "InProcess":
                s = PaymentRequestState.InProcess;
                break;

            case "WaitConfirm":
                s = PaymentRequestState.WaitConfirm;
                break;

            case "Confirmed":
                s = PaymentRequestState.Confirmed;
                break;

            case "Rejected":
                s = PaymentRequestState.Rejected;
                break;

            case "ReWorked":
                s = PaymentRequestState.ReWorked;
                break;

            case "Credited":
                s = PaymentRequestState.Credited;
                break;
            }
            return(s);
        }
        public ActionResult ChangeState()
        {
            if ((Request["PaymentRequestId_Modal"] == null) || (Request["PaymentRequestState_Modal"] == null))
            {
                ModelState.AddModelError("", "Ошибочный запрос");
                return(RedirectToAction("Index"));
            }

            try
            {
                int id = int.Parse(Request["PaymentRequestId_Modal"]);
                PaymentRequestState state = (PaymentRequestState)byte.Parse(Request["PaymentRequestState_Modal"]);
                PaymentRequestState prev_state;

                PaymentRequest r = db.PaymentRequests.Find(id);
                if (r == null)
                {
                    ModelState.AddModelError("", "Заявка не найдена");
                    return(RedirectToAction("Index"));
                }

                prev_state         = r.RequestState;
                r.RequestState     = state;
                r.WhenStateChanged = DateTime.Now;


                if (Request["Comments"] != null)
                {
                    string Comments = Request["Comments"].ToString();
                    if (!String.IsNullOrEmpty(Comments))
                    {
                        var currentUser = manager.FindById(User.Identity.GetUserId());
                        db.RequestHistories.Add(new RequestHistory()
                        {
                            WhenPosted = DateTime.Now, Comments = Comments, Author = currentUser, Request = r
                        });
                    }
                }

                db.SaveChanges();

                if (prev_state == PaymentRequestState.InProcess && state == PaymentRequestState.WaitConfirm)
                {
                    SendMailToDirector(r.AppointedUser.ShortName, r.Project.Name);
                }
                else if (prev_state == PaymentRequestState.WaitConfirm && state == PaymentRequestState.ReWorked)
                {
                    SendMailToProjectManager(r.AppointedUser.Email, r.Project.Name);
                }

                return(RedirectToAction("Index"));
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", "Ошибка ввода данных " + e.Message);
                return(RedirectToAction("Index"));
            }
        }