Ejemplo n.º 1
0
        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 }));
        }
Ejemplo n.º 2
0
        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));
            }
        }