// Agrupa os custos(impressões) dos usuários existentes no "branch" (ramo de centros de custo), todos os centros // de custo derivados são contabilizados e o próprio ramo é um centro de custo com seus usuários associados private GroupPrintingCost AssembleCosts(CostBranch costBranch, String branchQualifiedName) { GroupPrintingCost groupPrintingCost = new GroupPrintingCost(); groupPrintingCost.costCenterId = costBranch.Id; groupPrintingCost.costCenterName = branchQualifiedName; SearchAssociates(costBranch, true); foreach (int userId in associates) { comparisonValue = userId; UserPrintingCost userPrintingCost = (UserPrintingCost)userPrintingCosts.Find(CheckCostMethod); if (userPrintingCost != null) { groupPrintingCost.bwPageCount += userPrintingCost.bwPageCount; groupPrintingCost.colorPageCount += userPrintingCost.colorPageCount; groupPrintingCost.totalPageCount += userPrintingCost.totalPageCount; groupPrintingCost.bwCost += userPrintingCost.bwCost; groupPrintingCost.colorCost += userPrintingCost.colorCost; groupPrintingCost.totalCost += userPrintingCost.totalCost; } } return(groupPrintingCost); }
/// <summary> /// Retorna uma lista com os custos de impressão por centro de custo /// </summary> public List <Object> GetCostsOfBranches(CostTree tree) { List <Object> costsOfBranches = new List <Object>(); // Caso não tenham sido passados os custos por usuário retorna a lista em branco if (userPrintingCosts == null) { return(costsOfBranches); } // Não modificar o método "SearchBranches" para receber um parâmetro apenas, pois "tree.root" // é apenas um dos casos, nos outros são branchs variados SearchBranches(tree, tree.Root); foreach (KeyValuePair <String, CostBranch> pair in orderedBranches) { GroupPrintingCost groupPrintingCost = AssembleCosts(pair.Value, pair.Key); costsOfBranches.Add(groupPrintingCost); } return(costsOfBranches); }