Exemplo n.º 1
0
        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 }));
        }
Exemplo n.º 2
0
        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());
            }
        }
Exemplo n.º 3
0
        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 }));
        }
Exemplo n.º 4
0
        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 }));
        }