/// <summary> /// Metodo responsavel em Ler os Arquivos disponiveis nas pastas e Gravas as Informações no XML que contem as informacoes sobre o mesmo /// </summary> /// <author> /// Renan Borges - 25/06/2013 /// </author> /// <param name="ListaAnterior"></param> public void GravarVersoesWSDLs(List <ArquivoItem> ListaAnterior) { string pastaExecutavel = Propriedade.PastaExecutavel; string pastaWSDLProducao = pastaExecutavel + "\\WSDL\\Producao\\"; string pastaWSDLHomologacao = pastaExecutavel + "\\WSDL\\Homologacao\\"; string pastaXSD = pastaExecutavel + "\\schemas\\"; string[] ArquivosWSDLProducao = Directory.GetFiles(pastaWSDLProducao, "*.wsdl", SearchOption.AllDirectories); string[] ArquivosWSDLHomologacao = Directory.GetFiles(pastaWSDLHomologacao, "*.wsdl", SearchOption.AllDirectories); string[] ArquivosXSD = Directory.GetFiles(pastaXSD, "*.xsd", SearchOption.AllDirectories); List <ArquivoItem> ArquivosXML = new List <ArquivoItem>(); PreparaDadosWSDLs(ArquivosWSDLProducao, ArquivosXML); PreparaDadosWSDLs(ArquivosWSDLHomologacao, ArquivosXML); PreparaDadosWSDLs(ArquivosXSD, ArquivosXML); foreach (ArquivoItem item in ArquivosXML) { ArquivoItem itemAntigo = ListaAnterior.FirstOrDefault(a => a.Arquivo == item.Arquivo); item.Manual = itemAntigo == null ? false : itemAntigo.Manual; } if (File.Exists(XMLVersoesWSDL)) { File.Delete(XMLVersoesWSDL); } EscreverXmlWSDLs(ArquivosXML); }
/// <summary> /// Exporta os WSDLs e Schemas da DLL para as pastas do UniNFe /// </summary> public void load(Core.Empresa empresa) { List<ArquivoItem> ListArqsAtualizar = new List<ArquivoItem>(); UpdateWSDL(ListArqsAtualizar); try { System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom("NFe.Components.Wsdl.dll"); string[] x = ass.GetManifestResourceNames(); if (x.GetLength(0) > 0) { foreach (string s in x) { string fileoutput = null; switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Nfse: if (s.StartsWith("NFe.Components.Wsdl.NFse.")) fileoutput = s.Replace("NFe.Components.Wsdl.NFse.", Propriedade.PastaExecutavel + "\\"); break; } if (fileoutput == null) continue; if (fileoutput.ToLower().EndsWith(".xsd")) { /// Ex: NFe.Components.Wsdl.NFe.NFe.xmldsig-core-schema_v1.01.xsd /// /// pesquisa pelo nome do XSD int plast = fileoutput.ToLower().LastIndexOf("_v"); if (plast == -1) plast = fileoutput.IndexOf(".xsd") - 1; while (fileoutput[plast] != '.') --plast; string fn = fileoutput.Substring(plast + 1); fileoutput = fileoutput.Substring(0, plast).Replace(".", "\\") + "\\" + fn; } else fileoutput = (fileoutput.Substring(0, fileoutput.LastIndexOf('.')) + "#" + fileoutput.Substring(fileoutput.LastIndexOf('.') + 1)).Replace(".", "\\").Replace("#", "."); //fileoutput = fileoutput.Replace(NFe.Components.Propriedade.PastaExecutavel, "e:\\temp"); //System.Windows.Forms.MessageBox.Show(s + "\r\n"+fileoutput+"\r\n"+Path.GetFileName(fileoutput)); //continue; FileInfo fi = new FileInfo(fileoutput); ArquivoItem item = new ArquivoItem(); item = null; if (fi.Exists) //danasa 9-2013 { if (ListArqsAtualizar.Count > 0) { item = ListArqsAtualizar.FirstOrDefault(f => f.Arquivo == fi.Name); } } // A comparação é feita (fi.LastWriteTime != item.Data) // Pois intende-se que se a data do arquivo que esta na pasta do UniNFe for superior a data // de quando foi feita a ultima atualizacao do UniNfe, significa que ele foi atualizado manualmente e não devemos // sobrepor o WSDL ou SCHEMA do Usuario - Renan 26/03/2013 if (item == null || !(fi.LastWriteTime.ToString("dd/MM/yyyy") != item.Data.ToString("dd/MM/yyyy"))) { if (item == null || !item.Manual) { using (StreamReader FileReader = new StreamReader(ass.GetManifestResourceStream(s))) { if (!Directory.Exists(Path.GetDirectoryName(fileoutput))) Directory.CreateDirectory(Path.GetDirectoryName(fileoutput)); using (StreamWriter FileWriter = new StreamWriter(fileoutput)) { FileWriter.Write(FileReader.ReadToEnd()); FileWriter.Close(); } } } } else if (item != null) { item.Manual = true; } } } GravarVersoesWSDLs(ListArqsAtualizar); } catch (Exception ex) { Auxiliar.WriteLog(ex.ToString()); } }
/// <summary> /// Exporta os WSDLs e Schemas da DLL para as pastas do UniNFe /// </summary> public void load(Core.Empresa empresa) { List <ArquivoItem> ListArqsAtualizar = new List <ArquivoItem>(); UpdateWSDL(ListArqsAtualizar); try { System.Reflection.Assembly ass = System.Reflection.Assembly.LoadFrom("NFe.Components.Wsdl.dll"); string[] x = ass.GetManifestResourceNames(); if (x.GetLength(0) > 0) { foreach (string s in x) { string fileoutput = null; switch (Propriedade.TipoAplicativo) { case TipoAplicativo.Nfse: if (s.StartsWith("NFe.Components.Wsdl.NFse.")) { fileoutput = s.Replace("NFe.Components.Wsdl.NFse.", Propriedade.PastaExecutavel + "\\"); } break; } if (fileoutput == null) { continue; } if (fileoutput.ToLower().EndsWith(".xsd")) { /// Ex: NFe.Components.Wsdl.NFe.NFe.xmldsig-core-schema_v1.01.xsd /// /// pesquisa pelo nome do XSD int plast = fileoutput.ToLower().LastIndexOf("_v"); if (plast == -1) { plast = fileoutput.IndexOf(".xsd") - 1; } while (fileoutput[plast] != '.') { --plast; } string fn = fileoutput.Substring(plast + 1); fileoutput = fileoutput.Substring(0, plast).Replace(".", "\\") + "\\" + fn; } else { fileoutput = (fileoutput.Substring(0, fileoutput.LastIndexOf('.')) + "#" + fileoutput.Substring(fileoutput.LastIndexOf('.') + 1)).Replace(".", "\\").Replace("#", "."); } //fileoutput = fileoutput.Replace(NFe.Components.Propriedade.PastaExecutavel, "e:\\temp"); //System.Windows.Forms.MessageBox.Show(s + "\r\n"+fileoutput+"\r\n"+Path.GetFileName(fileoutput)); //continue; FileInfo fi = new FileInfo(fileoutput); ArquivoItem item = new ArquivoItem(); item = null; if (fi.Exists) //danasa 9-2013 { if (ListArqsAtualizar.Count > 0) { item = ListArqsAtualizar.FirstOrDefault(f => f.Arquivo == fi.Name); } } // A comparação é feita (fi.LastWriteTime != item.Data) // Pois intende-se que se a data do arquivo que esta na pasta do UniNFe for superior a data // de quando foi feita a ultima atualizacao do UniNfe, significa que ele foi atualizado manualmente e não devemos // sobrepor o WSDL ou SCHEMA do Usuario - Renan 26/03/2013 if (item == null || !(fi.LastWriteTime.ToString("dd/MM/yyyy") != item.Data.ToString("dd/MM/yyyy"))) { if (item == null || !item.Manual) { using (StreamReader FileReader = new StreamReader(ass.GetManifestResourceStream(s))) { if (!Directory.Exists(Path.GetDirectoryName(fileoutput))) { Directory.CreateDirectory(Path.GetDirectoryName(fileoutput)); } using (StreamWriter FileWriter = new StreamWriter(fileoutput)) { FileWriter.Write(FileReader.ReadToEnd()); FileWriter.Close(); } } } } else if (item != null) { item.Manual = true; } } } GravarVersoesWSDLs(ListArqsAtualizar); } catch (Exception ex) { Auxiliar.WriteLog(ex.ToString()); } }