Exemplo n.º 1
0
        public ProjectModule(IDbContext dbContext, IProjectValidator projectValidator
                             , ICreateProjectCommand createProjectCommand, IDeleteProjectCommand deleteProjectCommand
                             , IProjectRepository projectRepo, ILogFileRepository logFileRepo, IRequestRepository requestRepo
                             , IProjectRequestAggregateRepository projectRequestAggregateRepo)
        {
            _dbContext                   = dbContext;
            _projectValidator            = projectValidator;
            _createProjectCommand        = createProjectCommand;
            _deleteProjectCommand        = deleteProjectCommand;
            _projectRepo                 = projectRepo;
            _logFileRepo                 = logFileRepo;
            _requestRepo                 = requestRepo;
            _projectRequestAggregateRepo = projectRequestAggregateRepo;

            Post[Actions.Project.Aggregates()] = x =>
            {
                return(Aggregates(x.projectId));
            };
            Post[Actions.Project.Files()] = x =>
            {
                return(Files(x.projectId));
            };

            Post[Actions.Project.AvgLoadTimes()] = x =>
            {
                return(AvgLoadTimes(x.projectId));
            };

            Post[Actions.Project.Delete()] = x =>
            {
                this.RequiresClaims(new[] { Claims.ProjectEdit });
                return(DeleteProject(x.projectId));
            };

            Get[Actions.Project.RequestsByAggregate()] = x =>
            {
                return(RequestsByAggregate(x.projectId));
            };
            Post[Actions.Project.RequestsByAggregateDetail()] = x =>
            {
                return(RequestsByAggregateDetail(x.projectId));
            };

            Get[Actions.Project.View()] = x =>
            {
                return(ProjectView(x.projectId));
            };

            Post[Actions.Project.Save] = x =>
            {
                this.RequiresClaims(new[] { Claims.ProjectEdit });
                return(ProjectSave());
            };
        }
Exemplo n.º 2
0
        public async Task <IActionResult> DeleteProjectAsync(int projectId, [FromServices] IDeleteProjectCommand command)
        {
            try
            {
                await command.ExecuteAsync(projectId);

                return(Ok("Успешно"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemplo n.º 3
0
        public void ProjectModuleTest_SetUp()
        {
            _dbContext                   = Substitute.For <IDbContext>();
            _createProjectCommand        = Substitute.For <ICreateProjectCommand>();
            _deleteProjectCommand        = Substitute.For <IDeleteProjectCommand>();
            _projectValidator            = Substitute.For <IProjectValidator>();
            _projectRepo                 = Substitute.For <IProjectRepository>();
            _logFileRepo                 = Substitute.For <ILogFileRepository>();
            _requestRepo                 = Substitute.For <IRequestRepository>();
            _projectRequestAggregateRepo = Substitute.For <IProjectRequestAggregateRepository>();

            Mapper.Initialize((cfg) =>
            {
                cfg.CreateMap <ProjectFormViewModel, ProjectModel>();
            });
        }
Exemplo n.º 4
0
        public async Task <IActionResult> DeleteProjectAsync(int projectId, [FromServices] IDeleteProjectCommand command)
        {
            try
            {
                if ((await _authorizationService.AuthorizeAsync(User, new Project(), Operations.Delete)).Succeeded)
                {
                    string user = User.Identity.Name;
                    await command.ExecuteAsync(projectId, user);

                    return(NoContent());
                }

                return(StatusCode(403, "Вы не можете удалить этот проект!"));
            }
            catch (CannotDeleteProjectWithTasksException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (ProjectLockedException)
            {
                return(BadRequest("В данный момент удаление проекта невозможно!"));
            }
        }
Exemplo n.º 5
0
        public async Task <IActionResult> DeleteProjectAsync(int projectId, [FromBody] DeleteProjectRequest request, [FromServices] IDeleteProjectCommand command)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var response = await command.ExecuteAsync(projectId, request);

            if (!response)
            {
                return(NotFound());
            }

            return(Ok());
        }
        public void DeleteProjectCommandTest_SetUp()
        {
            _dbContext = Substitute.For <IDbContext>();

            _deleteProjectCommand = new DeleteProjectCommand(_dbContext);
        }
Exemplo n.º 7
0
        public IActionResult Delete(int id, [FromServices] IDeleteProjectCommand command)
        {
            _executor.ExecuteCommand(command, id);

            return(NoContent());
        }