Exemple #1
0
        public async Task <HttpResponseMessage> VerifyCode(VerifyRegisterCodeViewModel userModel)
        {
            if (!ModelState.IsValid)
            {
                return(new HttpResponseMessage()
                {
                    Content = new StringContent(
                        "<strong>Invalid Model</strong>",
                        Encoding.UTF8,
                        "text/html")
                });
            }

            ReturnData result = await _repo.VerifyCode(userModel);


            return(OkResponse <ReturnData>(result));
        }
        public async Task <ReturnData> VerifyCode(VerifyRegisterCodeViewModel model)
        {
            var isValidCode = await _userManager.VerifyChangePhoneNumberTokenAsync(model.UserId, model.Code, model.PhoneNumber);

            if (isValidCode)
            {
                var user = await _userManager.FindByIdAsync(model.UserId);

                if (user != null)
                {
                    var crmUserEntity = new Contact()
                    {
                        ContactId   = "0",
                        MobilePhone = user.PhoneNumber,
                        FullName    = user.Name,
                        Email       = user.Email
                    };
                    try
                    {
                        var crmUser = new ContactManager().RegisterContactInPortal(crmUserEntity);
                        var result  = await _userManager.ChangePhoneNumberAsync(model.UserId, model.PhoneNumber, model.Code);

                        if (result.Succeeded)
                        {
                            user.CrmUserId = crmUser.ContactId;
                            await _userManager.UpdateAsync(user);
                        }
                        var request         = HttpContext.Current.Request;
                        var tokenServiceUrl = request.Url.GetLeftPart(UriPartial.Authority) + request.ApplicationPath + "/Token";
                        using (var client = new HttpClient())
                        {
                            var requestParams = new List <KeyValuePair <string, string> >
                            {
                                new KeyValuePair <string, string>("grant_type", "password"),
                                new KeyValuePair <string, string>("username", user.UserName),
                                new KeyValuePair <string, string>("password", model.Password)
                            };
                            var requestParamsFormUrlEncoded = new FormUrlEncodedContent(requestParams);
                            var tokenServiceResponse        = await client.PostAsync(tokenServiceUrl, requestParamsFormUrlEncoded);

                            var responseString = await tokenServiceResponse.Content.ReadAsStringAsync();

                            var responseCode = tokenServiceResponse.StatusCode;
                            var responseMsg  = new HttpResponseMessage(responseCode)
                            {
                                Content = new StringContent(responseString, Encoding.UTF8, "application/json")
                            };
                            return(new ReturnData()
                            {
                                State = true,
                                Data = new { code = responseString, user = user }
                            });
                        }
                    }
                    catch (Exception)
                    {
                        return(new ReturnData()
                        {
                            State = false,
                            Data = "Failed to save in CRM"
                        });
                    }
                }
            }

            return(new ReturnData()
            {
                State = false,
                Data = "Invalid code"
            });
        }