public async Task <IHttpActionResult> MyInfo()
        {
            AccountRegistrationRequest ar = new AccountRegistrationRequest();

            if (IsUserAuthenticated)
            {
                ApplicationDbContext context = ApplicationDbContext.Create();

                UserStore <ApplicationUser> userStore = new UserStore <ApplicationUser>(context);

                ApplicationUserManager userManager = new ApplicationUserManager(userStore);


                var usr = await userManager.FindByIdAsync(this.UserId);

                if (usr != null)
                {
                    ar.AddressLine1 = usr.Address;
                    ar.DateOfBirth  = usr.DateOfBirth;
                    ar.EmailAddress = usr.Email;
                    ar.FirstName    = usr.FirstName;
                    ar.LastName     = usr.LastName;
                    ar.Gender       = usr.Gender.ToString();
                    ar.MobileNumber = usr.PhoneNumber;
                }
            }


            return(Ok(ar));
        }
        private async Task <AccountRegistrationRequest> GenerateRadomAccount()
        {
            AccountRegistrationRequest accountRegistrationRequest = new AccountRegistrationRequest();

            accountRegistrationRequest.Password = await GenerateRadomPassword();

            accountRegistrationRequest.ConfirmPassword = accountRegistrationRequest.Password;

            HttpClient ApiControllers = new HttpClient();

            var json = await ApiControllers.GetStringAsync("https://randomuser.me/api/?nat=gb");

            var t = JsonConvert.DeserializeObject <RandomUserMeResponse>(json);

            accountRegistrationRequest.DateOfBirth  = (new DateTime(1970, 1, 1).AddSeconds(t.results[0].dob));
            accountRegistrationRequest.Gender       = t.results[0].gender;
            accountRegistrationRequest.FirstName    = t.results[0].name.first;
            accountRegistrationRequest.LastName     = t.results[0].name.last;
            accountRegistrationRequest.EmailAddress = t.results[0].email;
            accountRegistrationRequest.MobileNumber = t.results[0].cell.Replace("-", "");

            //Latitude,Longitude,Number,Road,Locality,Post town,Admin area level 3,Admin area level 2,Admin area level 1,Postcode,Country

            string[] d;

            do
            {
                d = RA();

                accountRegistrationRequest.AddressLine1 = d[2] + " " + d[3];
                accountRegistrationRequest.AddressLine2 = d[4];
                accountRegistrationRequest.TownCity     = d[5];
                accountRegistrationRequest.Postcode     = d[9];
                accountRegistrationRequest.Country      = d[10];
            } while (d == null || string.IsNullOrWhiteSpace(d[2]));

            return(accountRegistrationRequest);
        }
 public async Task <IHttpActionResult> Register(AccountRegistrationRequest accountRegistrationRequest)
 {
     return(await Register2(accountRegistrationRequest, DateTime.Now));
 }
        private async Task <IHttpActionResult> Register2(AccountRegistrationRequest accountRegistrationRequest, DateTime?registrationDate, bool dummy = false)
        {
            if (accountRegistrationRequest != null)
            {
                if (ModelState.IsValid || IsUserAuthenticated)
                {
                    ApplicationDbContext context = ApplicationDbContext.Create();

                    UserStore <ApplicationUser> userStore = new UserStore <ApplicationUser>(context);

                    ApplicationUserManager userManager = new ApplicationUserManager(userStore);

                    string password = accountRegistrationRequest.Password;

                    string[] addressParts =
                    {
                        accountRegistrationRequest.AddressLine1,
                        accountRegistrationRequest.AddressLine2,
                        accountRegistrationRequest.TownCity
                    };

                    string address = string.Join(",\r\n",
                                                 addressParts.Where(part => !string.IsNullOrWhiteSpace(part)));

                    ApplicationUser newApplicationUser = new ApplicationUser();


                    if (IsUserAuthenticated)
                    {
                        newApplicationUser = await userStore.FindByIdAsync(this.UserId);
                    }


                    if (accountRegistrationRequest.FirstName != null)
                    {
                        newApplicationUser.FirstName = accountRegistrationRequest.FirstName;
                    }
                    if (accountRegistrationRequest.LastName != null)
                    {
                        newApplicationUser.LastName = accountRegistrationRequest.LastName;
                    }

                    newApplicationUser.Address = address;

                    if (accountRegistrationRequest.Postcode != null)
                    {
                        newApplicationUser.Postcode = accountRegistrationRequest.Postcode;
                    }

                    if (accountRegistrationRequest.EmailAddress != null)
                    {
                        newApplicationUser.Email = accountRegistrationRequest.EmailAddress;
                    }

                    if (!IsUserAuthenticated)
                    {
                        if (accountRegistrationRequest.EmailAddress != null)
                        {
                            newApplicationUser.UserName = accountRegistrationRequest.EmailAddress;
                        }
                    }

                    if (accountRegistrationRequest.DateOfBirth != default(DateTime))
                    {
                        newApplicationUser.DateOfBirth = accountRegistrationRequest.DateOfBirth;
                    }



                    if (accountRegistrationRequest.Gender != null)
                    {
                        if (accountRegistrationRequest.Gender.Contains("female"))
                        {
                            newApplicationUser.Gender = Gender.Female;
                        }
                    }


                    if (registrationDate != null)
                    {
                        newApplicationUser.RegistrationDate = registrationDate.Value;
                    }
                    else
                    {
                        newApplicationUser.RegistrationDate = DateTime.Now;
                    }

                    if (accountRegistrationRequest.MobileNumber != null)
                    {
                        newApplicationUser.PhoneNumber = accountRegistrationRequest.MobileNumber;
                    }

                    if (accountRegistrationRequest.Postcode != null)
                    {
                        newApplicationUser.Location = PostcodesService.Lookup(newApplicationUser.Postcode);
                    }


                    if (IsUserAuthenticated)
                    {
                        var result2 = await userManager.UpdateAsync(newApplicationUser);

                        if (result2.Succeeded)
                        {
                            return(Ok());
                        }

                        return(BadRequest(string.Join(", ", result2.Errors)));
                    }


                    var result = await userManager.CreateAsync(newApplicationUser, password);

                    if (result.Succeeded)
                    {
                        return(Ok());
                    }

                    return(BadRequest(string.Join(", ", result.Errors)));
                }

                string validationErrors = string.Join(",",
                                                      ModelState.Values.Where(E => E.Errors.Count > 0)
                                                      .SelectMany(E => E.Errors)
                                                      .Select(E => E.ErrorMessage)
                                                      .ToArray());

                return(BadRequest(validationErrors));
            }

            return(BadRequest("registration data is null."));
        }