コード例 #1
0
        public ActionResult Decide(int id, bool isApproved, string reason)
        {
            var application = _applicationRepository.GetNullableById(id);

            if (application == null)
            {
                Message = string.Format(Messages.NotFound, "application", id);
                return(this.RedirectToAction(a => a.Index()));
            }

            // make the changes to the object
            application.IsPending      = false;
            application.IsApproved     = isApproved;
            application.DateDecision   = DateTime.Now;
            application.DecisionReason = reason;

            application.TransferValidationMessagesTo(ModelState);

            Person person = null;

            if (ModelState.IsValid)
            {
                person = _personService.CreateSeminarPerson(application, ModelState);
            }

            if (person == null)
            {
                ModelState.AddModelError("Person", "Unsuccessful in adding person to the current seminar.");
            }

            // check if model state is still valid, might have changed on create
            if (ModelState.IsValid)
            {
                // save the application
                _applicationRepository.EnsurePersistent(application);
                Message = string.Format("Application for {0} has been {1}", application.FullName, isApproved ? "Approved" : "Denied");

                if (isApproved)
                {
                    _eventService.Accepted(person, Site);
                }
                else
                {
                    _eventService.Denied(person, Site);
                }

                return(this.RedirectToAction <SeminarApplicationController>(a => a.Index()));
            }

            return(View(application));
        }