public async Task <IActionResult> SubmitCustomerRegistration([FromBody] Models.CustomerRegistrationRequest customerRegistrationRequest)
        {
            var result = await _customerRegistrationService.Register(_mapper.Map <CustomerRegistrationRequest>(customerRegistrationRequest));

            if (result.IsSuccessful)
            {
                return(Ok(new Models.CustomerRegistrationCreated
                {
                    // ReSharper disable once PossibleInvalidOperationException
                    CustomerId = result.CustomerId.Value
                }));
            }

            return(BadRequest(result.ValidationMessages.Select(vm => _mapper.Map <Models.ValidationMessage>(vm)).ToArray()));
        }
Beispiel #2
0
        public async Task SaveCustomerVehicle(SaveCustomerVehicleRequest request, DealerConfigurationResponse dealerConfigResponse)
        {
            if (request == null)
            {
                throw new ArgumentNullException(nameof(request));
            }
            if (dealerConfigResponse == null)
            {
                throw new ArgumentNullException(nameof(dealerConfigResponse));
            }

            var customer = MapCustomer(request);

            var customerVehicle = MapCustomerVehicle(request, customer);

            var existingCustomer = _customerVehicleDal.GetCustomer(request.CustomerNo, request.RooftopId, request.CommunityId);

            if (existingCustomer == null)
            {
                //register customer if could not find in database
                // not handlerd if cdk autoline give customer already registered.
                await _customerRegistrationService.Register(customer, customerVehicle);
            }

            var customerId = await _customerVehicleDal.SaveCustomer(customer);

            customerVehicle.CustomerId = customerId;
            await _customerVehicleDal.SaveCustomerVehicle(customerVehicle);

            var communicationMethod       = GetCommunicationMethod(dealerConfigResponse.CommunicationMethod);
            var inviteCommunicationMethod = await _customerInvitationService.Invite(request, dealerConfigResponse, communicationMethod);

            var invitation = MapInvitation(request, dealerConfigResponse.DealerId, dealerConfigResponse.CommunicationMethod, inviteCommunicationMethod);

            invitation.CustomerId = customer.Id;
            await _customerVehicleDal.LogInvitationDetail(invitation);
        }