private static void CopyToApplicationUser(this UserProfileViewModel model, AppUser user) { var dateArr = model.BirthDateToUpdate.Split('-'); var birthDate = new DateTime(Int32.Parse(dateArr[2]), Int32.Parse(dateArr[0]), Int32.Parse(dateArr[1])); if (DefaultPictureNameHelper.IsPictureDefault(model.ImgUrl)) { user.ProfileImage = DefaultPictureNameHelper.GetDefaultPictureName(model.Gender); } user.FirstName = model.FirstName; user.LastName = model.LastName; user.BirthDate = birthDate; user.Gender = model.Gender; user.ProfileImage = model.ImgUrl; }
public async Task <AccountDto> RegisterAsync(RegisterUserViewModel model, IUrlHelper url) { var profileImage = DefaultPictureNameHelper.GetDefaultPictureName(model.Gender); var newUser = new AppUser { UserName = model.Email, Email = model.Email, FirstName = model.Firstname, LastName = model.LastName, BirthDate = new DateTime(model.Year, model.Day, int.Parse(model.Month)), Gender = model.Gender, RegistrationDate = DateTime.Now, ProfileImage = profileImage, TransactionPercent = 3, ShopsAllowed = 10, UsingTariff = false }; var creationResult = await _userManager.CreateAsync(newUser, model.Password); if (creationResult.Succeeded) { await _userManager.AddToRoleAsync(newUser, DefaultIdentity.RoleUser); var userForLog = await _userManager.FindByEmailAsync(newUser.Email); _logger.LogInformation("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}", userForLog.UserName, userForLog.Id, _httpContextAccessor.HttpContext.Request.GetRawTarget(), "Successfully registered in system."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(newUser); var callbackUrl = url.Action( "ConfirmEmail", "Account", new { userId = newUser.Id, token = code }, protocol: _httpContextAccessor.HttpContext.Request.Scheme); var sendEmailConfirmationResponse = await SendMailAsync(newUser, "Email confirmation", "EmailConfirmationLink", "txt", "Interpolation", "callbackUrl", callbackUrl); if (sendEmailConfirmationResponse) { await _signInManager.SignInAsync(newUser, false); return(new AccountDto { RedirectToAction = RedirectToAction("EmailConfirmation", "UserProfile") }); } await _userManager.DeleteAsync(newUser); return(new AccountDto { ReturnToView = View("SomethingWentWrong", "link sending") }); } _logger.LogWarning("UserName: {0} | UserId: {1} | Request: {2} | Message: {3}", "Null", "Null", _httpContextAccessor.HttpContext.Request.GetRawTarget(), string.Join("", creationResult.Errors.Select(x => "\n" + x.Description))); foreach (var error in creationResult.Errors) { ModelState.AddModelError("", error.Description); } return(new AccountDto { ReturnToView = View(model) }); }