public async Task <OperationResult <Guid> > Handle(CreateCustomerCommand2 command, CancellationToken cancellationToken) { var errorMessages = new List <string>(); if (string.IsNullOrEmpty(command.Customer.Title)) { errorMessages.Add($"{nameof(command.Customer.Title)} is empty"); } if (string.IsNullOrEmpty(command.Customer.FirstName)) { errorMessages.Add($"{nameof(command.Customer.FirstName)} is empty"); } if (string.IsNullOrEmpty(command.Customer.LastName)) { errorMessages.Add($"{nameof(command.Customer.LastName)} is empty"); } if (errorMessages.Any()) { return(OperationResult <Guid> .ValidationFailure(errorMessages)); } await _customerRepository.Insert(command.Customer); return(OperationResult <Guid> .Success(command.Customer.CustomerId)); }
public async Task <IActionResult> Post([FromBody] CreateCustomerRequest request) { var validator = new CreateCustomerValidator(); var result = validator.Validate(request); if (!result.IsValid) { return(BadRequest(result.Errors)); } var address = Address2.Create(request.Address.HouseNoOrName, request.Address.Street, request.Address.City, request.Address.County, request.Address.PostCode ); var customer = Customer2.Create(request.CustomerId, request.FirstName, request.LastName, request.MiddleName, request.Title, address, request.DateOfBirth, request.CountryOfBirth, request.IdDocumentType, request.IdDocumentNumber, request.VatNumber, request.VatCountry); // wrap customer domain model var createCustomerCommand = new CreateCustomerCommand2(customer); // command handler returns response that wraps domain model var response = await _mediator.Send(createCustomerCommand); if (response.Status == OperationStatus.ValidationFailure) { return(BadRequest(response.ErrorMessages)); } if (response.Status == OperationStatus.Conflict) { return(Conflict(response)); } return(Ok(response.Value)); }