示例#1
0
        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;
            }
        }
示例#2
0
        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;
            }
        }
示例#3
0
 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());
     }
 }
示例#4
0
        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());
        }
示例#5
0
        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;
            }
        }
示例#6
0
        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;
            }
        }