public async Task <IActionResult> EditUserInformation(ProfileEditUserViewModel model) { if (ModelState.IsValid) { var authorizationResult = await _authorizationService.AuthorizeAsync(User, model.User, CRUD.Update); if (authorizationResult.Succeeded) { ApplicationUser user = await _userManager.FindByIdAsync(model.User.Id); user.FirstName = model.User.FirstName; user.LastName = model.User.LastName; user.UpdatedAt = DateTime.Now; await _userManager.UpdateAsync(user); return(RedirectToAction("UserInformation", "Profile")); } else if (User.Identity.IsAuthenticated) { return(new ForbidResult()); } else { return(new ChallengeResult()); } } return(RedirectToAction("UserInformation", new { ProfileEditUserViewModel = model })); }
public async Task <IActionResult> UserInformation() { string userId = _userManager.GetUserId(HttpContext.User); ApplicationUser user = await _userManager.FindByIdAsync(userId); Address address = _appDbContext.Addresses.Find(user.Id); PaymentMethod payment = _appDbContext.PaymentMethods.Find(user.Id); ProfileEditUserViewModel model = new ProfileEditUserViewModel { User = user, Address = user.Address, PaymentMethod = user.PaymentMethod }; var authorizationResult = await _authorizationService.AuthorizeAsync(User, model.User, CRUD.Read); if (authorizationResult.Succeeded) { return(View(model)); } else if (User.Identity.IsAuthenticated) { return(new ForbidResult()); } else { return(new ChallengeResult()); } }
public async Task <IActionResult> EditOrCreatePaymentMethod(ProfileEditUserViewModel model) { if (ModelState.IsValid) { ApplicationUser user = await _userManager.FindByIdAsync(model.User.Id); PaymentMethod paymentMethod = _appDbContext.PaymentMethods.Find(model.User.Id); if (paymentMethod != null) { paymentMethod.Type = model.User.PaymentMethod.Type; paymentMethod.HolderName = model.User.PaymentMethod.HolderName; paymentMethod.CardNumber = model.User.PaymentMethod.CardNumber; paymentMethod.CVCCode = model.User.PaymentMethod.CVCCode; paymentMethod.ExpiresAt = model.User.PaymentMethod.ExpiresAt; var authResult = await _authorizationService.AuthorizeAsync(User, user.PaymentMethod, CRUD.Update); if (authResult.Succeeded) { var tmp_paymentMethod = _appDbContext.PaymentMethods.Attach(paymentMethod); tmp_paymentMethod.State = EntityState.Modified; await _appDbContext.SaveChangesAsync(); _logger.LogInformation($"EditOrCreateUserAddress, Payment: {tmp_paymentMethod.ToString()} Updated"); } else if (User.Identity.IsAuthenticated) { return(new ForbidResult()); } else { return(new ChallengeResult()); } } else { PaymentMethod new_paymentMethod = new PaymentMethod { Id = model.User.Id, Type = model.User.PaymentMethod.Type, HolderName = model.User.PaymentMethod.HolderName, CardNumber = model.User.PaymentMethod.CardNumber, CVCCode = model.User.PaymentMethod.CVCCode, ExpiresAt = model.User.PaymentMethod.ExpiresAt }; var authResult = await _authorizationService.AuthorizeAsync(User, new_paymentMethod, CRUD.Create); if (authResult.Succeeded) { _appDbContext.PaymentMethods.Add(new_paymentMethod); await _appDbContext.SaveChangesAsync(); _logger.LogInformation($"EditOrCreateUserAddress, Payment: {new_paymentMethod.ToString()} Created"); } else if (User.Identity.IsAuthenticated) { return(new ForbidResult()); } else { return(new ChallengeResult()); } } return(RedirectToAction("UserInformation", "Profile")); } return(RedirectToAction("UserInformation", new { ProfileEditUserViewModel = model })); }
public async Task <IActionResult> EditOrCreateUserAddress(ProfileEditUserViewModel model) { if (ModelState.IsValid) { ApplicationUser user = await _userManager.FindByIdAsync(model.User.Id); Address address = _appDbContext.Addresses.Find(model.User.Id); if (address != null) { address.District = model.User.Address.District; address.Street = model.User.Address.Street; address.City = model.User.Address.City; address.ZipCode = model.User.Address.ZipCode; address.POBox = model.User.Address.POBox; var authResult = await _authorizationService.AuthorizeAsync(User, user.Address, CRUD.Update); if (authResult.Succeeded) { var tmp_address = _appDbContext.Addresses.Attach(address); tmp_address.State = EntityState.Modified; await _appDbContext.SaveChangesAsync(); _logger.LogInformation($"EditOrCreateUserAddress, Address: {tmp_address.ToString()} Updated"); } else if (User.Identity.IsAuthenticated) { return(new ForbidResult()); } else { return(new ChallengeResult()); } } else { Address new_address = new Address { Id = model.User.Id, District = model.User.Address.District, Street = model.User.Address.Street, City = model.User.Address.City, ZipCode = model.User.Address.ZipCode, POBox = model.User.Address.POBox }; var authResult = await _authorizationService.AuthorizeAsync(User, new_address, CRUD.Create); if (authResult.Succeeded) { _appDbContext.Addresses.Add(new_address); await _appDbContext.SaveChangesAsync(); _logger.LogInformation($"EditOrCreateUserAddress, Address: {new_address.ToString()} Cretaed"); } else if (User.Identity.IsAuthenticated) { return(new ForbidResult()); } else { return(new ChallengeResult()); } } return(RedirectToAction("UserInformation", "Profile")); } return(RedirectToAction("UserInformation", new { ProfileEditUserViewModel = model })); }