public IncomeService(IIncomeRepository incomeRepository, IBankAccountRepository bankAccountRepository,
                      IHistoricMovementRepository historicMovementRepository)
 {
     this._incomeRepository           = incomeRepository;
     this._bankAccountRepository      = bankAccountRepository;
     this._historicMovementRepository = historicMovementRepository;
 }
Example #2
0
 public AtmWithdrawService(IAtmWithdrawRepository atmWithdrawRepository, IBankAccountRepository bankAccountRepository, IExpenseRepository expenditureRepository,
                           IHistoricMovementRepository historicMovementRepository)
 {
     this._atmWithdrawRepository      = atmWithdrawRepository;
     this._bankAccountRepository      = bankAccountRepository;
     this._expenditureRepository      = expenditureRepository;
     this._historicMovementRepository = historicMovementRepository;
 }
        protected MovementStrategy(Movement movement, IBankAccountRepository bankAccountRepository, IHistoricMovementRepository historicMovementRepository, IIncomeRepository incomeRepository, IAtmWithdrawRepository atmWithdrawRepository)
        {
            CurrentMovement = movement;

            this.BankAccountRepository      = bankAccountRepository;
            this.HistoricMovementRepository = historicMovementRepository;
            this.IncomeRepository           = incomeRepository;
            this.AtmWithdrawRepository      = atmWithdrawRepository;
        }
 public SavingService(ISavingRepository savingRepository, IBankAccountRepository bankAccountRepository, IHistoricMovementRepository historicMovementRepository,
                      IIncomeRepository incomeRepository, IAtmWithdrawRepository atmWithdrawRepository)
 {
     this._savingRepository           = savingRepository;
     this._bankAccountRepository      = bankAccountRepository;
     this._historicMovementRepository = historicMovementRepository;
     this._incomeRepository           = incomeRepository;
     this._atmWithdrawRepository      = atmWithdrawRepository;
 }
Example #5
0
        public static void Debit(IHistoricMovementRepository historicMovementRepository, decimal movementAmount, int sourceId, ObjectType sourceObjectType, decimal sourceAmount)
        {
            var historicMovement = new HistoricMovement
            {
                Date            = DateTime.Now,
                Cost            = -movementAmount,
                SourceId        = sourceId,
                SourceType      = sourceObjectType,
                SourceOldAmount = sourceAmount,
                SourceNewAmount = sourceAmount - movementAmount
            };

            historicMovementRepository.Create(historicMovement);
        }
Example #6
0
        public static void Credit(IHistoricMovementRepository historicMovementRepository, decimal movementAmount, int sourceId, ObjectType sourceObjectType, decimal sourceAmount, int destinationId, ObjectType destinationObjectType, decimal destinationAmount)
        {
            var historicMovement = new HistoricMovement
            {
                Date                 = DateTime.Now,
                Cost                 = movementAmount,
                SourceId             = sourceId,
                SourceType           = sourceObjectType,
                SourceOldAmount      = sourceAmount,
                SourceNewAmount      = sourceAmount + movementAmount,
                DestinationId        = destinationId,
                DestinationType      = destinationObjectType,
                DestinationOldAmount = destinationAmount,
                DestinationNewAmount = destinationAmount - movementAmount
            };

            historicMovementRepository.Create(historicMovement);
        }
Example #7
0
 public CashMovementStrategy(Movement movement, IBankAccountRepository bankAccountRepository, IHistoricMovementRepository historicMovementRepository, IIncomeRepository incomeRepository, IAtmWithdrawRepository atmWithdrawRepository)
     : base(movement, bankAccountRepository, historicMovementRepository, incomeRepository, atmWithdrawRepository)
 {
 }
        public static MovementStrategy GetMovementStrategy(Movement movement, IBankAccountRepository bankAccountRepository, IHistoricMovementRepository historicMovementRepository, IIncomeRepository incomeRepository, IAtmWithdrawRepository atmWithdrawRepository)
        {
            MovementStrategy strategy = null;

            switch (movement.PaymentMethod)
            {
            case PaymentMethod.Cash:
                strategy = new CashMovementStrategy(movement, bankAccountRepository, historicMovementRepository, incomeRepository, atmWithdrawRepository);
                break;

            case PaymentMethod.InternalTransfer:
                strategy = new InternalTransferMovementStrategy(movement, bankAccountRepository, historicMovementRepository, incomeRepository, atmWithdrawRepository);
                break;

            case PaymentMethod.CB:
            case PaymentMethod.DirectDebit:
            case PaymentMethod.Transfer:
                strategy = new CommonMovementStrategy(movement, bankAccountRepository, historicMovementRepository, incomeRepository, atmWithdrawRepository);
                break;

            default:
                throw new ArgumentException("Unknown PaymentMethod");
            }

            return(strategy);
        }