// Calcul des soldes opérations pour une série d'opérations et une série de budgets public void Executer(InputSoldeBudgets inputs , IEnumerable<Budget> budgets ) { // Inputs IEnumerable<Operation> operations = inputs.operations; IEnumerable<MouvementBudget> mouvements = inputs.mouvements; IEnumerable<FinancementBudget> financementBudgets = inputs.financementBudgets; // Enrichissement avec calcul solde opérations et nbre opés var budgetsEnrichis = budgets.GroupJoin(operations , b => b.Id, o => o.CompteAId , (b, opes) => b.CalculerCompteurs_CompteA_Archivable(opes) ) .GroupJoin(operations , b => b.Id, o => o.CompteBId , (b, opes) => b.CalculerCompteurs_CompteB_Archivable(opes) ) .GroupJoin(mouvements , b => b.Id, m => m.BudgetId , (b, ms) => b.CalculerCompteursProvisions_Archivable(ms) ) .GroupJoin(financementBudgets , b => b.Id, f => f.BudgetId , (b, fiBus) => b.CalculerCompteursFinancementBudgets_Archivable(fiBus) ) .ToList() ; }
// Calcul des montants des soldes budgets public void EnrichirMontants(IList<SoldeBudget> _soldeBudgets , InputSoldeBudgets _inputs ) { // Inputs IQueryable<Operation> _operations = _inputs.operations.AsQueryable<Operation>(); IQueryable<MouvementBudget> _mouvements = _inputs.mouvements.AsQueryable<MouvementBudget>(); IQueryable<FinancementBudget> _financementBudgets = _inputs.financementBudgets.AsQueryable<FinancementBudget>(); IQueryable<EcheanceContrat> _echeances = _inputs.echeanceAVenirs.AsQueryable<EcheanceContrat>(); IQueryable<MouvementBudget> _mouvementAVenirs = _inputs.mouvementAVenirs.AsQueryable<MouvementBudget>(); // Jointures pour produire les feeds _soldeBudgets = _soldeBudgets.GroupJoin(_operations , _solde => _solde.Budget.Id, ope => ope.CompteAId , (_solde, opeAs) => _solde.CalculerMontantOperationsRealiseesA(opeAs) ) .GroupJoin(_operations , _solde => _solde.Budget.Id, ope => ope.CompteBId , (_solde, opeBs) => _solde.CalculerMontantOperationsRealiseesB(opeBs) ) .GroupJoin(_echeances , _solde => _solde.Budget.Id, ech => ech.Contrat.BudgetId , (_solde, echeances) => _solde.CalculerMontantEcheancesAVenir(echeances) ) .GroupJoin(_mouvements , _solde => _solde.Budget.Id, mouv => mouv.BudgetId , (_solde, mouvementRealises) => _solde.CalculerMontantMouvementBudgetsRealises(mouvementRealises) ) .GroupJoin(_mouvementAVenirs , _solde => _solde.Budget.Id, mouv => mouv.BudgetId , (_solde, mouvementAVenirs) => _solde.CalculerMontantMouvementBudgetsAVenir(mouvementAVenirs) ) .GroupJoin(_financementBudgets , _solde => _solde.Budget.Id, fi => fi.BudgetId , (_solde, financementBudgets) => _solde.CalculerMontantFinancementBudgetRealises(financementBudgets) ) .ToList() ; //return _soldeBudgets; }