public async Task <IActionResult> PostAuthenticate([FromForm] OtpRequestViewModel model)
        {
            Random random = new Random();

            var    response = new SingleResponse <OtpRequestViewModel>();
            string OTP      = string.Empty;

            try
            {
                if (ModelState.IsValid)
                {
                    if (!(await _unit.IUser.Exists(t => t.PhoneNumber.Equals(model.MobileNo))).UserObject)
                    {
                        ModelState.AddModelError("PPhone", "Your Phone no. is not register with us");
                        response.Message       = "Your Phone no. is not register with us";
                        response.Status        = false;
                        response.ErrorTypeCode = (int)ErrorMessage.PhoneOrEmailNotRegistor;
                    }
                    else
                    {
                        string strPhone   = ("91" + model.MobileNo);
                        var    otpRequest = new OtpRequestViewModel
                        {
                            MobileNo = strPhone
                        };
                        var otpresposedata = await _smsHandler.SendOtpAsync(SmsVendorUrl : _appSettings.SmsVendorUrl, strHasKey : _appSettings.SmsHasKey, mobile : strPhone);

                        if (otpresposedata.type == "success")
                        {
                            response.Message = "OTP Send on your registor no.";
                            response.Status  = true;
                            response.Data    = model;
                            return(response.ToHttpResponse());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response.Status  = false;
                response.Message = "There was an internal error, please contact to technical support.";
                ErrorTrace.Logger(LogArea.ApplicationTier, ex);
            }
            return(response.ToHttpResponse());
        }
        public async Task <IActionResult> Post([FromForm] UsersViewModel users)
        {
            var    response  = new Response();
            int    userId    = 0;
            string strUserId = this.User.FindFirstValue(ClaimTypes.Name);

            if (ModelState.IsValid)
            {
                bool isEdit = true;
                isEdit = userId > 0 ? true : false;
                try
                {
                    if (!(await _unit.IUser.Exists(t => t.PhoneNumber.Equals(users.ContactNo) && t.UserType == 2)).UserObject)
                    {
                        ModelState.AddModelError("PPhone", "Your Phone no. is not register with us");
                        response.Message       = "Your Phone no. is not register with us";
                        response.Status        = false;
                        response.ErrorTypeCode = (int)ErrorMessage.PhoneOrEmailNotRegistor;
                    }
                    if ((await _unit.IUser.Exists(t => t.Email.Equals(users.EmailId) && t.UserType == 2)).UserObject)
                    {
                        response.Message       = "Email already in use.";
                        response.Status        = false;
                        response.ErrorTypeCode = (int)ErrorMessage.Email;
                    }
                    else
                    {
                        var             tempUsers  = AutoMapper.Mapper.Map <ApplicationUser>(users);
                        ApplicationRole userInRole = new ApplicationRole();
                        if (!isEdit)
                        {
                            tempUsers.CreatedDate = DateTime.Now;
                            tempUsers.CreatedBy   = tempUsers.Id;
                            tempUsers.Status      = true;
                            tempUsers.UserName    = users.EmailId;
                            tempUsers.UserType    = 2;
                            var result = await _userManager.CreateAsync(tempUsers);

                            await _userManager.AddToRoleAsync(tempUsers, "USER");

                            if (result.Succeeded)
                            {
                                string strPhone = ("91" + users.ContactNo);
                                response.Message = "user registered.";
                                response.Status  = true;
                                var otpresposedata = await _sms.SendOtpAsync(SmsVendorUrl : _appSettings.SmsVendorUrl, strHasKey : _appSettings.SmsHasKey, mobile : strPhone);

                                if (otpresposedata.type == "success")
                                {
                                    return(response.ToHttpResponse());
                                }
                            }
                        }
                        else
                        {
                            tempUsers              = (await _userManager.FindByIdAsync(Convert.ToString(userId)));
                            tempUsers.PhoneNumber  = users.ContactNo;
                            tempUsers.UserName     = users.EmailId;
                            tempUsers.ModifiedDate = DateTime.Now;
                            tempUsers.ModifiedBy   = userId;
                            var result = await _userManager.UpdateAsync(tempUsers);
                        }
                        response.Message = "user Added.";
                        response.Status  = true;
                        return(response.ToHttpResponse());
                    }
                }
                catch (Exception ex)
                {
                    response.Status  = false;
                    response.Message = "There was an internal error, please contact technical support.";
                    ErrorTrace.Logger(LogArea.ApplicationTier, ex);
                }
            }
            return(response.ToHttpResponse());
        }