Exemplo n.º 1
0
        public async Task AddCreditCard(CreditAccountServiceModel model)
        {
            var exceptionMessage = "";

            try
            {
                var account = Mapper.Map <CreditAccount>(model);

                var chechIfAccountExists = this.context.CreditAccounts
                                           .Any(x => x.CardNumber == model.CardNumber);

                var checkIfUserExists = this.context.CreditAccounts
                                        .Any(a => a.AccountOwnerId == model.AccountOwnerId);

                if (chechIfAccountExists == true || checkIfUserExists == true)
                {
                    return;
                }

                //get auth number then pass to model
                account.AuthNumber = await this.CalcAuthNumber(model.CardNumber);

                //hash credit card number then pass to model
                account.CardNumber = await this.HashCreditCardNumber(model.CardNumber);

                await this.context.CreditAccounts.AddAsync(account);

                await this.context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                exceptionMessage = ex.Message;
                throw new AddCreditCardException();
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> AddCreditCard(AddCreditCardViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View());
            }

            CreditAccountServiceModel creditCard = new CreditAccountServiceModel()
            {
                CardNumber     = model.CardNumber,
                Cash           = model.Cash,
                Points         = GlobalConstants.firstBonusPointsWhenRegisterAccount,
                AccountOwnerId = this.userManager.GetUserId(this.User)
            };

            //transfer account
            await this.accountService.AddCreditCard(creditCard);

            //get info for user
            var currentUser   = this.userManager.GetUserName(this.User);
            var currentUserId = this.userManager.GetUserId(this.User);

            //var user = this.usersService.GetUser(currentUser).Result;

            //transfer credit account id to user
            await this.usersService.GetAccountIdAndSetToUser(currentUser, currentUserId);

            return(this.RedirectToAction("Profile", "Users"));
        }
Exemplo n.º 3
0
        public async Task AddCreditCard_WithWrongParameters_ExpectFalse()
        {
            var optionsBuilder = new DbContextOptionsBuilder <FabricaDBContext>()
                                 .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context = new FabricaDBContext(optionsBuilder.Options);
            var creditAccountService = new CreditAccountsService(context);

            var owner = new FabricaUser()
            {
                Id                 = "400",
                UserName           = null,
                NormalizedUserName = null,
                Email              = null,
                NormalizedEmail    = null,
                PasswordHash       = null,
                SecurityStamp      = null,
                LockoutEnabled     = true,
                FullName           = null,
                Gender             = GenderType.Male,
                IsDeleted          = false,
            };
            await context.Users.AddAsync(owner);

            var ownerCA = new CreditAccount()
            {
                AccountId      = "2000",
                AccountOwnerId = owner.Id,
                AccountOwner   = owner,
                CardNumber     = null,
                AuthNumber     = null,
                Points         = 0,
                Cash           = 0,
            };
            await context.CreditAccounts.AddAsync(ownerCA);

            await context.SaveChangesAsync();

            var creditAccountServiceModel = new CreditAccountServiceModel()
            {
                AccountId      = "2000",
                AccountOwnerId = owner.Id,
                AccountOwner   = owner,
                CardNumber     = null,
                AuthNumber     = null,
                Points         = 0,
                Cash           = 0,
            };

            var a = creditAccountService.AddCreditCard(creditAccountServiceModel).IsCanceled;

            var expected      = false;
            var creditAccount = context.CreditAccounts.FirstOrDefaultAsync(x => x.AccountId == "2000").Result;
            var isExists      = creditAccount.CardNumber != null;

            Assert.True(a == expected);
        }
Exemplo n.º 4
0
        public async Task AddCreditCard_SearchingForThisAccountInDatabase_ExpectTrue()
        {
            var optionsBuilder = new DbContextOptionsBuilder <FabricaDBContext>()
                                 .UseInMemoryDatabase(Guid.NewGuid().ToString());
            var context = new FabricaDBContext(optionsBuilder.Options);
            var creditAccountService = new CreditAccountsService(context);

            var owner = new FabricaUser()
            {
                UserName           = "******",
                NormalizedUserName = "******".ToUpper(),
                Email           = "*****@*****.**",
                NormalizedEmail = "*****@*****.**".ToUpper(),
                PasswordHash    = "123",
                SecurityStamp   = Guid.NewGuid().ToString(),
                LockoutEnabled  = true,
                FullName        = "Owner owner",
                Gender          = GenderType.Male,
                IsDeleted       = false,
            };
            await context.Users.AddAsync(owner);

            var ownerCA = new CreditAccount()
            {
                AccountId      = "2000",
                AccountOwnerId = owner.Id,
                AccountOwner   = owner,
                CardNumber     = "2334-3344-3345-2333",
                AuthNumber     = "2333",
                Points         = 2000,
                Cash           = 350,
            };
            await context.CreditAccounts.AddAsync(ownerCA);

            await context.SaveChangesAsync();

            var creditAccountServiceModel = new CreditAccountServiceModel()
            {
                AccountId      = "2000",
                AccountOwnerId = owner.Id,
                AccountOwner   = owner,
                CardNumber     = "2334-3344-3345-2333",
                AuthNumber     = "2333",
                Points         = 2000,
                Cash           = 350,
            };

            var expected = creditAccountServiceModel.AccountId;
            var a        = context.CreditAccounts.FirstOrDefaultAsync(x => x.AccountId == expected);

            Assert.Contains(expected, a.Result.AccountId);
        }
Exemplo n.º 5
0
        public async Task <IActionResult> LoadCash(LoadCashViewModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.View());
            }

            CreditAccountServiceModel creditCard = new CreditAccountServiceModel()
            {
                Cash = model.Cash,
            };

            var currentUserId = this.userManager.GetUserId(this.User);
            var cashToLoad    = creditCard.Cash;

            await accountService.LoadCash(currentUserId, cashToLoad);

            return(this.RedirectToAction("Profile", "Users"));
        }