public void Salvar(Insumo insumo, List<ContaHospitalarDTO> contas, bool custoUnitario)
        {
            Contract.Requires(insumo != null, "Insumo não informado.");
            Contract.Requires(insumo.CustosUnitarios != null, "Produção não informada.");
            Contract.Requires(contas != null, "Contas não foram informadas.");

            Insumos insumos = new Insumos();

            foreach (var custo in insumo.CustosUnitarios)
            {
                foreach (var valor in custo.Valores)
                {
                    valor.Valor = contas.Where(c => c.IdServico == custo.Id).FirstOrDefault().Valores.Where(t => t.Mes == valor.Mes).FirstOrDefault().Valor;
                }
            }

            insumos.Salvar(insumo);
        }
        public void InserirQuimioTerapiaNaOncologia()
        {
            var contas = new ContasHospitalares();
            var setoresHospitalares = new SetoresHospitalares();
            var setorOncologia = setoresHospitalares.Obter<SetorHospitalar>(8);

            var departamentos = new Departamentos();
            var todos = departamentos.Todos<Hospital>();

            var quimioTerapia = new SubSetorHospital("Quimioterapia");

            setorOncologia.AdicionarSetor(quimioTerapia);

            setoresHospitalares.Salvar(setorOncologia);

            var insumos = new Insumos();

            foreach (var departamento in todos)
            {
                departamentos.Salvar(departamento);

                var insumo = insumos.ObterInsumo(departamento);
                insumo.CriarCustoUnitarioOncologiaQuimioTerapiaHospitalarPor(setorOncologia);
                insumos.Salvar(insumo);

                foreach (var subsetor in setorOncologia.SubSetores.Where
                (

                s =>
                    s.NomeSetor == "Quimioterapia"
                )
                )
                {
                    var ticket = new TicketDeProducao(setorOncologia, subsetor, departamento);

                    insumos.Salvar(ticket);
                }
            }
        }
        public void inserir_ticket_de_producao_nos_novos_sub_setores()
        {
            var insumos = new Insumos();
            var departamentos = new Departamentos();
            var todos = departamentos.Todos<Hospital>();

            foreach (var departamento in todos)
            {
                departamentos.Salvar(departamento);

                var insumo = insumos.ObterInsumo(departamento);
                var setor = departamento.Setores.Single(s => s.NomeSetor == "UTI");
                insumo.CriarCustoUnitarioHospitalarPor(setor);
                insumos.Salvar(insumo);

                foreach (var subsetor in setor.SubSetores.Where
                (
                s => s.NomeSetor == "UTI Neuro-Intensiva" ||
                    s.NomeSetor == "UTI Pós-Operatória" ||
                    s.NomeSetor == "UTI Ventilatória" ||
                    s.NomeSetor == "UTI Hepático"
                )
                )
                {
                    var ticket = new TicketDeProducao(setor, subsetor, departamento);

                    insumos.Salvar(ticket);
                }
            }
        }
        public void r_insetir_SubSetoresParaUti()
        {
            var contas = new ContasHospitalares();
            var setoresHospitalares = new SetoresHospitalares();
            var setorUti = setoresHospitalares.Obter<SetorHospitalar>(3);

            var departamentos = new Departamentos();
            var todos = departamentos.Todos<Hospital>();

            var neuroIntensiva = new SubSetorHospital("UTI Neuro-Intensiva");
            var utiPosOperatoria = new SubSetorHospital("UTI Pós-Operatória");
            var utiVentilatoria = new SubSetorHospital("UTI Ventilatória");
            var utiHepatico = new SubSetorHospital("UTI Hepático");

            setorUti.AdicionarSetor(neuroIntensiva);
            setorUti.AdicionarSetor(utiPosOperatoria);
            setorUti.AdicionarSetor(utiVentilatoria);
            setorUti.AdicionarSetor(utiHepatico);

            setoresHospitalares.Salvar(setorUti);

            var insumos = new Insumos();

            foreach (var departamento in todos)
            {
                departamentos.Salvar(departamento);

                var insumo = insumos.ObterInsumo(departamento);
                insumo.CriarCustoUnitarioUTIHospitalarPor(setorUti);
                insumos.Salvar(insumo);

                foreach (var subsetor in setorUti.SubSetores.Where
                (
                s => s.NomeSetor == "UTI Neuro-Intensiva" ||
                    s.NomeSetor == "UTI Pós-Operatória" ||
                    s.NomeSetor == "UTI Ventilatória" ||
                    s.NomeSetor == "UTI Hepático"
                )
                )
                {
                    var ticket = new TicketDeProducao(setorUti, subsetor, departamento);

                    insumos.Salvar(ticket);
                }
            }
        }
        public void insetir_setor_Suporte()
        {
            ContasHospitalares contas = new ContasHospitalares();

            var outrasReceitas = new ContaHospital("OutrasReceitas", TipoValorContaEnum.Quantidade);

            var departamentos = new Departamentos();
            var todos = departamentos.Todos<Hospital>();

            var suporte = new SetorHospitalar("Maternidade");
            var subSuporte = new SubSetorHospital("Maternidade");

            suporte.AdicionarSetor(subSuporte);
            suporte.AdicionarConta(outrasReceitas);

            var setores = new SetoresHospitalares();
            setores.Salvar(suporte);

            Insumos insumos = new Insumos();

            foreach (var departamento in todos)
            {
                departamento.AdicionarSetor(suporte);
                departamentos.Salvar(departamento);

                var insumo = insumos.ObterInsumo(departamento);
                insumo.CriarCustoUnitarioHospitalarPor(suporte);
                insumos.Salvar(insumo);

                foreach (var subsetor in suporte.SubSetores)
                {
                    var ticket = new TicketDeProducao(suporte, subsetor, departamento);

                    insumos.Salvar(ticket);
                }
            }
        }
        public void insetir_setor_Semi()
        {
            ContasHospitalares contas = new ContasHospitalares();

            var leito = new ContaHospital("Capacidade Operacional", TipoValorContaEnum.Quantidade);
            var ocupacao = new ContaHospital("Taxa de Ocupação", TipoValorContaEnum.Porcentagem);
            var capacidadeFisica = new ContaHospital("Capacidade Fisica", TipoValorContaEnum.Quantidade, false, false);
            leito.MultiPlicaPorMes = true;

            var departamentos = new Departamentos();
            var todos = departamentos.Todos<Hospital>();

            var semi = new SetorHospitalar("Semi");
            var subSemiIntensiva = new SubSetorHospital("Uti Semi-Intensiva");

            semi.AdicionarSetor(subSemiIntensiva);
            semi.AdicionarConta(leito);
            semi.AdicionarConta(ocupacao);
            semi.AdicionarConta(capacidadeFisica);

            var setores = new SetoresHospitalares();
            setores.Salvar(semi);

            Insumos insumos = new Insumos();

            foreach (var departamento in todos)
            {
                departamento.AdicionarSetor(semi);
                departamentos.Salvar(departamento);

                var insumo = insumos.ObterInsumo(departamento);
                insumo.CriarCustoUnitarioHospitalarPor(semi);
                insumos.Salvar(insumo);

                foreach (var subsetor in semi.SubSetores)
                {
                    var ticket = new TicketDeProducao(semi, subsetor, departamento);

                    insumos.Salvar(ticket);
                }
            }
        }
 public void InserirInsumo(Departamento departamento)
 {
     Insumos insumos = new Insumos();
     var insumo = new Insumo(departamento);
     insumos.Salvar(insumo);
 }
        public void r_insetir_setor_bercario()
        {
            ContasHospitalares contas = new ContasHospitalares();
            var leito = contas.ObterContaPor("Leito");
            var taxa = contas.ObterContaPor("Taxa de Ocupação");

            var departamentos = new Departamentos();
            var todos = departamentos.Todos<Hospital>();

            var bercario = new SetorHospitalar("Berçário");
            var bercarioAltoRisco = new SubSetorHospital("Berçário Alto Risco");
            var bercarioSemiIntensiva = new SubSetorHospital("Berçário Semi-intensiva");

            bercario.AdicionarSetor(bercarioAltoRisco);
            bercario.AdicionarSetor(bercarioSemiIntensiva);
            bercario.AdicionarConta(leito);
            bercario.AdicionarConta(taxa);

            Insumos insumos = new Insumos();

            foreach (var departamento in todos)
            {
                departamento.AdicionarSetor(bercario);
                departamentos.Salvar(departamento);

                var insumo = insumos.ObterInsumo(departamento);
                insumo.CriarCustoUnitarioHospitalarPor(bercario);
                insumos.Salvar(insumo);

                foreach (var subsetor in bercario.SubSetores)
                {
                    var ticket = new TicketDeProducao(bercario, subsetor, departamento);

                    insumos.Salvar(ticket);
                }
            }
        }