Example #1
0
        public async Task WithdrawBalance()
        {
            BonusCardBalanceMovementApiModel bonusCardBalanceMovement = new BonusCardBalanceMovementApiModel();

            bonusCardBalanceMovement.CardNumber      = CardNumber;
            bonusCardBalanceMovement.NewBalance      = Convert.ToDecimal(AmountWithdraw);
            bonusCardBalanceMovement.WithdrawBalance = true;

            try
            {
                FullInfoBonusCard = await _apiHelper.CardBalanceMovement(bonusCardBalanceMovement);
                await LoadProducts();
            }
            catch (Exception)
            {
                //  ErrorMessage = ex.Message;
            }
        }
Example #2
0
        public async Task <FullInfoBonusCardModel> CardBalanceMovement(BonusCardBalanceMovementApiModel newBalance)
        {
            using (HttpResponseMessage response = await apiClient.PutAsJsonAsync(ApiRoutes.UpdateCardBalance, newBalance).ConfigureAwait(false))
            {
                var result = await response.Content.ReadAsAsync <FullInfoBonusCard>();

                if (response.IsSuccessStatusCode && result.ErrorMessage == null)
                {
                    _fullInfoBonusCardModel.CardNumber     = result.CardNumber;
                    _fullInfoBonusCardModel.Balance        = result.Balance;
                    _fullInfoBonusCardModel.ExpirationDate = result.ExpirationDate;
                    _fullInfoBonusCardModel.FirstName      = result.FirstName;
                    _fullInfoBonusCardModel.LastName       = result.LastName;
                    _fullInfoBonusCardModel.PhoneNumber    = result.PhoneNumber;
                    return(_fullInfoBonusCardModel);
                }
                else
                {
                    throw new Exception(response.ReasonPhrase);
                }
            }
        }
        public async Task <FullInfoBonusCard> CardBalanceMovement([FromBody] BonusCardBalanceMovementApiModel newBalance)
        {
            // Make sure we have a number
            if (newBalance?.NewBalance == null)
            {
                return new FullInfoBonusCard()
                       {
                           ErrorMessage = "Nothing to change"
                       }
            }
            ;

            var errors = new List <string>();


            // Get the current bonus card
            var bonusCard = Context.Clients.Include(p => p.BonusCard).FirstOrDefault(p => p.BonusCard.CardNumber.Equals(newBalance.CardNumber));

            // If we have no card
            if (bonusCard == null)
            {
                return new FullInfoBonusCard()
                       {
                           ErrorMessage = "Card not found"
                       }
            }
            ;


            if (!newBalance.WithdrawBalance)
            {
                //add to balance
                bonusCard.BonusCard.Balance += newBalance.NewBalance;

                bonusCard.BonusCard.ExpirationDate = bonusCard.BonusCard.ExpirationDate.AddMonths(6);
            }
            else
            {
                if (bonusCard.BonusCard.Balance == null || bonusCard.BonusCard.Balance == 0)
                {
                    return new FullInfoBonusCard()
                           {
                               ErrorMessage = "Bonus Card has no balance"
                           }
                }
                ;
                if (bonusCard.BonusCard.Balance < newBalance.NewBalance)
                {
                    return new FullInfoBonusCard()
                           {
                               ErrorMessage = "Bonus Card don't have enought cash for withdraw"
                           }
                }
                ;

                //withwraw from balance
                bonusCard.BonusCard.Balance -= newBalance.NewBalance;
            }

            await Context.SaveChangesAsync();

            return(new FullInfoBonusCard()
            {
                FirstName = bonusCard.FirstName,
                LastName = bonusCard.LastName,
                CardNumber = bonusCard.BonusCard.CardNumber,
                Balance = bonusCard.BonusCard.Balance,
                ExpirationDate = bonusCard.BonusCard.ExpirationDate
            });
        }
    }
}