Beispiel #1
0
 public static List <PESelectableExpenseItem> CreateListFrom(ICalculationDataProvider dataProvider)
 {
     return(dataProvider.GetMonthlyCashStatementCategories()
            .OrderBy(x => x.Name)
            .Convert(expenseItem => new PESelectableExpenseItem(expenseItem))
            .ToList());
 }
Beispiel #2
0
 public AddTransferUseCaseBase(ICalculationDataProvider dataProvider, string caption, IEditTransferView view, int defaultAmount, Action <PETransfer> doAddTransfer)
 {
     this.dataProvider  = dataProvider;
     this.caption       = caption;
     this.view          = view;
     this.defaultAmount = defaultAmount;
     this.doAddTransfer = doAddTransfer;
 }
        public CalculationDataPreprocessor(ICalculationDataProvider dataProvider)
        {
            EnvelopeSize      = dataProvider.EnvelopeSize;
            CalculationPeriod = dataProvider.CalculationPeriod;

            CashMovements                 = new DatedSet <CashStatement>(dataProvider.GetCashMovements());
            Remainders                    = new DatedSet <CashStatement>(dataProvider.GetRemainders());
            MonthlyCashMovements          = new DatedSet <MonthlyCashStatement>(ConvertToExpenses(dataProvider));
            MonthlyCashMovementCategories = new List <MonthlyCashStatementCategory>(dataProvider.GetMonthlyCashStatementCategories());
        }
Beispiel #4
0
        public void MakeUseCaseRunnable()
        {
            view         = new ModelViewFake <EditPlanningSettingsViewModel>();
            dataProvider = new CalculationDataProvider(new PersistentStorageFake());

            showCalculationUseCaseMock = new Mock <IShowCalculationUseCase>();

            ObjectFactory.Initialize(x => {
                x.For <IShowCalculationUseCase>().Use(showCalculationUseCaseMock.Object);
            });
        }
        private List <MonthlyCashStatement> ConvertToExpenses(ICalculationDataProvider dataProvider)
        {
            var result = new List <MonthlyCashStatement>();

            for (var month = CalculationPeriod.From.MonthFirstDay(); month <= CalculationPeriod.To.MonthFirstDay(); month = month.NextMonth())
            {
                foreach (var expense in dataProvider.GetMonthlyCashStatementCategories())
                {
                    AddExpense(result, month, expense, dataProvider.GetMonthlyCashMovements());
                }
            }

            result.AddRange(dataProvider.GetMonthlyCashMovements());

            return(result);
        }
        public CalculationPointPersistanceHolder CalculateFor(Employee employee, Period period, Calculation calculation, ICalculationDataProvider calculationDataProvider, CalculatorSession calculationSession)
        {
            if (!hasBeenSetup)
            {
                throw new PolicyEngineHasNotBeenSetupException();
            }
            if (!preCalculationDone)
            {
                var lst = ruleClasses.Where(x => x.Value.RuleType == RuleType.PreCalculation);
                foreach (var item in lst)
                {
                    ruleEngine.ExecuteRule(item.Key);
                }
                preCalculationDone = true;
            }

            ruleEngine.Clear();
            PMSReport.Domain.Model.CalculationData employeeData;
            var calculationData = calculationDataProvider.Provide(employee, out employeeData, calculation, true, calculationSession);
            var rules           = ruleClasses.Where(x => x.Value.RuleType == RuleType.PerCalculation);

            foreach (var item in rules)
            {
                ruleEngine.ExecuteRule(item.Key, calculationData);
            }

            var res = ruleEngine.GetResult <PMS.RuleContracts.RuleResult>();

            rules = ruleClasses.Where(x => x.Value.RuleType == RuleType.PostCalculation);
            foreach (var item in rules)
            {
                ruleEngine.ExecuteRule(item.Key);
            }

            return(calculationDataProvider.Convert(res, employeeData, employee, period, calculation));
        }
 public AddMonthlyExpenseUseCase(ICalculationDataProvider dataProvider, IEditMonthlyExpenseView view)
 {
     this.dataProvider = dataProvider;
     this.view         = view;
 }
Beispiel #8
0
 public SetRemainderUseCase(ICalculationDataProvider dataProvider, IEditTransferView view)
     : base(dataProvider, "Задать остаток", view, dataProvider.WalletRemainders.OveralAmount(), transfer => dataProvider.SetRemainder(transfer.Date, transfer.Amount))
 {
 }
 public EditMonthlyExpenseUseCase(ICalculationDataProvider dataProvider, IDataSavingService savingService, IEditMonthlyExpenseView view)
 {
     this.dataProvider  = dataProvider;
     this.savingService = savingService;
     this.view          = view;
 }
Beispiel #10
0
        public virtual CalculationPointPersistanceHolder CalculateFor(DateTime startDate, Employee employee, Period period, Calculation calculation, ICalculationDataProvider calculationDataProvider, IEventPublisher publisher, CalculatorSession calculationSession)
        {
            if (!PolicyEngine.HasBeenSetup)
            {
                PolicyEngine.SetupForCalculation(this, publisher);
            }
            var res = PolicyEngine.CalculateFor(employee, period, calculation, calculationDataProvider, calculationSession);

            return(res);
        }
Beispiel #11
0
 public AddTransferUseCaseBase(ICalculationDataProvider dataProvider, string caption, IEditTransferView view, Action <PETransfer> doAddTransfer)
     : this(dataProvider, caption, view, 0, doAddTransfer)
 {
 }
 public CalculationService(ICalculatorProcessor calculatorProcessor, ICalculationDataProvider calculationDataProvider)
 {
     this.calculatorProcessor     = calculatorProcessor;
     this.calculationDataProvider = calculationDataProvider;
 }
 public void SetUp()
 {
     dataProvider = new CalculationDataProvider(new PersistentStorageFake());
 }
 public AddInvestmentUseCase(ICalculationDataProvider dataProvider, IEditTransferView view)
     : base(dataProvider, "Добавить доход", view, transfer => dataProvider.AddCashMovement(transfer.Date, transfer.Amount, transfer.Description))
 {
 }
Beispiel #15
0
 public BudgetService(ICalculationDataProvider dataProvider)
 {
     this.dataProvider = dataProvider;
 }
Beispiel #16
0
 public EditPlanningSettingsUseCase(IModelView <EditPlanningSettingsViewModel> view, ICalculationDataProvider dataProvider)
 {
     this.view         = view;
     this.dataProvider = dataProvider;
 }
Beispiel #17
0
 public static void AddExpenseItem(this ICalculationDataProvider dataProvider, int dayOfMonth, int amount, string name)
 {
     dataProvider.AddMonthlyCashStatementCategory(dayOfMonth, amount, name, DateTimeService.CurrentMonthFirstDay, DateTimeService.MaxValue);
 }
Beispiel #18
0
        public EditPlanningSettingsViewModel(ICalculationDataProvider dataProvider)
        {
            this.dataProvider = dataProvider;

            DateOfTicketsPurchase = DateTime.Today;
        }
 public AddExpenseItemUseCase(ICalculationDataProvider dataProvider, IEditExpenseItemView view)
 {
     this.dataProvider = dataProvider;
     this.view         = view;
 }
 public AddExpenseUseCase(ICalculationDataProvider dataProvider, IEditTransferView view)
     : base(dataProvider, "Добавить трату", view, transfer => dataProvider.AddCashMovement(transfer.Date, -transfer.Amount, transfer.Description))
 {
 }