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);
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            VerificaSeExisteSessaoDeUsuario();
            if (!this.IsPostBack)
            {
                Orcamento.Domain.DB.Repositorio.Orcamentos orcamentos = new Orcamento.Domain.DB.Repositorio.Orcamentos();
                Departamentos setores = new Departamentos();
                var departamento = setores.Obter((int)Session["DepartamentoLogadoId"]);
                var dres = orcamentos.ObterDRE(departamento);
                orcamentos = new Orcamento.Domain.DB.Repositorio.Orcamentos();
                var listaOrcamentos = orcamentos.TodosPor(departamento);
                var viagens = PreencherResultadoOrçadoViagens(listaOrcamentos);
                var outrasDespesas = dres.Where(x => x.Nome == "Orçamento de outras despesas").Sum(v => v.ValorTotal);

                if (viagens > 0)
                {
                    outrasDespesas += listaOrcamentos.Where(a => a.Tipo == TipoOrcamentoEnum.Viagem && a.VersaoFinal).Sum(a => a.Despesas.Sum(d => d.ValorTotalRefeicao + d.ValorTotalTaxi));
                }

                var producoes = dres.Where(x => x.Nome == "Orçamento Hospitalar").FirstOrDefault();

                PreencherOutrasDespesas(outrasDespesas);
                PreencherViagens(viagens);
                PreencherPessoal(orcamentos, departamento);
                Receita(producoes);

                trViagens.Visible = departamento.GetType() == typeof(Setor);
                trReceita.Visible = departamento.GetType() == typeof(Hospital);
                if (departamento.GetType() == typeof(Hospital) && producoes != null && producoes.ValorTotal > 0)
                {
                    Insumos insumos = new Insumos();
                    var insumo = insumos.ObterInsumo(departamento);

                    trInsumos.Visible = true;
                    var orcamentoDeProducao = orcamentos.ObterOrcamentoHospitalarFinal(departamento);

                    if (orcamentoDeProducao != null)
                    {
                        var contasUnitarias = ServicoMapperOrcamentoView.TransformarProducaoDeInsumos(
                            orcamentoDeProducao.Servicos.Where(s => s.Conta.Nome != "Salas" && s.Conta.TipoValorContaEnum == TipoValorContaEnum.Quantidade && s.Conta.Calculado == false).ToList(),
                            orcamentoDeProducao.Servicos.Where(s => s.Conta.TipoValorContaEnum == TipoValorContaEnum.Porcentagem).ToList());

                        TicketsDeReceita tickets = new TicketsDeReceita();
                        var ticketsDeReceita = tickets.Todos(departamento);
                        var ticket = ticketsDeReceita.Where(t => t.TipoTicket == global::Orcamento.Domain.ComponentesDeOrcamento.OrcamentoDeProducao.TipoTicketDeReceita.ReajusteDeInsumos).FirstOrDefault();

                        orcamentoDeProducao.CalcularCustoHospitalar(ticket, insumo.CustosUnitarios.ToList(), contasUnitarias);

                        txtInsumos.Text += "(";
                        txtInsumos.Text += orcamentoDeProducao.CustosUnitariosTotal.Sum(c => c.Valores.Sum(v => v.Valor)).ToString("#,###,###,###0"); ;
                        txtInsumos.Text += ")";
                    }
                }
                else
                {
                    txtInsumos.Text += "(";
                    txtInsumos.Text += 0.ToString();
                    txtInsumos.Text += ")";
                }

            }
        }
        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 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);
                }
            }
        }