private void OnChanged(object sender, FileSystemEventArgs e) { switch (e.ChangeType) { case WatcherChangeTypes.Created: { var arquivoXml = e.FullPath; try { bool isFileOpened = true; FileInfo xml = new FileInfo(e.FullPath); while (isFileOpened) { try { xml.OpenRead(); isFileOpened = false; } catch { isFileOpened = true; } } XmlDocument document = new XmlDocument(); document.Load(xml.OpenRead()); if (document.DocumentElement.Name == "nfeProc") { NFe NFe = new NFe(); NFe.Hash = xml.CreateHash(); var node = document.GetElementsByTagName("NFe")[0]; NFe.XmlNFe = new XmlNFe { DhChange = xml.LastWriteTimeUtc, XmlDocument = XElement.Parse(document.InnerXml) }; NFe.SetProperties(node); using (var db = new NFeDbContext(conn)) { INFeStore <NFe, NFeResult> store = new NFeStore <NFe, NFeDbContext>(db); NFeManager manager = new NFeManager(store); var result = manager.GravarNFe(NFe).Result; if (result.Succeeded) { if (eventLog1 != null) { eventLog1.WriteEntry($"O arquivo {xml.Name} foi gravado com sucesso.", EventLogEntryType.SuccessAudit, 1); } else { Console.WriteLine($"O arquivo {xml.Name} foi gravado com sucesso."); } } else { switch (result.NFeResultException) { case NFeResultException.DbUpdateConcurrencyException: { if (eventLog1 != null) { eventLog1.WriteEntry($"Erro: {xml.FullName} - " + $"{result.DbUpdateConcurrencyException.ToString()}", EventLogEntryType.Error, 2); } else { Console.WriteLine($"Erro: {xml.FullName} - " + $"{result.DbUpdateConcurrencyException.ToString()}"); } } break; case NFeResultException.DbUpdateException: { if (eventLog1 != null) { if (result.ErrorNumber != 2627) { eventLog1.WriteEntry($"Erro: {xml.FullName} - " + $"{result.DbUpdateException.InnerException.ToString()}", EventLogEntryType.Error, result.ErrorNumber); } } else { Console.WriteLine($"Erro: {xml.FullName} - " + $"{result.DbUpdateException.InnerException.ToString()}"); } } break; case NFeResultException.Exception: { if (eventLog1 != null) { eventLog1.WriteEntry($"Erro: {xml.FullName} - " + $"{result.Exception.ToString()}", EventLogEntryType.Error, 3); } else { Console.WriteLine($"Erro: {xml.FullName} - " + $"{result.Exception.ToString()}"); } } break; } } } } else { if (eventLog1 != null) { eventLog1.WriteEntry($"O arquivo xml {xml.Name} na pasta {xml.FullName.Replace(xml.Name, "")} " + $"não é um arquivo de NFe valido ou o arquivo não foi transmitido para a SEFAZ." + $"A Tag nfeProc não foi localizada.\n O arquivo não será gravado", EventLogEntryType.Error, 5); } else { Console.WriteLine($"O arquivo xml {xml.Name} na pasta {xml.FullName.Replace(xml.Name, "")} " + $"não é um arquivo de NFe valido ou o arquivo não foi transmitido para a SEFAZ." + $"A Tag nfeProc não foi localizada.\n O arquivo não será gravado"); } } } catch (XmlException err) { if (eventLog1 != null) { eventLog1.WriteEntry(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}", EventLogEntryType.Error, 6); } else { Console.WriteLine(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}"); } } catch (Exception err) { if (eventLog1 != null) { eventLog1.WriteEntry(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}", EventLogEntryType.Error, 7); } else { Console.WriteLine(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}"); } } } break; } }
private static void consultaSituacao() { XmlDocument document = new XmlDocument(); FileInfo xml = new FileInfo(@"T:\2018\2018-10\35180900152891000100550010000001591000208700.xml"); document.Load(xml.FullName); NFe NFe = new NFe(); var node = document.GetElementsByTagName("NFe")[0]; NFe.XmlNFe = new XmlNFe { DhChange = xml.LastWriteTimeUtc, XmlDocument = XElement.Parse(document.InnerXml) }; NFe.SetProperties(node); TConsSitNFe consSitNFe = new TConsSitNFe(); consSitNFe.chNFe = NFe.Id; consSitNFe.tpAmb = (TAmb)NFe.infNFe.ide.tpAmb; consSitNFe.versao = (TVerConsSitNFe)Enum.Parse(typeof(TVerConsSitNFe), string.Concat("Item", NFe.infNFe.versao.Replace(".", ""))); consSitNFe.xServ = TConsSitNFeXServ.CONSULTAR; XmlSerializer xs = new XmlSerializer(typeof(TConsSitNFe)); StringWriter stringWriter = new StringWriter(); xs.Serialize(stringWriter, consSitNFe); XmlDocument consSit = new XmlDocument(); consSit.LoadXml(stringWriter.ToString()); XmlNode nodeConsSit = consSit.GetElementsByTagName("consSitNFe")[0]; if (nodeConsSit != null) { X509Certificate2Collection certificates = new X509Certificate2Collection(); DirectoryInfo directoryCert = new DirectoryInfo(@"G:\Sieg\Certificados"); var certificados = directoryCert.GetFiles("x.pfx", SearchOption.AllDirectories).ToList(); foreach (var fileCert in certificados) { // certificates.Import() } certificates.Import(@"G:\Sieg\Certificados\0002-MOREIRA moreira.pfx", "moreira", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet); foreach (var key in certificates) { if (key.HasPrivateKey) { VerificarCnpj(key); } } //NFeConsultaProtocolo4Soap12Client nFeConsultaProtocolo = new NFeConsultaProtocolo4Soap12Client(); //nFeConsultaProtocolo.ClientCredentials.ClientCertificate.Certificate = cert; //var retorno = nFeConsultaProtocolo.nfeConsultaNF(nodeConsSit); //NFe.XmlNFe.retConsSitNFe = new TaxAuditCommunity.Domain.procNFe.TRetConsSitNFe.retConsSitNFe(); //NFe.XmlNFe.retConsSitNFe.SetProperties(retorno); //XmlSerializer RetConsSitxs = new XmlSerializer(typeof(TRetConsSitNFe)); //MemoryStream ms = new MemoryStream(); } }
public void Beging() { try { DirectoryInfo directory = new DirectoryInfo(hostPath); List <FileInfo> files = directory.GetFiles("*.xml", SearchOption.AllDirectories).ToList(); if (files.Count() > 0) { int i = 0; foreach (var xml in files.OrderByDescending(x => x.CreationTimeUtc)) { var arquivoXml = xml.FullName; XmlDocument document = new XmlDocument(); try { i++; document.Load(xml.FullName); if (document.DocumentElement.Name == "nfeProc") { NFe NFe = new NFe(); NFe.Hash = xml.CreateHash(); var node = document.GetElementsByTagName("NFe")[0]; NFe.XmlNFe = new XmlNFe { DhChange = xml.CreationTimeUtc, XmlDocument = XElement.Parse(document.InnerXml) }; NFe.SetProperties(node); using (var db = new NFeDbContext(conn)) { INFeStore <NFe, NFeResult> store = new NFeStore <NFe, NFeDbContext>(db); NFeManager manager = new NFeManager(store); var result = manager.GravarNFe(NFe).Result; if (result.Succeeded) { eventLog1.WriteEntry($"O arquivo {xml.Name} foi gravado com sucesso.", EventLogEntryType.SuccessAudit); } else { switch (result.NFeResultException) { case NFeResultException.DbUpdateConcurrencyException: { if (eventLog1 != null) { eventLog1.WriteEntry($"Erro: {xml.FullName} - " + $"{result.DbUpdateConcurrencyException.ToString()}", EventLogEntryType.Error, 1); } else { Console.WriteLine($"Erro: {xml.FullName} - " + $"{result.DbUpdateConcurrencyException.ToString()}"); } } break; case NFeResultException.DbUpdateException: { if (eventLog1 != null) { if (result.ErrorNumber != 2627) { eventLog1.WriteEntry($"Erro: {xml.FullName} - " + $"{result.DbUpdateException.InnerException.ToString()}", EventLogEntryType.Error, result.ErrorNumber); } } else { Console.WriteLine($"Erro: {xml.FullName} - " + $"{result.DbUpdateException.InnerException.ToString()}"); } } break; case NFeResultException.Exception: { if (eventLog1 != null) { eventLog1.WriteEntry($"Erro: {xml.FullName} - " + $"{result.Exception.ToString()}", EventLogEntryType.Error, 0); } else { Console.WriteLine($"Erro: {xml.FullName} - " + $"{result.Exception.ToString()}"); } } break; } } } } else { if (eventLog1 != null) { eventLog1.WriteEntry($"O arquivo xml {xml.Name} na pasta {xml.FullName.Replace(xml.Name, "")} " + $"não é um arquivo de NFe valido ou o arquivo não foi transmitido para a SEFAZ." + $"A Tag nfeProc não foi localizada.\n O arquivo não será gravado", EventLogEntryType.Error, 5); } else { Console.WriteLine($"O arquivo xml {xml.Name} na pasta {xml.FullName.Replace(xml.Name, "")} " + $"não é um arquivo de NFe valido ou o arquivo não foi transmitido para a SEFAZ." + $"A Tag nfeProc não foi localizada.\n O arquivo não será gravado"); } } } catch (XmlException err) { if (eventLog1 != null) { eventLog1.WriteEntry(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}", EventLogEntryType.Error, 6); } else { Console.WriteLine(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}"); } } catch (Exception err) { if (eventLog1 != null) { eventLog1.WriteEntry(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}", EventLogEntryType.Error, 7); } else { Console.WriteLine(err.InnerException == null ? $"Arquivo: {arquivoXml}\n {err.ToString()}" : $"Arquivo: {arquivoXml}\n{err.InnerException.ToString()}"); } } } } } catch (Exception e) { if (eventLog1 != null) { eventLog1.WriteEntry(e.InnerException == null ? e.ToString() : e.InnerException.ToString(), EventLogEntryType.Error, 8); } else { Console.WriteLine(e.InnerException == null ? e.ToString() : e.InnerException.ToString()); } } finally { if (eventLog1 != null) { eventLog1.WriteEntry("Concluido a verificação completa", EventLogEntryType.Warning, 9); } else { Console.WriteLine("Concluido a verificação completa"); } } }
private static void NewMethod() { conn = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).ConnectionStrings.ConnectionStrings["TaxAuditCommunity"].ConnectionString; hostPath = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).AppSettings.Settings["Path"].Value; try { DateTime lastsaveed = new DateTime(); Task.Run(async() => { using (var db = new NFeDbContext(conn)) { INFeStore <NFe, NFeResult> store = new NFeStore <NFe, NFeDbContext>(db); NFeManager manager = new NFeManager(store); lastsaveed = await manager.LastSaveed(); } }).Wait(); DirectoryInfo directory = new DirectoryInfo(hostPath); var files = directory.GetFiles("*.xml", SearchOption.AllDirectories) .Where(d => d.CreationTimeUtc >= lastsaveed) .OrderBy(d => d.CreationTimeUtc); if (files.Count() > 0) { int i = 0; foreach (var xml in files) { arquivoXml = xml.FullName; XmlDocument document = new XmlDocument(); try { i++; document.Load(xml.FullName); if (document.DocumentElement.Name == "nfeProc") { NFe NFe = new NFe(); var node = document.GetElementsByTagName("NFe")[0]; NFe.XmlNFe = new XmlNFe { DhChange = xml.LastWriteTimeUtc, XmlDocument = XElement.Parse(document.InnerXml) }; NFe.SetProperties(node); using (var db = new NFeDbContext(conn)) { INFeStore <NFe, NFeResult> store = new NFeStore <NFe, NFeDbContext>(db); NFeManager manager = new NFeManager(store); var result = manager.GravarNFe(NFe).Result; if (result.Succeeded) { Console.WriteLine($"Index: {i} - O arquivo {xml.Name} foi gravado com sucesso."); } else { switch (result.NFeResultException) { case NFeResultException.DbUpdateConcurrencyException: { Console.WriteLine($"Index: {i} - Erro: {xml.Name} - {result.DbUpdateConcurrencyException.ToString()}"); } break; case NFeResultException.DbUpdateException: { if (result.DbUpdateException.InnerException.ToString().Contains("truncated.")) { Console.WriteLine(result.DbUpdateException.Entries[0].Entity.ToString()); } Console.WriteLine($"Index: {i} - Erro: {xml.Name} - {result.DbUpdateException.InnerException.ToString()}"); } break; case NFeResultException.Exception: { Console.WriteLine($"Index: {i} - Erro: {xml.Name} - {result.Exception.ToString()}"); } break; } } } } else { Console.WriteLine($"Index: {i} - O arquivo xml {xml.Name} na pasta {xml.FullName.Replace(xml.Name, "")} " + $"não é um arquivo de NFe valido ou o arquivo não foi transmitido para a SEFAZ." + $"A Tag nfeProc não foi localizada.\n O arquivo não será gravado"); } } catch (XmlException e) { Console.WriteLine($"Erro: {xml.Name} - {e.ToString()}"); } catch (Exception e) { Console.WriteLine(e.InnerException == null ? $"Index: {i} - Arquivo: {arquivoXml}\n {e.ToString()}" : $"Arquivo: {arquivoXml}\n{e.InnerException.ToString()}"); } } } } catch (Exception e) { Console.WriteLine(e.InnerException == null ? $"Arquivo: {arquivoXml}\n {e.ToString()}" : $"Arquivo: {arquivoXml}\n{e.InnerException.ToString()}"); } }