public async Task Should_creat_a_new_customer() { var request = new CreateCustomerRequest2A { FirstName = "firstName", LastName = "lastName", Title = "title", Addresses = new List <AddressRequestAns3> { new AddressRequestAns3 { City = "city", County = "county", CurrentAddress = true, HouseNoOrName = "4", PostCode = "E4", Street = "Liverpool Street" } }, DateOfBirth = new DateTime(2000, 1, 1), IdDocumentType = "Passport", IdDocumentNumber = "1010101" }; var response = await _client.PostAsync($"/api/customers3a", CreateJsonContent(request)); var content = await response.Content.ReadAsStringAsync(); Assert.Equal(HttpStatusCode.OK, response.StatusCode); }
public async Task <IActionResult> Post([FromBody] CreateCustomerRequest2A createCustomerRequest) { // convert request DTO to domain model var customer = new Customer2A(createCustomerRequest.FirstName, createCustomerRequest.LastName, createCustomerRequest.Title, createCustomerRequest.DateOfBirth, createCustomerRequest.IdDocumentType, createCustomerRequest.IdDocumentNumber, createCustomerRequest.Addresses.Select(a => new Address2A(a.HouseNoOrName, a.Street, a.City, a.County, a.PostCode, a.CurrentAddress ))); // command just wrap domain model var createCustomerCommand = new CreateCustomerCommand2A(customer); // command handler returns response that wraps domain model var response = await _mediator.Send(createCustomerCommand); if (response.Status == OperationStatus.ValidationFailure) { return(BadRequest(response.ErrorMessages)); } var customerApiResponse = new CreateCustomerApiResponse2A(response.Value.CustomerId); if (response.Status == OperationStatus.Conflict) { return(Conflict(customerApiResponse)); } return(Ok(customerApiResponse)); }