public void user_project_command_failed()
        {
            //given
            var fixture = new Fixture().Customize(new AutoNSubstituteCustomization {
                ConfigureMembers = true
            });

            fixture.Customizations.Add(new RandomNumericSequenceGenerator(long.MinValue, -1));
            fixture.Register <Money>(() => Money.From(fixture.Create <Decimal>()));

            fixture.Register <EntityId>(() => EntityId.Empty());
            fixture.Register <ProjectName>(() => ProjectName.Empty());
            fixture.Register <ProjectCode>(() => ProjectCode.Empty());
            fixture.Register <DateAndTime>(() => DateAndTime.Empty());
            fixture.Register <Money>(() => fixture.Create <Money>());

            var command = new AddProjectCommand();

            var mediator  = fixture.Create <IMediator>();
            var logger    = fixture.Create <ILogger <AddProjectCommandHandler> >();
            var projectDb = fixture.Create <IDbSession <IProjectRepository> >();
            var userDb    = fixture.Create <IDbSession <IUserRepository> >();

            // when
            var handler = new AddProjectCommandHandler(logger, mediator, projectDb, userDb);

            var result = handler.Execute(command);

            // then
            Assert.True(!result.IsSucceed && result.Violations.Count == 4);
        }
Ejemplo n.º 2
0
        public async Task <AddProjectPayload> AddProject(
            AddProjectInput input,
            [Service] IServiceProvider serviceProvider,
            CancellationToken cancellationToken)
        {
            var addProjectCommand = new AddProjectCommand()
            {
                Description     = input.Description,
                LongDescription = input.LongDescription
            };

            using (var scope = serviceProvider.CreateScope())
            {
                var mediator = scope.ServiceProvider.GetRequiredService <IMediator>();
                try
                {
                    var response = await mediator.Send(addProjectCommand, cancellationToken);

                    return(new AddProjectPayload(response));
                }
                catch (ValidationException e)
                {
                    var userErrors = new List <UserError>();
                    e.Message.Split(";").ForAll(item =>
                    {
                        userErrors.Add(new UserError(item, item));
                    });
                    return(new AddProjectPayload(userErrors));
                }
            }
        }
        public void AddAProjectToRepository()
        {
            var projectRepository = new ProjectRepository();
            var project = new Project("secrets");
            var addProjectCommand = new AddProjectCommand(projectRepository, "secrets");

            addProjectCommand.Execute();

            Assert.That(projectRepository.AllProjects()[0], Is.EqualTo(project));
        }
        public async Task <IActionResult> AddProject([FromBody] AddProjectCommand command)
        {
            if (command is null)
            {
                return(BadRequest());
            }

            var projectId = await _mediator.Send(command);

            return(CreatedAtAction("AddProject", new { id = projectId }));
        }
Ejemplo n.º 5
0
        public void ProjectCommandHandler_Handle_AddProjectCommand_AddNewProject(string description, string longDescription)
        {
            IRequestHandler <AddProjectCommand, bool> handler = GetCommandHandlerInstance();
            var commmand = new AddProjectCommand()
            {
                Description = description, LongDescription = longDescription
            };

            Action handle = () => handler.Handle(commmand, default).Wait();

            handle.Should().Throw <ValidationException>();
        }
Ejemplo n.º 6
0
        public void ProjectCommandHandler_Handle_AddProjectCommand_AddValidProjects(string description, string longDescription)
        {
            IRequestHandler <AddProjectCommand, bool> handler = GetCommandHandlerInstance();
            var commmand = new AddProjectCommand()
            {
                Description = description, LongDescription = longDescription
            };

            var handle = handler.Handle(commmand, default).Result;

            handle.Should().BeTrue();
        }
Ejemplo n.º 7
0
 public ProjectController(
     GetProjectOverviewQuery getProjectOverviewQuery,
     AddProjectCommand addProjectCommand,
     ChangeProjectOrderCommand changeProjectOrderCommand,
     GetProjectByIdQuery getProjectByIdQuery,
     EditProjectCommandHandler editProjectHandler)
 {
     _getProjectOverviewQuery   = getProjectOverviewQuery;
     _addProjectCommand         = addProjectCommand;
     _changeProjectOrderCommand = changeProjectOrderCommand;
     _getProjectByIdQuery       = getProjectByIdQuery;
     _editProjectHandler        = editProjectHandler;
 }
Ejemplo n.º 8
0
        public async Task <IActionResult> AddProject([FromBody] AddProjectCommand command)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var response = await _mediator.Send(command);

                    return(StatusCode(response.ResponseStatusCode, response.Value));
                }
                return(StatusCode(StatusCodes.Status400BadRequest));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex));
            }
        }
Ejemplo n.º 9
0
        public async Task <AddProjectPayload> AddProject(
            AddProjectInput input,
            [Service] IServiceProvider serviceProvider,
            CancellationToken cancellationToken)
        {
            var addProjectCommand = new AddProjectCommand
            {
                Name                    = input.Name,
                Description             = input.Description,
                CategoryId              = input.CategoryId,
                TypeId                  = input.TypeId,
                ResponsibleDepartmentId = input.ResponsibleDepartmentId,
                InitiatorId             = input.InitiatorId,
                CuratorId               = input.CuratorId,
                ManagerId               = input.ManagerId,
                DepartmentIds           = input.DepartmentIds,
                ContragentIds           = input.ContragentIds,
                ProductIds              = input.ProductIds
            };

            using (var scope = serviceProvider.CreateScope())
            {
                var mediator = scope.ServiceProvider.GetRequiredService <IMediator>();
                try
                {
                    var response = await mediator.Send(addProjectCommand, cancellationToken);

                    return(new AddProjectPayload(response));
                }
                catch (ValidationException e)
                {
                    var userErrors = new List <UserError>();
                    e.Message.Split(";").ForAll(item =>
                    {
                        userErrors.Add(new UserError(item, item));
                    });
                    return(new AddProjectPayload(userErrors));
                }
            }
        }
        protected override CommandResult <Guid> ExecuteCommand(AddProjectCommand command)
        {
            var isSucceed     = false;
            var aggregationId = Guid.Empty;

            _logger.LogDebug("Criada agregação a partir do comando {CommandName} com valores {Valores}",
                             nameof(command), command);

            var client = _dbUserSession.Repository.Get(EntityId.From(command.ClientId));

            var agg = ProjectAggregationRoot.CreateFrom(
                ProjectName.From(command.Name),
                ProjectCode.From(command.Code),
                Money.From(command.Budget),
                DateAndTime.From(command.StartDate),
                client.Id);

            if (agg.ValidationResults.IsValid)
            {
                // _logger.LogInformation($"Agregação Project valida id gerado", agg.GetChange().Id);

                using (_logger.BeginScope("Persistencia"))
                {
                    _dbSession.Repository.Add(agg.GetChange());
                    _dbSession.SaveChanges();
                }

                // _logger.LogInformation($"Project persistido ID: {agg.GetChange().Id}");
                using (_logger.BeginScope("Publicacão de Eventos"))
                {
                    agg.GetEvents().ToImmutableList().ForEach(ev => Publisher.Publish(ev));
                }

                isSucceed     = true;
                aggregationId = agg.GetChange().Id.Value;
            }

            return(new CommandResult <Guid>(isSucceed, aggregationId, agg.ValidationResults.Errors.ToImmutableList()));
        }
Ejemplo n.º 11
0
        public async Task <BaseDto> AddHandle([FromBody] AddProjectCommand cmd)
        {
            var cmdResponse = await _mediator.Send(cmd);

            return(cmdResponse);
        }
        public async Task <ActionResult> AddProjectDmr([FromBody] AddProjectCommand command)
        {
            var dto = await _mediator.SendAsync(command);

            return(Created("", dto));
        }
Ejemplo n.º 13
0
        public IActionResult Save([FromBody] AddProjectCommand entity)
        {
            var result = _mediator.Send <ExecutionResult>(entity);

            return(Ok(result));
        }
Ejemplo n.º 14
0
 public Task <Project> AddProjectAsync(AddProjectCommand command)
 {
     return(api.PostAsync <AddProjectCommand, Project>(GetProjectsPath(), command));
 }