public void s_inserir_novo_centro_de_custo_com_usuarios_coorporativo()
        {
            var tiposConta = new TiposConta();

            var tipoContaOutras = new TipoConta { Nome = "Outras" };

            tiposConta.Adicionar(tipoContaOutras);

            string _conectionstring;
            _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;";
            _conectionstring += String.Format("Data Source={0};", "D:\\UsuarioCentroCustoCoorporativo.xls");
            _conectionstring += "Extended Properties='Excel 8.0;HDR=NO;'";

            OleDbConnection cn = new OleDbConnection(_conectionstring);
            OleDbCommand cmd = new OleDbCommand("Select * from [Centros$]", cn);
            cn.Open();
            OleDbDataReader reader = cmd.ExecuteReader();

            List<RegistroExcel> documento = new List<RegistroExcel>();

            List<Conta> listaContas = new List<Conta>();
            List<CentroDeCusto> listaCentrosDeCusto = new List<CentroDeCusto>();

            Departamentos repositorioDepartamento = new Departamentos();
            CentrosDeCusto repositorioDeCusto = new CentrosDeCusto();
            Contas repositorioContas = new Contas();

            int i = 0;

            while (reader.Read())
            {
                if (i < 2)
                {
                    i++;
                    continue;
                }
                if (reader[0] == DBNull.Value)
                    break;

                RegistroExcel registroExcel = new RegistroExcel()
                {
                    NomeHospital = (string)reader[0],
                    CodigoCentroDeCusto = (string)reader[1],
                    DescricaoCentroDeCusto = (string)reader[2]
                };

                if (reader[3] != DBNull.Value)
                {
                    registroExcel.DescricaoConta = (string)reader[4];
                    registroExcel.CodigoConta = (string)reader[3];
                    registroExcel.GrupoResumoNome = (string)reader[5];
                }

                documento.Add(registroExcel);
            }

            cn.Close();
            cn.Dispose();
            cmd.Dispose();

            var gruposDeConta = documento.Select(x => x.GrupoResumoNome).Distinct();

            var codigosDeConta = documento.Select(x => x.CodigoConta).Distinct();

            foreach (var codigoDeConta in codigosDeConta)
            {
                string descricaoDaConta = documento.Where(x => x.CodigoConta == codigoDeConta).Select(y => y.DescricaoConta).Distinct().First();

                var conta = repositorioContas.ObterContaPor(codigoDeConta);

                if (conta == null)
                    Assert.Fail();

                listaContas.Add(conta);
            }

            var codigosDecentrosDeCusto = documento.Select(x => x.CodigoCentroDeCusto).Distinct();

            foreach (var codigoDeCentro in codigosDecentrosDeCusto)
            {
                var descricaoDeCentroDeCusto = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.DescricaoCentroDeCusto).Distinct().First();

                var centro = repositorioDeCusto.ObterPor(codigoDeCentro);

                if (centro != null)
                    Assert.Fail();

                CentroDeCusto centroDeCusto = new CentroDeCusto(descricaoDeCentroDeCusto)
                {
                    CodigoDoCentroDeCusto = codigoDeCentro
                };

                var contas = documento.Where(x => x.CodigoCentroDeCusto == codigoDeCentro).Select(y => y.CodigoConta).Distinct();

                foreach (var conta in contas)
                {
                    centroDeCusto.AdicionarConta(listaContas.Where(x => x.CodigoDaConta == conta).SingleOrDefault());
                }

                repositorioDeCusto.Salvar(centroDeCusto);
                listaCentrosDeCusto.Add(centroDeCusto);
            }

            var hospitais = documento.Select(x => x.NomeHospital).Distinct();

            foreach (var nomeHospital in hospitais)
            {
                Departamento departamento = repositorioDepartamento.ObterPor(nomeHospital);

                if (departamento == null)
                    Assert.Fail();

                var centrosDeCusto = documento.Where(x => x.NomeHospital == departamento.Nome).Select(y => y.CodigoCentroDeCusto).Distinct();

                foreach (var codigoCentroCusto in centrosDeCusto)
                {
                    departamento.AdicionarCentroDeCusto(listaCentrosDeCusto.Where(x => x.CodigoDoCentroDeCusto == codigoCentroCusto).SingleOrDefault());
                }

                repositorioDepartamento.Salvar(departamento);
            }
        }
        public void DeletarCentrosDeCusto()
        {
            string _conectionstring;
            _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;";
            _conectionstring += String.Format("Data Source={0};", "D:\\Exclussao.xls");
            _conectionstring += "Extended Properties='Excel 8.0;HDR=NO;'";

            OleDbConnection cn = new OleDbConnection(_conectionstring);
            OleDbCommand cmd = new OleDbCommand("Select * from [exclusao$]", cn);
            cn.Open();

            OleDbDataReader reader = cmd.ExecuteReader();

            List<UsuarioExcel> usuariosExcel = new List<UsuarioExcel>();

            int i = 0;

            while (reader.Read())
            {
                if (i > 1)
                {
                    if (reader[5] == DBNull.Value)
                        break;

                    UsuarioExcel usuarioExcel = new UsuarioExcel();

                    if (reader[0] != DBNull.Value)
                        usuarioExcel.Usuario = (string)reader[0];
                    if (reader[1] != DBNull.Value)
                        usuarioExcel.Login = (string)reader[1];
                    if (reader[3] != DBNull.Value)
                        usuarioExcel.Hospital = (string)reader[3];

                    usuarioExcel.CodigoCentroDeCusto = (string)reader[5];

                    usuariosExcel.Add(usuarioExcel);
                }
                i++;
            }

            cn.Close();
            cn.Dispose();
            cmd.Dispose();

            var departamentos = usuariosExcel.Select(x => x.Hospital).Distinct();
            Departamentos repositorioDepartamento = new Departamentos();
            List<Departamento> listaDepartamentos = new List<Departamento>();

            foreach (var nome in departamentos.Where(d => d != null))
            {

                var departamento = repositorioDepartamento.ObterPor(nome);

                if (departamento == null)
                    Assert.Fail("Departamento não econtrado");

                listaDepartamentos.Add(departamento);

                //TicketsDeOrcamentoPessoal tickets = new TicketsDeOrcamentoPessoal();
                //var todosTickets = tickets.Todos(departamento);

                //TicketsDeProducao ticketis = new TicketsDeProducao();
                //var ticketsDeProducao = ticketis.Todos(departamento);

                //ticketis.Deletar(ticketsDeProducao);

                //var ticketsDeReceita = new TicketsDeReceita();
                //var listaTIcketsDeReceita = ticketsDeReceita.Todos(departamento);

                //ticketsDeReceita.Deletar(listaTIcketsDeReceita);

                //tickets.Deletar(todosTickets);

                Usuarios usuarios = new Usuarios();
                var ListaUsuarios = usuarios.Todos<Usuario>();

                foreach (var usuario in ListaUsuarios)
                {
                    if (usuario.Departamentos != null && usuario.Departamentos.Count > 0 && usuario.Departamentos.Any(d => d.Id == departamento.Id))
                    {
                        usuario.Departamentos.Remove(departamento);
                        usuarios.Salvar(usuario);
                    }

                }

                //Orcamentos orcamentos = new Orcamentos();
                //var listaOrcamentos = orcamentos.TodosPor(departamento);

                //orcamentos.Deletar(listaOrcamentos);

                //departamento.CentrosDeCusto = null;

                //repositorioDepartamento.Salvar(departamento);

                //DRES dres = new DRES();
                //var dre = dres.Obter(departamento);
                //dres.Deletar(dre);

                //AcordosDeConvencao acordos = new AcordosDeConvencao();
                //var acordoDeConvencao = acordos.ObterAcordoDeConvencao(departamento);
                //acordos.Deletar(acordoDeConvencao);

                //Insumos insumos = new Insumos();
                //var insumo = insumos.ObterInsumo(departamento);
                //insumos.Deletar(insumo);

                //NovosOrcamentosPessoais novosOrcamentos = new NovosOrcamentosPessoais();
                //var orcamentosPessoal = novosOrcamentos.Todos(departamento.Id);
                //novosOrcamentos.Deletar(orcamentosPessoal.ToList());

            }

            //var codigosDecentrosDeCusto = usuariosExcel.Select(x => x.CodigoCentroDeCusto).Distinct();
            //CentrosDeCusto centros = new CentrosDeCusto();
            //List<CentroDeCusto> centrosDeCusto = new List<CentroDeCusto>();
            //List<NovoOrcamentoPessoal> ListaNovosOrcamentos = new List<NovoOrcamentoPessoal>();
            //foreach (var codigoDeCentro in codigosDecentrosDeCusto)
            //{

            //    var centroDeCusto = centros.ObterPor(codigoDeCentro);
            //    if (centroDeCusto == null)
            //        Assert.Fail("Centro de Custo não encontrado");

            //    if (centroDeCusto.Funcionarios != null && centroDeCusto.Funcionarios.Count > 0 && centroDeCusto.Funcionarios.All(d => listaDepartamentos.Any(di => di.Id == d.Departamento.Id)))
            //    {
            //        centroDeCusto.Funcionarios = null;
            //        centros.Salvar(centroDeCusto);
            //    }

            //    if (centroDeCusto.Funcionarios != null && centroDeCusto.Funcionarios.Count > 0)
            //        Assert.Fail("Existe Funcionarios neste centro");

            //    centrosDeCusto.Add(centroDeCusto);

            //    NovosOrcamentosPessoais novosOrcamentos = new NovosOrcamentosPessoais();
            //    var orcamentosPessoal = novosOrcamentos.TodosPor(centroDeCusto.Id);

            //    ListaNovosOrcamentos.AddRange(orcamentosPessoal);

            //    //         centros.Deletar(centroDeCusto);

            //}

            //centros.Deletar(centrosDeCusto);
            repositorioDepartamento.Deletar(listaDepartamentos);
        }
        public void p_importar_funcionarios_hospitalar_do_excel()
        {
            string _conectionstring;
            _conectionstring = @"Provider=Microsoft.Jet.OLEDB.4.0;";
            _conectionstring += String.Format("Data Source={0};", "D:\\Funcionarios.xls");
            _conectionstring += "Extended Properties='Excel 8.0;HDR=NO;'";

            OleDbConnection cn = new OleDbConnection(_conectionstring);
            OleDbCommand cmd = new OleDbCommand("Select * from [Hospitalar$]", cn);
            cn.Open();

            OleDbDataReader reader = cmd.ExecuteReader();

            List<FuncionarioExcel> funcionarios = new List<FuncionarioExcel>();

            int i = 0;

            while (reader.Read())
            {
                if (i > 1)
                {
                    if (reader[0] == DBNull.Value)
                        break;

                    FuncionarioExcel funcionarioExcel = new FuncionarioExcel();

                    funcionarioExcel.Departamento = (string)reader[1];
                    funcionarioExcel.CodigoCentroDeCusto = (string)reader[2];
                    funcionarioExcel.NumeroMatricula = (string)reader[5];
                    funcionarioExcel.Nome = (string)reader[6];
                    funcionarioExcel.Funcao = (string)reader[7];
                    funcionarioExcel.Salario = (double)reader[8];
                    funcionarioExcel.Mes = (int)(double)reader[10];
                    funcionarioExcel.Ano = (int)(double)reader[11];

                    funcionarios.Add(funcionarioExcel);
                }
                i++;
            }

            Departamentos setores = new Departamentos();
            CentrosDeCusto centrosDeCusto = new CentrosDeCusto();
            List<Departamento> departamentos = new List<Departamento>();
            List<CentroDeCusto> centros = new List<CentroDeCusto>();

            foreach (var funcionarioExcel in funcionarios)
            {
                if (!departamentos.Any(d => d.Nome == funcionarioExcel.Departamento))
                    departamentos.Add(setores.ObterPor(funcionarioExcel.Departamento));

                if (!centros.Any(d => d.CodigoDoCentroDeCusto == funcionarioExcel.CodigoCentroDeCusto))
                    centros.Add(centrosDeCusto.ObterPor(funcionarioExcel.CodigoCentroDeCusto));

                var setor = departamentos.Where(d => d.Nome == funcionarioExcel.Departamento).FirstOrDefault();
                var centro = centros.Where(d => d.CodigoDoCentroDeCusto == funcionarioExcel.CodigoCentroDeCusto).FirstOrDefault();
                var funcionario = new Funcionario(setor)
                {
                    AnoAdmissao = funcionarioExcel.Ano,
                    Cargo = funcionarioExcel.Funcao,
                    DataAdmissao = funcionarioExcel.Mes,
                    Matricula = funcionarioExcel.NumeroMatricula,
                    Nome = funcionarioExcel.Nome,
                    Salario = funcionarioExcel.Salario
                };

                centro.Adicionar(funcionario);
            }

            centrosDeCusto.SalvarLista(centros);
        }