Exemplo n.º 1
0
        public ResultHistory CheckInclusiveServiceAndLogEntry(long subscriptionId, string serviceName)
        {
            serviceName = serviceName.ToUpper();
            var subscription = subscriptionService.GetSubscription(subscriptionId);

            if (!IsAlowedAcccess(subscription) && !subscription.Services.Exists(service => service.Name.Equals(serviceName)))
            {
                return(CheckBalanceExpirationDateAndLogEntry(subscription.Id));
            }

            var         result           = new ResultHistory();
            Transaction transaction      = new Transaction();
            var         services         = serviceRepository.GetServices();
            bool        IsContainService = subscription.Services.Exists(service => service.Name.Equals(serviceName));

            if (!IsContainService)
            {
                transaction.Description = serviceName;
                transaction.Amount      = services.First(service => service.Name.Equals(serviceName)).Price;
                transactionRepository.AddTransactionWithdrawal(subscription.Account.Id, transaction);
                subscription        = subscriptionService.GetSubscription(subscription.Id);
                result.Access       = Access.OK;
                result.Message      = $"Withdrawal {transaction.Description}";
                result.Subscription = subscription;
                result.Service_Id   = services.First(service => service.Name.Equals(serviceName)).Id;
            }
            else
            {
                result.Access       = Access.OK;
                result.Message      = "Inclusive in subscription";
                result.Subscription = subscription;
                result.Service_Id   = services.First(service => service.Name.Equals(serviceName)).Id;
            }
            checkRepository.AddResult(result);

            return(result);
        }
Exemplo n.º 2
0
 public Account WithdrawalBalance(long accountId, Transaction transaction)
 {
     transactionRepository.AddTransactionWithdrawal(accountId, transaction);
     return(GetAccount(accountId));
 }