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; }