public static Especificacao ObterEspeficicacao(TicketDeInsumoExcel ticketDeProducao, List<SetorHospitalar> setores)
        {
            var validaSetor = new EspecificacaoCargaValidaTicketDeInsumoSetorHospitalar(ticketDeProducao, setores);

            return
                validaSetor;
        }
        public static Especificacao ObterEspeficicacao(TicketDeInsumoExcel ticketesDeInsumo, List<Insumo> insumos)
        {
            var validaInsumo = new EspecificacaoCargaValidaTicketsDeInsumo(ticketesDeInsumo, insumos);

            return
                validaInsumo;
        }
        public static Especificacao ObterEspeficicacao(TicketDeInsumoExcel ticketDeProducao, List<ProducaoHospitalar> producoesHospitalares)
        {
            var validaParcelasdosTicketsDeInsumos = new EspecificacaoCargaValidaTicketDeInsumoProducaoHospitalar(ticketDeProducao, producoesHospitalares);

            return
                validaParcelasdosTicketsDeInsumos;
        }
        public static Especificacao ObterEspeficicacao(TicketDeInsumoExcel ticketsDeInsumo, List<CustoUnitario> custosUnitarios)
        {
            var validaTicketDeProducao = new EspecificacaoCargaValidaTicketsDeInsumoCustoUnitario(ticketsDeInsumo, custosUnitarios);

            return
                validaTicketDeProducao;
        }
        public static Especificacao ObterEspeficicacao(TicketDeInsumoExcel ticketDeProducao, Departamento departamento)
        {
            var validaDepartamento = new EspecificacaoCargaValidaTicketDeInsumoDepartamento(ticketDeProducao, departamento);

            return
                validaDepartamento;
        }
        private void InformarValor(TicketDeInsumoExcel registro, List<CustoUnitario> custosUnitarios)
        {
            try
            {
                var ticket = custosUnitarios.FirstOrDefault(
                    t =>
                    t.Setor.NomeSetor == registro.setor &&
                    t.SubSetor.NomeSetor == registro.subSetor);

                var parcela = ticket.Valores.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);
            }
        }
        public static Especificacao ObterEspeficicacao(TicketDeInsumoExcel ticketsDeInsumos, List<SubSetorHospital> subsetores)
        {
            var validaSubSetor = new EspecificacaoCargaValidaTicketUnitarioDeInsumoSubSetorHospital(ticketsDeInsumos, subsetores);

            return
                validaSubSetor;
        }
 public EspecificacaoCargaValidaTicketDeInsumoDepartamento(TicketDeInsumoExcel ticketDeInsumoExcel,
                                                             Departamento departamento)
     : base(ticketDeInsumoExcel, departamento)
 {
 }
        private void LerExcel(List<TicketDeInsumoExcel> 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 ticketDeInsumo = new TicketDeInsumoExcel();
                        ticketDeInsumo.Departamento = reader[0].ToString();
                        ticketDeInsumo.setor = reader[1].ToString();
                        ticketDeInsumo.subSetor = reader[2].ToString();
                        ticketDeInsumo.mes = Convert.ToInt32(reader[3]);
                        ticketDeInsumo.valor = Convert.ToInt32(reader[4]);

                        ticketDeInsumo.Linha = i + 1;

                        ticketsDeProducaoExcel.Add(ticketDeInsumo);
                    }
                }
                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 EspecificacaoCargaValidaTicketUnitarioDeInsumoSubSetorHospital(TicketDeInsumoExcel ticketDeInsumoExcel,
                                                           List<SubSetorHospital> subSetoresHospitalares)
     : base(ticketDeInsumoExcel, subSetoresHospitalares)
 {
 }
 public EspecificacaoCargaValidaTicketsDeInsumo(TicketDeInsumoExcel ticketDeInsumoExcel, List<Insumo> insumos)
     : base(ticketDeInsumoExcel, insumos)
 {
 }