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")); }