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); }
public Account WithdrawalBalance(long accountId, Transaction transaction) { transactionRepository.AddTransactionWithdrawal(accountId, transaction); return(GetAccount(accountId)); }