public void ProcessarArquivo_Eventos(Arquivo arquivo)
        {
            string path = Path.Combine(
                Directory.GetCurrentDirectory(), "wwwroot/textfiles", string.Concat("1_", arquivo.Nome));

            List <Evento> eventos = new List <Evento>();

            int contador = 0; //Informa o número da linha

            if (System.IO.File.Exists(path))
            {
                try
                {
                    using (StreamReader sr = new StreamReader(path))
                    {
                        string linha;

                        List <Loja> lojas = _db.Int_RH_Lojas.OrderBy(o => o.CNPJ).ToList();

                        Usuario  user = new Usuario();
                        int      mes, ano, id_user;
                        Holerite holerite = new Holerite();
                        string   tipo;

                        mes  = 0;
                        ano  = 0;
                        tipo = "";

                        while ((linha = sr.ReadLine()) != null)
                        {
                            contador += 1;

                            if (linha.EndsWith("#"))
                            {
                                id_user = int.Parse(linha.Substring(0, 7).Trim());
                                mes     = int.Parse(linha.Substring(10, 2).Trim());
                                ano     = int.Parse(linha.Substring(15, 4).Trim());
                                tipo    = linha.Substring(22, 20).Trim();
                                user    = _db.Int_RH_Usuarios.Find(id_user);

                                //holerite = _db.Int_RH_Holerites.Where(a => a.Usuario.Id == id_user && a.CompetenciaMes == mes &&
                                //a.CompetenciaAno == ano && a.Tipo == tipo).FirstOrDefault();
                            }
                            else
                            {
                                Evento evento = new Evento()
                                {
                                    User            = user,
                                    Competencia_Mes = mes,
                                    Competencia_Ano = ano,
                                    Tipo            = tipo,
                                    Codigo          = int.Parse(linha.Substring(47, 5).Trim()),
                                    Descricao       = linha.Substring(55, 50).Trim(),
                                    Referencia      = ConverterDouble(linha, 108, 10),
                                    Vencimento      = ConverterDouble(linha, 121, 10),
                                    Desconto        = ConverterDouble(linha, 134, 10),
                                    Holerite        = holerite
                                };

                                eventos.Add(evento);
                            }
                        }
                    }

                    if (eventos.Count > 0)
                    {
                        foreach (Evento evento in eventos)
                        {
                            try
                            {
                                // _db.Int_RH_Eventos.Add(evento);
                                _db.SaveChanges();
                                eventos.Remove(evento);
                            }catch (Exception exp)
                            {
                            }
                        }

                        _db.SaveChanges();
                    }

                    RegistrarProcessamento(arquivo.Id);
                }
                catch (Exception exp)
                {
                    TempData["EnviarArquivoErro"] = "ERRO: Funcionario: linha:" + contador + "Mensagem: " + exp.Message;
                    _db.Dispose();
                }
            }
        }
        public void ProcessarArquivo_Holerites(Arquivo arquivo)
        {
            string path = Path.Combine(
                Directory.GetCurrentDirectory(), "wwwroot/textfiles", string.Concat("1_", arquivo.Nome));

            List <Holerite> holerites = new List <Holerite>();

            int contador = 0; //Informa o número da linha

            if (System.IO.File.Exists(path))
            {
                try
                {
                    using (StreamReader sr = new StreamReader(path))
                    {
                        string linha;

                        List <Loja> lojas = _db.Int_RH_Lojas.OrderBy(o => o.CNPJ).ToList();


                        while ((linha = sr.ReadLine()) != null)
                        {
                            contador += 1;

                            int usuario = int.Parse(linha.Substring(0, 7).Trim());

                            Usuario user = _db.Int_RH_Usuarios.Find(usuario);

                            Holerite holerite = new Holerite
                            {
                                Usuario          = user,
                                Tipo             = linha.Substring(22, 20).Trim(),
                                Cbo              = int.Parse(linha.Substring(45, 7).Trim()),
                                Cargo            = linha.Substring(55, 50).Trim(),
                                CompetenciaMes   = int.Parse(linha.Substring(10, 2)),
                                CompetenciaAno   = int.Parse(linha.Substring(15, 4)),
                                TotalVencimentos = ConverterDouble(linha, 108, 10),
                                TotalDescontos   = ConverterDouble(linha, 121, 10),
                                TotalLiquido     = ConverterDouble(linha, 134, 10),
                                SalarioBase      = ConverterDouble(linha, 147, 10),
                                SalarioINSS      = ConverterDouble(linha, 160, 10),
                                BaseCalculoFGTS  = ConverterDouble(linha, 173, 10),
                                FGTSdoMes        = ConverterDouble(linha, 186, 10),
                                BaseCalculoIRRF  = ConverterDouble(linha, 199, 10),
                                FaixaIRRF        = linha.Substring(212, 20).Trim()
                            };

                            holerite.GerarId();

                            holerites.Add(holerite);
                        }
                    }

                    if (holerites.Count > 0)
                    {
                        foreach (Holerite holerite in holerites)
                        {
                            //_db.Int_RH_Usuarios.Add(holerite);
                        }

                        _db.SaveChanges();
                    }

                    RegistrarProcessamento(arquivo.Id);
                }
                catch (Exception exp)
                {
                    TempData["EnviarArquivoErro"] = "ERRO: Holerite: linha:" + contador + "Mensagem: " + exp.Message;
                    _db.Dispose();
                }
            }
        }