public async Task InsertRegistrationDetails(InsertCustomerRegistrationDto InsertCustomerRegistrationDto, int CustomerUsersID)
 {
     await Repository.InsertAsync(new CustomerRegistration
     {
         FirstName        = InsertCustomerRegistrationDto.FirstName,
         LastName         = InsertCustomerRegistrationDto.LastName,
         Email            = InsertCustomerRegistrationDto.Email,
         Mobile           = InsertCustomerRegistrationDto.Mobile,
         Address          = InsertCustomerRegistrationDto.Address,
         Country          = Convert.ToInt32(InsertCustomerRegistrationDto.Country),
         City             = InsertCustomerRegistrationDto.City,
         EmailVerified    = 1,
         UsersID          = CustomerUsersID,
         LoginType        = InsertCustomerRegistrationDto.LoginType,
         TermandCondition = Convert.ToInt32(InsertCustomerRegistrationDto.TermandCondition)
     });
 }
        public async Task <IActionResult> InsertCustomerDetails([FromBody] InsertCustomerRegistrationDto InsertCustomerRegistrationDto)
        {
            try
            {
                CustomerRegistrationDto CustomerRegistrationDto = new CustomerRegistrationDto();
                CustomerRegistrationDto.Email     = InsertCustomerRegistrationDto.Email;
                CustomerRegistrationDto.Country   = InsertCustomerRegistrationDto.Country;
                CustomerRegistrationDto.LoginType = InsertCustomerRegistrationDto.LoginType;
                CustomerRegistrationDto.PWD       = InsertCustomerRegistrationDto.PWD;
                CustomerRegistrationDto.OTP       = InsertCustomerRegistrationDto.OTP;
                CustomerRegistrationDto.MobileOTP = InsertCustomerRegistrationDto.MobileOTP;
                CustomerRegistrationDto.Mobile    = InsertCustomerRegistrationDto.Mobile;
                if (InsertCustomerRegistrationDto.TermandCondition == "Y")
                {
                    InsertCustomerRegistrationDto.TermandCondition = Convert.ToString(1);
                }
                else if (InsertCustomerRegistrationDto.TermandCondition == "N")
                {
                    InsertCustomerRegistrationDto.TermandCondition = Convert.ToString(0);
                }

                var _emailCheck = await _UsersService.LoginAuthenticate(CustomerRegistrationDto);

                if (_emailCheck == null)
                {
                    var _OTPVerifyResponse = await _OTPAuthenticationService.OTPVerifyAuthenticate(CustomerRegistrationDto);

                    var _CountryCode = await _LookupTypeValuesService.GetCountryName(CustomerRegistrationDto.Country);

                    if (_OTPVerifyResponse == "Success")
                    {
                        if (_CountryCode == "SAR")
                        {
                            var _OTPMobileVerifyResponse = await _OTPAuthenticationService.OTPMobileVerifyAuthenticate(CustomerRegistrationDto);

                            if (_OTPMobileVerifyResponse == "Success")
                            {
                                CustomerRegistrationDto.Type = "C";
                                await _UsersService.UserDetails(CustomerRegistrationDto);

                                int getuserID = await _UsersService.getUsersId(CustomerRegistrationDto.Email);

                                CustomerRegistrationDto.UsersID = getuserID;
                                await _CustomerRegistrationService.InsertRegistrationDetails(InsertCustomerRegistrationDto, getuserID);

                                await _OTPAuthenticationService.DeleteOTPVerifydetails(CustomerRegistrationDto);

                                await _OTPAuthenticationService.DeleteMobileOTPVerifydetails(CustomerRegistrationDto);
                            }
                            else
                            {
                                return(BadRequest(new GenericResultDto <string> {
                                    Result = _OTPMobileVerifyResponse, ReEmail = CustomerRegistrationDto.Mobile
                                }));
                            }
                        }
                        else
                        {
                            CustomerRegistrationDto.Type = "C";
                            await _UsersService.UserDetails(CustomerRegistrationDto);

                            int getuserID = await _UsersService.getUsersId(CustomerRegistrationDto.Email);

                            CustomerRegistrationDto.UsersID = getuserID;
                            await _CustomerRegistrationService.InsertRegistrationDetails(InsertCustomerRegistrationDto, getuserID);

                            await _OTPAuthenticationService.DeleteOTPVerifydetails(CustomerRegistrationDto);
                        }
                    }
                    else
                    {
                        return(BadRequest(new GenericResultDto <string> {
                            Result = _OTPVerifyResponse, ReEmail = CustomerRegistrationDto.Email
                        }));
                    }
                }
                else
                {
                    return(BadRequest(new GenericResultDto <string> {
                        Result = "Email Id already registered", LoginType = _emailCheck.Type, ReEmail = _emailCheck.Username
                    }));
                }
            }

            catch (Exception err)
            {
                return(BadRequest(new GenericResultDto <string> {
                    Result = err.Message
                }));
            }
            return(Ok(new GenericResultDto <string> {
                Result = "Customer registration successfull", LoginType = "C", ReFirstName = InsertCustomerRegistrationDto.FirstName, ReEmail = InsertCustomerRegistrationDto.Email
            }));
        }