public EspecificacaoCargaValidaEstruturaOrcamentaria(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,
    EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, GrupoDeConta grupoDeConta)
 {
     EstruturasOrcamentariasExcel = estruturasOrcamentariasExcel;
     EstruturaOrcamentariaExcel = estruturaOrcamentariaExcel;
     GrupoDeConta = grupoDeConta;
 }
 public EspecificacaoCargaValidaEstruturaOrcamentaria(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,
    EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, Conta conta)
 {
     EstruturasOrcamentariasExcel = estruturasOrcamentariasExcel;
     EstruturaOrcamentariaExcel = estruturaOrcamentariaExcel;
     Conta = conta;
 }
 public EspecificacaoCargaValidaEstruturaOrcamentaria(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,
     EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, Departamento departamento)
 {
     EstruturasOrcamentariasExcel = estruturasOrcamentariasExcel;
     EstruturaOrcamentariaExcel = estruturaOrcamentariaExcel;
     Departamento = departamento;
 }
        private void ValidaCentroDeCusto(EstruturaOrcamentariaExcel estruturaOrcamentariaExcel)
        {
            CentroDeCusto centroDeCusto = null;

            if (CentrosDeCustos.Any(c => c.CodigoDoCentroDeCusto == estruturaOrcamentariaExcel.CodigoCentroDeCusto))
                centroDeCusto = CentrosDeCustos.First(c => c.CodigoDoCentroDeCusto == estruturaOrcamentariaExcel.CodigoCentroDeCusto);
            else
                centroDeCusto = CentrosDeCustoRepositorio.ObterPor(estruturaOrcamentariaExcel.CodigoCentroDeCusto);

            Especificacao especificacaoConta = FabricaDeEspecificacaoCargaValidaEstruturaOrcamentariaCentroDeUso.ObterEspecificacao(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, centroDeCusto);

            especificacaoConta.IsSatisfiedBy(carga);

            if (!CentrosDeCustos.Any(c => c.CodigoDoCentroDeCusto == estruturaOrcamentariaExcel.CodigoCentroDeCusto) && centroDeCusto != null)
                CentrosDeCustos.Add(centroDeCusto);
        }
 private void AdicionarDepartamento(Carga carga, EstruturaOrcamentariaExcel estruturaOrcamentariaExcel)
 {
     var novoDepartamento = FabricaDeDepartamento.Construir(estruturaOrcamentariaExcel.TipoDepartamento,
                                                          estruturaOrcamentariaExcel.Departamento);
     Departamentos.Add(novoDepartamento);
     estruturaOrcamentariaExcel.DepartamentoEntidade = novoDepartamento;
 }
        public void ValidaDepartamentos(EstruturaOrcamentariaExcel estruturaOrcamentariaExcel)
        {
            var departamento = Departamentos.FirstOrDefault(d => d.Nome == estruturaOrcamentariaExcel.Departamento);

            Especificacao espeficicacaoDepartamento = FabricaDeEspecificacaoEstruturaOrcamentariaDepartamento.ObterEspeficiacao(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, departamento);

            espeficicacaoDepartamento.IsSatisfiedBy(carga);
        }
        private void LerExcel(List<EstruturaOrcamentariaExcel> estruturaOrcamentariaExcel, Carga carga,
                                     OleDbDataReader reader)
        {
            int i = 0;
            while (reader.Read())
            {
                try
                {
                    if (i > 0)
                    {
                        if (reader[0] == DBNull.Value || string.IsNullOrEmpty(reader[0].ToString()))
                            break;

                        var itemEstruturaOrcamentariaExcel = new EstruturaOrcamentariaExcel();
                        itemEstruturaOrcamentariaExcel.Departamento = reader[0].ToString();
                        itemEstruturaOrcamentariaExcel.TipoDepartamento = (TipoDepartamento)int.Parse(reader[1].ToString());
                        itemEstruturaOrcamentariaExcel.TipoAlteracaoDepartamento = (TipoAlteracao)int.Parse(reader[2].ToString());
                        itemEstruturaOrcamentariaExcel.NomeDaConta = reader[3].ToString();
                        itemEstruturaOrcamentariaExcel.CodigoDaConta = reader[4].ToString();
                        itemEstruturaOrcamentariaExcel.TipoAlteracaoConta = (TipoAlteracao)int.Parse(reader[5].ToString());
                        itemEstruturaOrcamentariaExcel.NomeCentroDeCusto = reader[6].ToString();
                        itemEstruturaOrcamentariaExcel.CodigoCentroDeCusto = reader[7].ToString();
                        itemEstruturaOrcamentariaExcel.TipoAlteracaoCentroDeCusto = (TipoAlteracao)int.Parse(reader[8].ToString());
                        itemEstruturaOrcamentariaExcel.NomeDoGrupoDeConta = reader[9].ToString();
                        itemEstruturaOrcamentariaExcel.TipoAlteracaoGrupoDeConta = (TipoAlteracao)int.Parse(reader[10].ToString());
                        itemEstruturaOrcamentariaExcel.Linha = i + 1;

                        estruturaOrcamentariaExcel.Add(itemEstruturaOrcamentariaExcel);
                    }
                }
                catch (Exception ex)
                {
                    carga.AdicionarDetalhe("Erro na linha", "Ocorreu um erro ao tentar ler a linha do excel", i + 1,
                                           TipoDetalheEnum.erroLeituraExcel);
                }
                finally
                {
                    i++;
                }
            }
        }
        private GrupoDeConta CriarGrupo(EstruturaOrcamentariaExcel estruturaOrcamentaria)
        {
            GrupoDeConta grupoDeConta = null;
            if (estruturaOrcamentaria.TipoAlteracaoGrupoDeConta == TipoAlteracao.Inclusao)
            {
                grupoDeConta = new GrupoDeConta(estruturaOrcamentaria.NomeDoGrupoDeConta);
                grupoDeConta.Contas = new List<Conta>();
                GruposDeConta.Add(grupoDeConta);
            }

            return grupoDeConta;
        }
 public static Especificacao ObterEspeficiacao(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel, EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, Departamento departamento)
 {
     return new EspecificacaoCargaValidaEstruturaOrcamentariaDepartamento(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, departamento);
 }
 public static Especificacao ObterEspecificacao(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel, EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, CentroDeCusto centroDeCusto)
 {
     return new EspecificacaoCargaValidaEstruturaOrcamentariaCentroDeCusto(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, centroDeCusto);
 }
 public EspecificacaoCargaValidaEstruturaOrcamentariaCentroDeCusto(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,
     EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, CentroDeCusto centroDeCusto)
     : base(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, centroDeCusto)
 {
 }
 public EspecificacaoCargaValidaEstruturaOrcamentariaConta(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel, EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, Conta conta)
     : base(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, conta)
 {
 }
 public EspecificacaoCargaValidaEstruturaOrcamentariaGrupoConta(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,
     EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, GrupoDeConta grupoDeConta)
     : base(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, grupoDeConta)
 {
 }
 public EspecificacaoCargaValidaEstruturaOrcamentaria(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel,EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, CentroDeCusto centroDeCusto)
 {
     EstruturasOrcamentariasExcel = estruturasOrcamentariasExcel;
     EstruturaOrcamentariaExcel = estruturaOrcamentariaExcel;
     CentroDeCusto = centroDeCusto;
 }
        private void ValidaContas(EstruturaOrcamentariaExcel estruturaOrcamentariaExcel)
        {
            tipoContaOutras = TiposContaRepositorio.ObterPor((int)TipoContaEnum.Outros);

            Conta conta = null;

            if (Contas.Any(c => c.CodigoDaConta == estruturaOrcamentariaExcel.CodigoDaConta))
                conta = Contas.First(c => c.CodigoDaConta == estruturaOrcamentariaExcel.CodigoDaConta);
            else
                conta = ContasRepositorio.ObterContaPor(estruturaOrcamentariaExcel.CodigoDaConta);

            Especificacao especificacaoConta = FabricaDeEspecificacaoCargaValidaEstruturaOrcamentariaConta.ObterEspecificacao(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, conta);
            especificacaoConta.IsSatisfiedBy(carga);

            estruturaOrcamentariaExcel.Conta = conta;

            if (!Contas.Any(c => c.CodigoDaConta == estruturaOrcamentariaExcel.CodigoDaConta) && conta != null)
                Contas.Add(conta);
        }
        private void ValidaGrupoDeConta(EstruturaOrcamentariaExcel estruturaOrcamentariaExcel)
        {
            GrupoDeConta grupoDeConta = null;

            if (GruposDeConta.Any(c => c.Nome == estruturaOrcamentariaExcel.NomeDoGrupoDeConta))
                grupoDeConta = GruposDeConta.First(c => c.Nome == estruturaOrcamentariaExcel.NomeDoGrupoDeConta);
            else
                grupoDeConta = GruposDeContaRepositorio.ObterPor(estruturaOrcamentariaExcel.NomeDoGrupoDeConta);

            Especificacao especificacaoConta = FabricaDeEspecificacaoCargaValidaEstruturaOrcamentariaGrupoDeConta.ObterEspecificacao(estruturasOrcamentariasExcel,estruturaOrcamentariaExcel, grupoDeConta);

            especificacaoConta.IsSatisfiedBy(carga);

            if(!GruposDeConta.Any(c => c.Nome == estruturaOrcamentariaExcel.NomeCentroDeCusto) && grupoDeConta != null)
                GruposDeConta.Add(grupoDeConta);
        }
 public static Especificacao ObterEspecificacao(List<EstruturaOrcamentariaExcel> estruturasOrcamentariasExcel, EstruturaOrcamentariaExcel estruturaOrcamentariaExcel, GrupoDeConta grupoDeConta)
 {
     return new EspecificacaoCargaValidaEstruturaOrcamentariaGrupoConta(estruturasOrcamentariasExcel, estruturaOrcamentariaExcel, grupoDeConta);
 }