public static Especificacao ObterEspeficicacao(TicketDeProducaoExcel ticketDeProducao, List<TicketDeProducao> ticketsDeProducao)
        {
            var validaTicketDeProducao = new EspecificacaoCargaValidaTicketsUnitariosDeProducaoTicket(ticketDeProducao, ticketsDeProducao);

            return
                validaTicketDeProducao;
        }
        public static Especificacao ObterEspeficicacao(TicketDeProducaoExcel ticketDeProducao, List<SetorHospitalar> setores)
        {
            var validaSetor = new EspecificacaoCargaValidaTicketDeProducaoSetorHospitalar(ticketDeProducao, setores);

            return
                validaSetor;
        }
        public static Especificacao ObterEspeficicacao(TicketDeProducaoExcel ticketDeProducao, List<SubSetorHospital> subsetores)
        {
            var validaSubSetor = new EspecificacaoCargaTicketUnitarioDeProducaoSubSetorHospital(ticketDeProducao, subsetores);

            return
                validaSubSetor;
        }
        public static Especificacao ObterEspeficicacao(TicketDeProducaoExcel ticketDeProducao, List<TicketParcela> ticketparcela)
        {
            var validaTicketParcela = new EspecificacaoCargaValidaTicketUnitarioDeProducaoParcela(ticketDeProducao,ticketparcela);

            return
                validaTicketParcela;
        }
        public static Especificacao ObterEspeficicacao(TicketDeProducaoExcel ticketDeProducao, Departamento departamento)
        {
            var validaDepartamento = new EspecificacaoCargaValidaTicketDeProducaoDepartamento(ticketDeProducao, departamento);

            return
                validaDepartamento;
        }
        private void InformarValor(TicketDeProducaoExcel registro, List<TicketDeProducao> tickets)
        {
            try
            {
                var ticket = tickets.FirstOrDefault(
                    t =>
                    t.Hospital.Nome == registro.Departamento && t.Setor.NomeSetor == registro.setor &&
                    t.SubSetor.NomeSetor == registro.subSetor);

                var parcela = ticket.Parcelas.FirstOrDefault(t => registro.mes ==(int) t.Mes);

                parcela.Valor = registro.valor;
            }
            catch (Exception)
            {
                this.carga.AdicionarDetalhe("Nao foi possivel processar Hospital", "Parcela do mes : " + registro.mes + " nao encontrada.", registro.Linha, TipoDetalheEnum.erroDeProcesso);
            }
        }
        private void AdicionarDepartamento(Carga carga, TicketDeProducaoExcel ticketDeProducaoExcel)
        {
            Departamento departamento = Departamentos.FirstOrDefault(p => p.Nome == ticketDeProducaoExcel.Departamento);

            Especificacao espeficicacaoDepartamento = FabricaDeEspeficicacaoDepartamento.ObterEspeficicacao(
                ticketDeProducaoExcel, departamento);

            if (espeficicacaoDepartamento.IsSatisfiedBy(carga))
                ticketDeProducaoExcel.DepartamentoEntidade = departamento;
        }
 public EspecificacaoCargaValidaTicketUnitarioDeProducaoParcela(TicketDeProducaoExcel ticketDeProducaoExcel,
                                                                List<TicketParcela> ticketsParcela)
     : base(ticketDeProducaoExcel, ticketsParcela)
 {
 }
 public EspecificacaoCargaValidaTicketDeProducaoSetorHospitalar(TicketDeProducaoExcel ticketDeProducaoExcel,
                                                           List<SetorHospitalar> setoresHospitalares)
     : base(ticketDeProducaoExcel, setoresHospitalares)
 {
 }
        private void LerExcel(List<TicketDeProducaoExcel> ticketsDeProducaoExcel, 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 ticketDeProducaoExcel = new TicketDeProducaoExcel();
                        ticketDeProducaoExcel.Departamento = reader[0].ToString();
                        ticketDeProducaoExcel.setor = reader[1].ToString();
                        ticketDeProducaoExcel.subSetor = reader[2].ToString();
                        ticketDeProducaoExcel.mes = Convert.ToInt32(reader[3]);
                        ticketDeProducaoExcel.valor = Convert.ToInt32(reader[4]);

                        ticketDeProducaoExcel.Linha = i + 1;

                        ticketsDeProducaoExcel.Add(ticketDeProducaoExcel);
                    }
                }
                catch (Exception ex)
                {
                    carga.AdicionarDetalhe("Erro na linha", "Ocorreu um erro ao tentar ler a linha do excel", i + 1,
                                           TipoDetalheEnum.erroLeituraExcel);
                }
                finally
                {
                    i++;
                }
            }
        }
 public EspecificacaoCargaValidaTicketsUnitariosDeProducaoTicket(TicketDeProducaoExcel ticketDeProducaoExcel, List<TicketDeProducao> ticketsDeProducao)
     : base(ticketDeProducaoExcel, ticketsDeProducao)
 {
 }