Beispiel #1
0
        public static List <ContratoAliquota> FilterAliquotas(HistoricoFuncionario histFunc, List <ContratoAliquota> contratosAliquotas)
        {
            List <ContratoAliquota> filtered = new List <ContratoAliquota>();

            foreach (var contAliq in contratosAliquotas)
            {
                if (histFunc.Contrato == null)
                {
                    if (contAliq.Cliente.Id == histFunc.Cliente.Id && contAliq.Ano == histFunc.Data.Year)
                    {
                        filtered.Add(contAliq);
                    }
                }
                else
                {
                    if (contAliq.Contrato != null)
                    {
                        if (contAliq.Contrato.Id == histFunc.Contrato.Id && contAliq.Ano == histFunc.Data.Year)
                        {
                            filtered.Add(contAliq);
                        }
                    }
                }
            }
            return(filtered);
        }
Beispiel #2
0
 public void InserirHistoricoFuncionario(HistoricoFuncionario historicoFuncionario)
 {
     this._historicoFuncionarioDAO.Insert(historicoFuncionario);
 }
Beispiel #3
0
 public void UpdateHistoricoFuncionario(int id, HistoricoFuncionario historicoFuncionario)
 {
     this._historicoFuncionarioDAO.Update <int>(id, historicoFuncionario);
 }
        private void button2_Click(object sender, EventArgs e)
        {
            HashSet <Funcionario> funcList  = new HashSet <Funcionario>(new FuncionarioComparer());
            HashSet <Cliente>     cliList   = new HashSet <Cliente>(new ClienteComparer());
            HashSet <Contrato>    contrList = new HashSet <Contrato>(new ContratoComparer());
            HashSet <Unidade>     unidList  = new HashSet <Unidade>(new UnidadeComparer());
            //HashSet<HistoricoFuncionario> hFuncList = new HashSet<HistoricoFuncionario>(new HistoricoFuncionarioComparer());
            List <HistoricoFuncionario> hFuncList = new List <HistoricoFuncionario>();
            Funcionario          func;
            Cliente              cli;
            Contrato             contr;
            Unidade              unid;
            HistoricoFuncionario hFunc;
            //Relativo a informações da Leitura
            int qtdeHistoricoFuncs           = 0;
            int linhasRepetidasDecimoSalario = 0;
            int linhasAntesMigracao          = 0;

            foreach (DataTable dt in this.result.Tables)
            {
                this.cboSheet.Items.Add(dt.TableName);
                qtdeHistoricoFuncs += dt.Rows.Count;

                for (var i = 0; i < dt.Rows.Count; i++)
                {
                    //só aceita registros a partir de 6/2014
                    if (checkTimeRule(dt.Rows[i][7], dt.Rows[i][8]))
                    {
                        func  = new Funcionario();
                        cli   = new Cliente();
                        contr = new Contrato();
                        unid  = new Unidade(); //passa o numero da linha atual para controle posterior
                        hFunc = new HistoricoFuncionario(func, cli, contr, unid);
                        func.Matriculation = dt.Rows[i][0].ToString();
                        func.Name          = dt.Rows[i][1].ToString();

                        if (!(dt.Rows[i][2] is DBNull))
                        {
                            func.DataAdmissao = (DateTime)dt.Rows[i][2];
                        }
                        if (!(dt.Rows[i][3] is DBNull))
                        {
                            func.DataRescisao = (DateTime)dt.Rows[i][3];
                        }
                        //Tratamento do Còdigo de Departamento
                        string strCodDepto = dt.Rows[i][4].ToString();
                        if (strCodDepto.Length % 3 == 2)
                        {
                            strCodDepto = String.Concat("0", strCodDepto);
                        }
                        else if (strCodDepto.Length % 3 == 1)
                        {
                            strCodDepto = String.Concat("00", strCodDepto);
                        }

                        unid.CodigoDepartamento = strCodDepto; //para posterior confronto e inclusao da unidade no Historico

                        if (strCodDepto.Length == 3)           //CLI
                        {
                            cli.CodigoSOLL = strCodDepto.Substring(0, 3);
                            cli.Name       = dt.Rows[i][5].ToString();
                        }
                        else if (strCodDepto.Length == 6)//CONTR
                        {
                            cli.CodigoSOLL   = strCodDepto.Substring(0, 3);
                            contr.CodigoSOLL = strCodDepto.Substring(3, 3);
                            cli.Name         = dt.Rows[i][5].ToString();
                            contr.Name       = dt.Rows[i][5].ToString();
                            contr.Cliente    = cli;
                        }
                        else//UNID
                        {
                            cli.CodigoSOLL   = strCodDepto.Substring(0, 3);
                            contr.CodigoSOLL = strCodDepto.Substring(3, 3);
                            unid.CodigoSOLL  = strCodDepto.Substring(6, 3);
                            cli.Name         = dt.Rows[i][5].ToString();
                            contr.Name       = dt.Rows[i][5].ToString();
                            unid.Name        = dt.Rows[i][5].ToString();
                            contr.Cliente    = cli;
                            unid.Contrato    = contr;
                        }

                        hFunc.CodigoDeptoSOLL = strCodDepto;
                        hFunc.NomeDeptoSOLL   = dt.Rows[i][5].ToString();
                        //hFunc.SalarioBase = getValidDouble((double)dt.Rows[i][6]);
                        //hFunc.DecimoSalario = getValidDouble((double)dt.Rows[i][15]);
                        hFunc.SalarioBase = (double)dt.Rows[i][6];
                        //hFunc.SalarioLiquido = (double)dt.Rows[i][7]; MUDOU
                        int mes = Convert.ToInt32(dt.Rows[i][7]);
                        int ano = Convert.ToInt32(dt.Rows[i][8]);
                        hFunc.Data     = new DateTime(ano, mes, 1);
                        hFunc.EmFerias = dt.Rows[i][9].ToString().ToUpper() == "S" ? true : false;

                        if (!(dt.Rows[i][10] is DBNull))
                        {
                            hFunc.InicioAquisicaoFerias = (DateTime)dt.Rows[i][10];
                        }

                        if (!(dt.Rows[i][11] is DBNull))
                        {
                            hFunc.FimAquisicaoFerias = (DateTime)dt.Rows[i][11];
                        }

                        hFunc.TotalProventos            = (double)dt.Rows[i][12];
                        hFunc.SalarioLiquido            = (double)dt.Rows[i][13];
                        hFunc.AdicInsalubridade         = (double)dt.Rows[i][14];
                        hFunc.AdicPericulosidade        = (double)dt.Rows[i][15];
                        hFunc.DecimoSalario             = (double)dt.Rows[i][16];
                        hFunc.DecimoSalarioProporcional = (double)dt.Rows[i][17];
                        hFunc.ValorFerias        = (double)dt.Rows[i][18];
                        hFunc.FeriasProporcional = (double)dt.Rows[i][19];
                        hFunc.MultaRescisoria    = (double)dt.Rows[i][20];

                        if (!funcList.Contains(func))
                        {
                            funcList.Add(func);
                        }
                        else
                        {
                            if (func.DataRescisao != null)
                            {
                                //Se contiver o elemento e a dataRescisao vier nos dados, vamos add nos attrs
                                bool finded = false;
                                foreach (var f in funcList)
                                {
                                    if (f.Equals(func))
                                    {
                                        finded = true;
                                        f.copyInfo(func);
                                    }
                                }
                                if (!finded)
                                {
                                    funcList.Add(func);
                                }
                            }
                        }

                        if (!cliList.Contains(cli))
                        {
                            cliList.Add(cli);
                        }

                        if (contr.Cliente != null) //Não teve contrato associado
                        {
                            if (!contrList.Contains(contr))
                            {
                                contrList.Add(contr);
                            }
                        }

                        if (unid.Contrato != null) //Não teve Unidade associada
                        {
                            if (!unidList.Contains(unid))
                            {
                                unidList.Add(unid);
                            }
                        }

                        if (hFuncList.Contains(hFunc))
                        {
                            //Se contiver o elemento, vasculhar os eventos e alterar o objeto.
                            bool finded = false;
                            foreach (var histFunc in hFuncList)
                            {
                                if (histFunc.Equals(hFunc))
                                {
                                    finded = true;
                                    histFunc.copyWorkerFinancialEvents(hFunc);
                                    linhasRepetidasDecimoSalario++;
                                }
                            }
                            if (!finded)
                            {
                                hFuncList.Add(hFunc);
                            }
                        }
                        else
                        {
                            hFuncList.Add(hFunc);
                        }
                    }
                    else
                    {
                        linhasAntesMigracao++;
                    }
                }
            }

            StringBuilder strBuilder = new StringBuilder();

            strBuilder.AppendLine("Dados carregados com sucesso: ");
            strBuilder.Append("Quantidade de Linhas de Histórico: ");
            strBuilder.Append(qtdeHistoricoFuncs);
            strBuilder.AppendLine();
            strBuilder.Append("Quantidade de Linhas Repetidas por 13o salário: ");
            strBuilder.Append(linhasRepetidasDecimoSalario);
            strBuilder.AppendLine();
            strBuilder.Append("Quantidade de Linhas Antes da Migração RH3: ");
            strBuilder.Append(linhasAntesMigracao);
            strBuilder.AppendLine();
            strBuilder.Append("Quantidade de Linhas de Histórico Salvas na Base de Dados: ");
            strBuilder.Append(qtdeHistoricoFuncs - linhasRepetidasDecimoSalario - linhasAntesMigracao);

            try
            {
                _facade.InserirFuncionarioList(funcList);
                Funcionario tempFuncionario;
                foreach (var funcionario in funcList)
                {
                    tempFuncionario = _facade.GetFuncionarioByMatricula(funcionario.Matriculation);
                    funcionario.Id  = tempFuncionario.Id;
                    foreach (var histFunc in hFuncList)
                    {
                        if (histFunc.Funcionario.Matriculation.Equals(funcionario.Matriculation))
                        {
                            histFunc.Funcionario.Id = funcionario.Id;
                        }
                    }
                }
                _facade.InserirClienteList(cliList); //o ideal seria pegar cada ID gerado e colocar no objeto Cliente da CliList passada por parametro
                //atualizar a lista de clientes com o ID gerado no banco
                //por algum motivo os Client que foram lidos pelo Excel e os Client da CliList não estão
                //sendo referenciados automaticamente para o mesmo espaço de memória, o que causa inconsistência na hora de atualizar
                //o histFunc...
                Cliente findedClient = null;
                foreach (var client in cliList)
                {
                    findedClient = _facade.GetClienteByIDSOLL(client.CodigoSOLL);
                    if (findedClient != null)
                    {
                        client.copyInfo(findedClient);
                    }
                    foreach (var histFunc in hFuncList)
                    {
                        if (histFunc.Cliente.CodigoSOLL.Equals(client.CodigoSOLL))
                        {
                            histFunc.Cliente.copyInfo(client);
                        }
                    }
                }
                //Tem que pegar de volta os que foram salvos no banco para representar o ID deles aqui e salvar
                //na tabela do Contrato e do HistoricoFuncionario.
                _facade.InserirContratoList(contrList);
                Contrato findedContrato = null;
                foreach (var contrato in contrList)
                {
                    findedContrato = _facade.GetContratoByIDSOLL(contrato.Cliente.Id, contrato.CodigoSOLL);
                    if (findedContrato != null)
                    {
                        contrato.copyInfo(findedContrato);
                    }
                    foreach (var histFunc in hFuncList)
                    {
                        if (histFunc.Contrato.Equals(contrato))
                        {
                            histFunc.Contrato.copyInfo(contrato);
                        }
                    }
                }
                _facade.InserirUnidadeList(unidList);
                Unidade findedUnidade = null;
                foreach (var unidade in unidList)
                {
                    findedUnidade = _facade.GetUnidadeByKey(unidade.Contrato.Id, unidade.CodigoSOLL);
                    if (findedUnidade != null)
                    {
                        unidade.copyInfo(findedUnidade);
                    }
                    foreach (var histFunc in hFuncList)
                    {
                        if (histFunc.Unidade.Equals(unidade))
                        {
                            histFunc.Unidade.copyInfo(unidade);
                        }
                    }
                }

                /*Unidade tempUnid;
                 * foreach (var unidade in unidList)
                 * {
                 *  tempUnid = _facade.GetUnidadeByKey(unidade.Contrato.Id, unidade.CodigoSOLL);
                 *  unidade.Id = tempUnid.Id;
                 *  unidade.Name = tempUnid.Name;
                 *  unidade.CodigoSOLL = tempUnid.CodigoSOLL;
                 *  foreach (var histFunc in hFuncList)
                 *  {
                 *      if (histFunc.Unidade.CodigoDepartamento.Equals(unidade.CodigoDepartamento))
                 *      {
                 *          histFunc.Unidade = unidade;
                 *      }
                 *  }
                 * }*/
                _facade.InserirHistoricoFuncionarioList(hFuncList);
                DialogResult dr = MessageBox.Show(strBuilder.ToString(), "Importação para Base de Dados", MessageBoxButtons.OK, MessageBoxIcon.Information);
                if (dr == DialogResult.OK)
                {
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocorreu o seguinte erro: " + ex.Message, "Importação para Base de Dados", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            //atualizar

            /*Funcionario novoFunc = new Funcionario(2202, "Juliano Lopes", "0002", new DateTime(2018, 5, 28));
             * _funcionarioFacade.UpdateFuncionario(1, novoFunc);
             * buscar();
             *
             * //Remover
             * _funcionarioFacade.DeleteFuncionario(1);
             * buscar();
             */
        }