示例#1
0
        public ActionResult Update(RequestDelegatePermissionsViewModel requestViewModel)
        {
            if (requestViewModel == null || requestViewModel.RequestModel == null)
            {
                return(RedirectToAction("BadRequestError", "Home",
                                        new { message = "Не передана ссылка на ресурс" }));
            }
            var request = _requestService.GetRequestById(requestViewModel.RequestModel.IdRequest);

            if (!_securityService.CanUpdate(request))
            {
                return(RedirectToAction("ForbiddenError", "Home"));
            }
            Validate(requestViewModel.RequestModel);
            if (!ModelState.IsValid)
            {
                ViewData["SecurityService"] = _securityService;
                return(View(_requestService.GetRequestViewModelBy(requestViewModel.RequestModel)));
            }
            try
            {
                _requestService.UpdateRequest(requestViewModel.RequestModel);
                _requestService.UpdateRequestState(request);
                _requestService.SaveChanges();
                var emails = _emailBuilder.UpdateRequestEmails(
                    _requestService.GetRequestById(request.IdRequest, true));
                _emailSender.Send(emails);
            }
            catch (DbUpdateException e)
            {
                return(RedirectToAction("ConflictError", "Home",
                                        new { message = ExceptionHelper.RollToInnerException(e).Message }));
            }
            return(Request["returnUri"] != null ? (ActionResult)Redirect(Request["returnUri"]) :
                   RedirectToAction("Index", "Request"));
        }