private void AdicionarDespesas(GrupoDeContaDTO grupoDeContaDTO, Conta conta, CentroDeCusto centroDeCusto, ContaDespesaPessoalDTO despesaConta)
        {
            for (var i = 1; i < 13; i++)
            {
                var mes = i;

                IEnumerable<Parcela> parcelas = null;

                parcelas = grupoDeContaDTO.GrupoConta == "BenefĂ­cios"
                               ? ObterParcelasDeDespesasNaoRelacionadasAoFuncionarioAoCentroDeCusto(conta, centroDeCusto, mes)
                               : ObterParcelasDeDespesasRelacionadasAoFuncionario(conta, centroDeCusto, mes);

                if (parcelas.Any())
                {
                    double valor = 0;
                    foreach (var parcela in parcelas.Where(p=> p != null && p.Valor != null))
                    {
                        valor += parcela.Valor;
                    }

                    //var valor = parcelas.AsParallel().Sum(a => a.Valor);

                    despesaConta.Despesas.Add(new DespesaPessoalDTO { Mes = i, Valor = valor });
                }
            }
        }
        private void AdicionarDespesas(GrupoDeContaDTO grupoDeContaDTO, Conta conta, CentroDeCusto centroDeCusto)
        {
            var despesaConta = new ContaDespesaPessoalDTO { Conta = conta.Nome, Despesas = new List<DespesaPessoalDTO>() };

            AdicionarDespesas(grupoDeContaDTO, conta, centroDeCusto, despesaConta);

            AdicionarZeroAsContasSemDespesa(despesaConta);
            despesaConta.TotalConta = ObterOSomatorioTotalDasParcelasDeDespesasNaoRalacionadasAoFuncionario(conta, centroDeCusto);
            //despesaConta.TotalConta = grupoDeContaDTO.GrupoConta == "BenefĂ­cios" ? ObterOSomatorioTotalDasParcelasDeDespesasNaoRalacionadasAoFuncionario(conta, centroDeCusto) : ObterOSomatorioTotalDasParcelasDeDespesasRelacionadasAoFuncionario(conta, centroDeCusto);

            grupoDeContaDTO.Contas.Add(despesaConta);
        }
        private void CalcularTotalizadorGrupoDeConta(GrupoDeContaDTO grupoDeContaDTO)
        {
            for (int i = 1; i < 13; i++)
            {
                int i1 = i;
                var despesas = grupoDeContaDTO.Contas.SelectMany(x => x.Despesas.Where(y => y.Mes == i1));

                var despesaPessoalDtos = despesas as DespesaPessoalDTO[] ?? despesas.ToArray();
                if (despesaPessoalDtos.Any())
                {
                    //double valor = 0;
                    //foreach (var parcela in despesaPessoalDtos)
                    //{
                    //    valor += parcela.Valor;
                    //}
                    var valor = despesaPessoalDtos.AsParallel().Sum(a => a.Valor);

                    grupoDeContaDTO.DespesasGrupoDeConta.Add(new DespesasGrupoDeContaDTO { Mes = i, Valor = valor });
                }
            }

            AdicionarZeroAosGruposComContasSemDespesaNenhuma(grupoDeContaDTO);

            //double valortotal = 0;
            //foreach (var totalmensal in grupoDeContaDTO.DespesasGrupoDeConta)
            //{
            //    valortotal += totalmensal.Valor;
            //}

            var valortotal = grupoDeContaDTO.DespesasGrupoDeConta.AsParallel().Sum(a => a.Valor);

            grupoDeContaDTO.TotalGrupoConta = valortotal;
        }
        private GrupoDeContaDTO ObterGrupoDeContaDTOInicializado(GrupoDeConta grupoDeConta)
        {
            var grupoDeContaDTO = new GrupoDeContaDTO
                                      {
                                          GrupoConta = grupoDeConta.Nome,
                                          Contas = new List<ContaDespesaPessoalDTO>(),
                                          DespesasGrupoDeConta = new List<DespesasGrupoDeContaDTO>()
                                      };

            return grupoDeContaDTO;
        }
        private void AdicionarZeroAosGruposComContasSemDespesaNenhuma(GrupoDeContaDTO grupoDeContaDTO)
        {
            var quantidadeDeMesesComDespesa = grupoDeContaDTO.DespesasGrupoDeConta.Count;

            if (quantidadeDeMesesComDespesa < 12)
            {
                quantidadeDeMesesComDespesa++;

                for (var i = quantidadeDeMesesComDespesa; i < 13; i++)
                    grupoDeContaDTO.DespesasGrupoDeConta.Add(new DespesasGrupoDeContaDTO { Mes = i, Valor = 0 });
            }
        }