Esempio n. 1
0
        public Task <Address> Handle(CreateAddress request, CancellationToken cancellationToken)
        {
            var address1   = Address1.Create(request.Address1);
            var address2   = Address2.Create(request.Address2);
            var city       = City.Create(request.City);
            var state      = State.Create(request.State);
            var postalCode = PostalCode.Create(request.PostalCode);

            var result = Address.Create(address1, address2, city, state, postalCode);

            return(Task.FromResult(result));
        }
        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));
        }