public async Task <IResult <Guid> > CreateCustomer(CreateCustomerCommand createCommand)
        {
            if (createCommand == null)
            {
                return(await Result <Guid> .FailAsync("customer fields"));
            }

            var validator = createCommand.Validate();

            if (!validator.IsValid)
            {
                return(await Result <Guid> .FailValidationAsync(validator.Errors));
            }

            var customer = await _service.GetCustomerByEmail(createCommand.Email);

            if (customer != null)
            {
                return(await Result <Guid> .FailAsync("customer already exists"));
            }

            var id = await _service.CreateCustomer(createCommand);

            if (id == Guid.Empty)
            {
                return(await Result <Guid> .FailAsync("unable to create customer"));
            }

            return(await Result <Guid> .CreatedAsync(id));
        }