public Proyecto CrearProyecto(string descripcion) { try { var proyecto = new Proyecto { Descripcion = descripcion, Fecha_modificacion = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), Actualizado = false }; ctx.Proyectos.Add(proyecto); ctx.SaveChanges(); var url = "wwwroot/uploads/" + proyecto.Descripcion; Directory.CreateDirectory(url); Log4NetProvider.logInfo("Gestion", "CrearProyecto", JsonConvert.SerializeObject(proyecto)); return(proyecto); } catch (Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "CrearProyecto", JsonConvert.SerializeObject(error)); return(null); throw; } }
public void EjecutarMoses(int id, bool merge) { try { CultureInfo provider = CultureInfo.InvariantCulture; var proyecto = ctx.Proyectos.Where(s => s.Id == id).First(); Log4NetProvider.logInfo("Gestion", "EjecutarMoses", JsonConvert.SerializeObject(proyecto)); var relProyectos = ctx.Proyecto_Memorias.Where(r => r.ProyectoId.Id == id).ToList(); foreach (var rel in relProyectos) { var memoria = ctx.Memorias.Where(m => m.Id == rel.Id).FirstOrDefault(); var lenguaje = ctx.Memorias.Include(i => i.LenguajeId).Where(m => m.Id == rel.Id).FirstOrDefault().LenguajeId; /*Comprobamos que la creacion del sistema de traduccion del lenguaje es necesaria, comparando la fecha con la de las memorias subidas */ string url = "wwwroot/moses/working/" + proyecto.Descripcion + "/" + lenguaje.CodLenguaje_origen + "-" + lenguaje.CodLenguaje_destino + "/mert-work/moses.ini"; if (System.IO.File.Exists(url)) { DateTime lastModified = System.IO.File.GetLastWriteTime(url); if (lastModified > DateTime.ParseExact(memoria.Fecha_modificacion, "dd/MM/yyyy HH:mm:ss", provider)) { continue; } } /*TODO: si no hay ficheros mergeados, cambiar el nombre del fichero de la url (merged-file) o por fecha */ var urlMemoria = "wwwroot/uploads/" + proyecto.Descripcion + "/" + lenguaje.CodLenguaje_origen + "-" + lenguaje.CodLenguaje_destino; string urlMemoria1 = ""; string urlMemoria2 = ""; if (merge == true) { urlMemoria1 = urlMemoria + "/" + "merged-file." + lenguaje.CodLenguaje_origen; urlMemoria2 = urlMemoria + "/" + "merged-file." + lenguaje.CodLenguaje_destino; } else { var carpeta = new DirectoryInfo(urlMemoria); var archivo1 = (from f in carpeta.GetFiles() where f.Extension.Contains(lenguaje.CodLenguaje_origen) where f.Name.Contains("20") orderby f.LastWriteTime descending select f).FirstOrDefault(); var archivo2 = (from f in carpeta.GetFiles() where f.Extension.Contains(lenguaje.CodLenguaje_destino) where f.Name.Contains("20") orderby f.LastWriteTime descending select f).FirstOrDefault(); urlMemoria1 = archivo1.FullName; urlMemoria2 = archivo2.FullName; } var uploadsPath1 = Path.Combine(_environment.WebRootPath, urlMemoria1); var uploadsPath2 = Path.Combine(_environment.WebRootPath, urlMemoria2); string folderName1 = proyecto.Descripcion + "/" + lenguaje.CodLenguaje_origen + "-" + lenguaje.CodLenguaje_destino; //string folderName2 = proyecto.Descripcion+"/"+lenguaje.CodLenguaje_destino+"-"+lenguaje.CodLenguaje_origen; OpenTerminal(uploadsPath1, lenguaje.CodLenguaje_origen, uploadsPath2, lenguaje.CodLenguaje_destino, folderName1); } } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "EjecutarMoses", JsonConvert.SerializeObject(error)); throw; } }
public async Task <IActionResult> Index(string codUsuario, string contrasena) { if (IsContrasenaCorrecta(codUsuario, contrasena)) { //return View("~/Views/Proyecto/Index.cshtml"); Log4NetProvider.logInfo("Acceso", "LoginCorrecto", codUsuario); return(RedirectToAction("Index", "Proyecto")); } else { ViewBag.error = "Usuario o contraseƱa incorrectos"; return(View()); } }
public async Task <IActionResult> Index(ICollection <IFormFile> files, string lang1, string lang2) { var urlFile1 = ""; var urlFile2 = ""; ViewBag.TipoUsuario = HttpContext.Session.GetTipoUsuario(); ViewBag.proyecto = HttpContext.Session.GetTituloProyecto(); var urlProyecto = "uploads/" + HttpContext.Session.GetTituloProyecto() + "/" + lang1 + "-" + lang2; var uploadsPath = Path.Combine(_environment.WebRootPath, urlProyecto); var nombreFichero = DateTime.Now.ToString("ddMMyyyyHHmmss"); if (InsertMemoria(lang1, lang2)) { if (files.ElementAt(0).Length > 0) { using (var fileStream = new FileStream(Path.Combine(uploadsPath, nombreFichero + "." + lang1), FileMode.Create)){ await files.ElementAt(0).CopyToAsync(fileStream); urlFile1 = fileStream.Name; } } if (files.ElementAt(1).Length > 0) { using (var fileStream = new FileStream(Path.Combine(uploadsPath, nombreFichero + "." + lang2), FileMode.Create)){ await files.ElementAt(1).CopyToAsync(fileStream); urlFile2 = fileStream.Name; } } MergeFiles(files, uploadsPath, lang1, lang2); } MemoriasLog memlog = new MemoriasLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), NOMBRE_FICHERO_ORIGEN = files.ElementAt(0).FileName, NOMBRE_FICHERO_DESTINO = files.ElementAt(1).FileName, LENGUAJES = lang1 + "-" + lang2 }; Log4NetProvider.logInfo("Memoria", "Subida", JsonConvert.SerializeObject(memlog)); ViewBag.ok = true; return(View()); }
public async Task <IActionResult> Index(IFormFile file) { try { ViewBag.proyecto = HttpContext.Session.GetTituloProyecto(); int grupoUltimo = 0; var ultimo = ctx.Glosarios.LastOrDefault(); if (ultimo != null) { grupoUltimo = ultimo.Grupo; } string texto = ""; using (var fs = file.OpenReadStream()) using (var ms = new MemoryStream()) { fs.CopyTo(ms); var filebytes = ms.ToArray(); string s = Convert.ToBase64String(filebytes); texto = System.Text.Encoding.UTF8.GetString(filebytes); } var proyecto = ctx.Proyectos.Where(p => p.Id == HttpContext.Session.GetIdProyecto()).First(); var partesTexto = texto.Split('\n'); var lenguajes = partesTexto[0].Split(','); for (int i = 1; i < partesTexto.Length - 1; i++) { var palabras = partesTexto[i].Split(','); for (int j = 0; j < lenguajes.Length; j++) { var glosario = new Glosario { CodLenguaje = lenguajes[j], Palabra = palabras[j], Grupo = grupoUltimo + i }; var proyecto_glosario = new Proyecto_Glosario { ProyectoId = proyecto, GlosarioId = glosario }; ctx.Glosarios.Add(glosario); ctx.Proyecto_Glosarios.Add(proyecto_glosario); } } ctx.SaveChanges(); GlosariosLog glLog = new GlosariosLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), FICHERO = file.FileName }; Log4NetProvider.logInfo("Glosario", "Subida", JsonConvert.SerializeObject(glLog)); ViewBag.TipoUsuario = HttpContext.Session.GetTipoUsuario(); ViewBag.proyecto = HttpContext.Session.GetTituloProyecto(); ViewBag.ok = true; return(View()); } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Glosario", "Index", JsonConvert.SerializeObject(error)); throw; } }
public void BorrarProyecto(int id) { try { /*Eliminamos todas las memorias y glosarios */ var prymen = ctx.Proyecto_Memorias.Include(i => i.MemoriaId).Where(s => s.ProyectoId.Id == id).ToList(); foreach (var obj in prymen) { var memoria = ctx.Memorias.Where(m => m.Id == obj.MemoriaId.Id).FirstOrDefault(); ctx.Proyecto_Memorias.Remove(obj); ctx.Memorias.Remove(memoria); } var prygl = ctx.Proyecto_Glosarios.Include(i => i.GlosarioId).Where(s => s.ProyectoId.Id == id).ToList(); foreach (var gl in prygl) { var glosario = ctx.Glosarios.Where(g => g.Id == gl.GlosarioId.Id).FirstOrDefault(); ctx.Proyecto_Glosarios.Remove(gl); ctx.Glosarios.Remove(glosario); } string query = "SELECT * FROM Proyectos WHERE id = {0}"; /*Borrado de las memorias subidas */ var titulo = ctx.Proyectos.FromSql(query, id).First().Descripcion; var url = "wwwroot/uploads/" + titulo; if (Directory.Exists(url)) { DirectoryInfo di = new DirectoryInfo(url); foreach (DirectoryInfo dir in di.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(url); } var urlCorpus = "wwwroot/moses/corpus/" + titulo; if (Directory.Exists(urlCorpus)) { DirectoryInfo diCorpus = new DirectoryInfo(urlCorpus); foreach (DirectoryInfo dir in diCorpus.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(urlCorpus); } var urlLm = "wwwroot/moses/lm/" + titulo; if (Directory.Exists(urlLm)) { DirectoryInfo diLm = new DirectoryInfo(urlLm); foreach (DirectoryInfo dir in diLm.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(urlLm); } var urlWorking = "wwwroot/moses/working" + titulo; if (Directory.Exists(urlWorking)) { DirectoryInfo diWorking = new DirectoryInfo(urlWorking); foreach (DirectoryInfo dir in diWorking.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(urlWorking); } var proyecto = ctx.Proyectos.Where(se => se.Id == id).First(); /*query ="DELETE FROM Proyectos WHERE id = {0}"; * var proyectos = ctx.Proyectos.FromSql(query, id);*/ ctx.Proyectos.Remove(proyecto); ctx.SaveChanges(); Log4NetProvider.logInfo("Gestion", "BorrarProyecto", JsonConvert.SerializeObject(proyecto)); } catch (Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.InnerException.Message }; Log4NetProvider.logError("Gestion", "BorrarProyecto", JsonConvert.SerializeObject(error)); throw; } }