public async Task <IActionResult> Close(CloseProjectViewModel viewModel) { if (!this.ModelState.IsValid) { return(this.View(viewModel)); } var authorId = this.projectsService.GetAuthorId(viewModel.Id); if (authorId != this.userManager.GetUserId(this.User)) { this.TempData["Error"] = ActionDeniedMessage; this.RedirectToAction(nameof(this.DetailsById), new { id = viewModel.Id }); } var executorId = this.usersService.GetUserIdByEmail(viewModel.ExecutorEmail); this.TempData["Error"] = null; await this.usersService.RateFreelancerAsync(authorId, executorId, viewModel.StarGivenOrTaken, viewModel.Recommendation); await this.recommendationsService.CreateAsync(authorId, executorId, viewModel.Recommendation); await this.projectsService.CloseAsync(viewModel.Id, executorId); return(this.RedirectToAction(nameof(this.DetailsById), new { id = viewModel.Id })); }
public async Task <ActionResult> Close(CloseProjectViewModel viewModel) { if (!ModelState.IsValid) { return(View(viewModel)); } try { await ProjectService.CloseProject(viewModel.ProjectId, CurrentUserId, viewModel.PublishPlot); return(await RedirectToProject(viewModel.ProjectId)); } catch (Exception ex) { ModelState.AddException(ex); var project = await ProjectRepository.GetProjectAsync(viewModel.ProjectId); viewModel.OriginalName = project.ProjectName; viewModel.IsMaster = project.HasMasterAccess(CurrentUserId, acl => acl.CanChangeProjectProperties); return(View(viewModel)); } }