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