Exemplo n.º 1
0
        public async Task <IActionResult> CreateCandidate(CandidateForCreationDto candidateForCreationDto)
        {
            var validationInfos = candidateForCreationDto.ValidateCandidateForCreationDto();

            if (validationInfos.Any())
            {
                return(ValidationProblem(validationInfos.First()));
            }

            var categoryFromQueryHandler = await Mediator.Send(new GetCategoryByIdQuery(candidateForCreationDto.CategoryId)) ?? EmptyCategory;

            if (categoryFromQueryHandler == EmptyCategory)
            {
                return(ValidationProblem(NO_CATEGORY_FOUND));
            }

            var candidateFromQueryHandler = await Mediator.Send(new GetCandidateByIDNumberQuery(candidateForCreationDto.IdNumber)) ?? EmptyCandidate;

            if (candidateFromQueryHandler != EmptyCandidate)
            {
                return(ValidationProblem(CONFLICT_WITH_EXISTING_CANDIDATE));
            }

            var candidateDtoFromCommandHandlerToReturn = await Mediator.Send(new CreateCandidateCommand(candidateForCreationDto));

            return(CreatedAtRoute(new { candidateId = candidateFromQueryHandler.Id },
                                  candidateDtoFromCommandHandlerToReturn));
        }
 public CreateCandidateCommand(CandidateForCreationDto candidateForCreationDto)
 {
     _candidateForCreationDto = candidateForCreationDto;
 }