using Newtonsoft.Json; using System.IO.Compression; using System.Text.RegularExpressions; namespace DigitalSystem.Neuronas { public class Procesamiento_neuronas { private ZipArchive zfile = null; private static Procesamiento_neuronas _intance = null; public static Procesamiento_neuronas instance { get { if (_intance == null) { _intance = new Procesamiento_neuronas(); } return _intance; } } private Procesamiento_neuronas() { LoadZip(); } private void LoadZip() { if (zfile == null) { if (!Path.Exists("c:\\base conocimiento")) { Directory.CreateDirectory("c:\\base conocimiento"); } string zipPath = "c:\\base conocimiento\\neuronas.zip"; using (var fZip = new FileStream(zipPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) if (File.Exists(zipPath)) { zfile = new ZipArchive(fZip, ZipArchiveMode.Update); } else { zfile = new ZipArchive(fZip, ZipArchiveMode.Create); } } } public void SaveZip(string oldValue, string newValue, TipoNeurona tneurona) { if (!string.IsNullOrEmpty(oldValue) && !string.IsNullOrEmpty(newValue)) { string zipPath = "c:\\base conocimiento\\neuronas.zip"; using (var fZip = new FileStream(zipPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) using (var zFilev = new ZipArchive(fZip, ZipArchiveMode.Update)) { var nurExist = zFilev.Entries.FirstOrDefault(nuentry => nuentry.Name.StartsWith(oldValue.Replace(" ", "_").Replace(".", "_"))); if (nurExist == null) { var nuevoValor = zFilev.CreateEntry($"{oldValue.Replace(" ", "_").Replace(".", "_")}{DateTime.Now.Ticks.ToString()}"); using (var learningE = new StreamWriter(nuevoValor.Open())) { var arrFil = new List { oldValue, newValue, tneurona.ToString() }; learningE.Write(JsonConvert.SerializeObject(arrFil)); } } } } } public void SaveZip(string newValue) { if (!string.IsNullOrEmpty(newValue)) { string zipPath = "c:\\base conocimiento\\neuronas.zip"; using (var fZip = new FileStream(zipPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) using (var zFilev = new ZipArchive(fZip, ZipArchiveMode.Update)) { var nurExist = zFilev.Entries.FirstOrDefault(nuentry => nuentry.Name.StartsWith("ayuda")); if (nurExist == null) { var nuevoValor = zFilev.CreateEntry("ayuda"); using (var learningE = new StreamWriter(nuevoValor.Open())) { var arrFil = new List { newValue }; learningE.Write(JsonConvert.SerializeObject(arrFil)); } } else { var nuevoValor = zFilev.Entries.FirstOrDefault(e => e.Name == "ayuda"); List listaC = null; using (var fr = new StreamReader(nuevoValor.Open())) { string contenido = fr.ReadToEnd(); try { listaC = JsonConvert.DeserializeObject>(contenido); } catch { } } if (listaC == null) { listaC = new List { newValue }; } else { listaC.Add(newValue); } using (var learningE = new StreamWriter(nuevoValor.Open())) { learningE.Write(JsonConvert.SerializeObject(listaC)); } } } } } public void RemoveZip(string oldValue) { string zipPath = "c:\\base conocimiento\\neuronas.zip"; using (var fZip = new FileStream(zipPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) using (var zFilev = new ZipArchive(fZip, ZipArchiveMode.Update)) { var learningZip = zFilev.Entries.Where(item => item.Name.StartsWith(oldValue.Replace(" ", "_").Replace(".", "_"))); if(learningZip != null) { if (learningZip.Count() > 0) { int nEntry = learningZip.Count(); for (int i = 0; i < nEntry; i++) { try { learningZip.ToList()[i].Delete(); } catch (Exception ex) { } } } } } } public List GetZip(string oldValue) { var _GetZip = new List(); if (oldValue != "") { try { string zipPath = "c:\\base conocimiento\\neuronas.zip"; using (var fZip = new FileStream(zipPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite)) using (var zFilev = new ZipArchive(fZip, ZipArchiveMode.Update)) { var learningZip = zFilev.Entries.FirstOrDefault(item => item.Name.StartsWith(oldValue.Replace(" ", "_").Replace(".", "_"))); if (learningZip == null) { if (oldValue.Contains(" ")) { var palbra1 = oldValue.Split(' ')[0]; var palbra2 = oldValue.Split(' ').Length > 1?oldValue.Split(' ')[1]:""; var palbra3 = oldValue.Split(' ').Length > 2 ? oldValue.Split(' ')[2]:""; var palbra4 = oldValue.Split(' ').Length > 3 ? oldValue.Split(' ')[3]:""; learningZip = zFilev.Entries.FirstOrDefault(item => item.Name.StartsWith($"{palbra1}_{palbra2}_{palbra3}_{palbra4}")); if (learningZip == null) { learningZip = zFilev.Entries.FirstOrDefault(item => item.Name.StartsWith($"{palbra1}_{palbra2}_{palbra3}")); } if (learningZip == null) { learningZip = zFilev.Entries.FirstOrDefault(item => item.Name.StartsWith($"{palbra1}_{palbra2}")); } } } if (learningZip == null) { learningZip = zFilev.Entries.FirstOrDefault(item => oldValue.Replace(" ", "_").Replace(".", "_").StartsWith(Regex.Replace(item.Name, @"[\d]", ""))); } if (learningZip == null) { foreach (var palabras in oldValue.Split(' ')) { if (palabras.Length > 1 && palabras != "") { learningZip = zFilev.Entries.FirstOrDefault(item => palabras.StartsWith(Regex.Replace(item.Name, @"[\d]", ""))); if (learningZip != null) break; } } } if (learningZip != null) { using (var readZip = new StreamReader(learningZip.Open())) { var contenido = readZip.ReadToEnd(); _GetZip = JsonConvert.DeserializeObject>(contenido); _GetZip[1] = oldValue.Replace($"{_GetZip[0]} ", $"{_GetZip[1]} ").Replace($"{_GetZip[0]}, ", $"{_GetZip[1]} "); } } } } catch (Exception ex) { var logEx = ex.Message; } } return _GetZip; } } public enum TipoNeurona { remplaza_texto = 1 } }