// GET: TProblemas/Details/5 public ActionResult Details(int?id) { if (!User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Home")); } if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TProblema tProblema = db.TProblema.Find(id); if (tProblema == null) { return(HttpNotFound()); } DirectoryInfo directory = new DirectoryInfo(@"E:\Files\" + tProblema.IdProblema); if (Directory.Exists(@"E:\Files\" + tProblema.IdProblema)) { FileInfo[] rgFiles = directory.GetFiles("*.*"); List <string> items = rgFiles.Select(file => file.Name).ToList(); if (items.Count > 0) { ViewBag.items = items; } } return(View(tProblema)); }
// GET: TProblemas/Edit/5 public ActionResult Edit(int?id) { if (!User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Home")); } if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } TProblema tProblema = db.TProblema.Find(id); if (tProblema == null) { return(HttpNotFound()); } DirectoryInfo directory = new DirectoryInfo(@"E:\Files\" + tProblema.IdProblema); if (Directory.Exists(@"E:\Files\" + tProblema.IdProblema)) { FileInfo[] rgFiles = directory.GetFiles("*.*"); List <string> items = new List <string>(); foreach (var file in rgFiles) { items.Add(file.Name); } if (items.Count > 0) { ViewBag.items = items; } } var pp = db.TProblemaParametro.Where(p => p.IdProblema == id).ToList(); var parametros = db.TParametro.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); foreach (TProblemaParametro t in pp) { for (int j = 0; j < parametros.Count; j++) { if (parametros[j].IdParametro == t.IdParametro) { parametros.RemoveAt(j); j--; } } } ViewBag.parametros = parametros; ViewBag.IdUniverso = new SelectList(db.TUniverso, "IdUniverso", "NombUniverso", tProblema.IdUniverso); return(View(tProblema)); }
public ActionResult DeleteConfirmed(int id) { TProblema tProblema = db.TProblema.Find(id); db.TProblemaParametro.RemoveRange(db.TProblemaParametro.Where(p => p.IdProblema == tProblema.IdProblema)); db.TProblema.Remove(tProblema); db.SaveChanges(); DirectoryInfo directory = new DirectoryInfo(@"E:\Files\" + tProblema.IdProblema); if (Directory.Exists(@"E:\Files\" + tProblema.IdProblema)) { FileInfo[] dirs = directory.GetFiles("*.*"); foreach (var x in dirs) { System.IO.File.Delete(x.FullName); } directory.Delete(); } return(RedirectToAction("Index", new { id = tProblema.IdUniverso, p = tProblema.usuario })); }
public ActionResult Similares(Int32 id) { TProblema tProblema = db.TProblema.Find(id); ViewBag.titulo = tProblema.titulo; ViewBag.enunciado = tProblema.Enunciado; List <TProblema> probs = db.TProblema.Include(t => t.TProblemaParametro).Where(p => p.ejemplo && p.IdUniverso == tProblema.IdUniverso).ToList(); List <TProblema> fin = new List <TProblema>(); for (int i = 0; i < probs.Count; i++) { if (CompararParams(tProblema.TProblemaParametro.ToList(), probs[i].TProblemaParametro.ToList())) { fin.Add(probs[i]); } } if (fin.Count > 0) { ViewBag.probs = fin; } return(View()); }
//Complejidad private void SetComplexity(TProblema t, ICollection <TProblemaParametro> p) { p = new List <TProblemaParametro>(p.OrderBy(a => a.Valor)); if (p.Count == 1) { t.ComplejidadId = 1; } else { List <double> valores = new List <double>(); foreach (var val in p) { if (val.Valor != null) { valores.Add((double)val.Valor); } } double inc = valores[0]; double final = valores[valores.Count - 1]; List <int> resultados = new List <int>(); int cont = 1; TUniverso u = db.TUniverso.Find(t.IdUniverso); for (int i = 0; i < u.CantNiveles; i++) { object[] intervalo = Intervals(cont, final, inc);//obtener el nivel donde esta ubicado este valor. foreach (var par in p) { if (Ubicar(intervalo, par)) //saber si en que posicion del intervalo esta el parametro { resultados.Add(cont); // Agregarlo a la lista de resultados } } cont++; } resultados = new List <int>(resultados.OrderByDescending(i => i)); List <object[]> fin = new List <object[]>(); for (int i = 0; i < resultados.Count; i++) { List <int> repeticiones = new List <int>(); int n = resultados[0]; repeticiones.Add(n); for (int j = 1; j < resultados.Count; j++) { if (n == resultados[j]) { repeticiones.Add(n); resultados.RemoveAt(j); j--; } } resultados.RemoveAt(0); i--; object[] o = new object[2]; o[0] = n; o[1] = repeticiones.Count; fin.Add(o); }//Obtener repeticiones del parametro en un intervalo fin = new List <object[]>(fin.OrderByDescending(k => k[1])); if (Iguales(fin))//Si las cantidades son iguales { //Teoria de Desicion Laplace t.ComplejidadId = int.Parse(fin[fin.Count - 1][0].ToString()); } else { if (fin.Count == 2) { t.ComplejidadId = int.Parse(fin[1][0].ToString()); } else { t.ComplejidadId = int.Parse(fin[0][0].ToString()); } } } }
public ActionResult Edit([Bind(Include = "IdProblema,titulo,Enunciado,Solucion,IdUniverso,ejemplo,ComplejidadId,usuario")] TProblema tProblema, string json, HttpPostedFileBase file, HttpPostedFileBase imagen, HttpPostedFileBase documento) { if (ModelState.IsValid) { var probs = db.TProblema.Where(p => p.IdUniverso == tProblema.IdUniverso && p.IdProblema != tProblema.IdProblema && p.titulo == tProblema.titulo) .ToList(); if (probs.Count > 0) { return(RedirectToAction("Index", new { id = tProblema.IdUniverso, p = tProblema.usuario, e = tProblema.titulo })); } db.Entry(tProblema).State = EntityState.Modified; db.TProblemaParametro.RemoveRange(db.TProblemaParametro.Where(p => p.IdProblema == tProblema.IdProblema)); List <TProblemaParametro> t = ParseParametros(json); if (t.Count == 0) { return(RedirectToAction("Index", new { id = tProblema.IdUniverso, p = tProblema.usuario, e = "El problema debe tener un parametro o mas" })); } if (t.Count > 0) { tProblema.TProblemaParametro = t; SetComplexity(tProblema, tProblema.TProblemaParametro); } db.SaveChanges(); DirectorySecurity s = new DirectorySecurity("E:", AccessControlSections.Owner); DirectoryInfo directory1 = new DirectoryInfo("E:"); directory1.SetAccessControl(s); if (Directory.Exists(@"E\Files") == false) { Directory.CreateDirectory(directory1.Root.Name + @"\Files"); } Directory.CreateDirectory(directory1.Root.Name + @"Files\" + tProblema.IdProblema); if (file != null) { string ext = SaberExt(file.FileName); if (CompararCadenas(ext, "avi") || CompararCadenas(ext, "mp4")) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine( directory1.Root.Name + @"Files\" + tProblema.IdProblema, fileName); file.SaveAs(path); } } if (imagen != null) { string extimagen = SaberExt(imagen.FileName); if (CompararCadenas(extimagen, "jpg") || CompararCadenas(extimagen, "png") || CompararCadenas(extimagen, "jpeg")) { var fileName = Path.GetFileName(imagen.FileName); var path = Path.Combine(directory1.Root.Name + @"Files\" + tProblema.IdProblema, fileName); imagen.SaveAs(path); } } if (documento != null) { string extdoc = SaberExt(documento.FileName); if (extdoc.Contains("xls") || extdoc.Contains("doc") || CompararCadenas(extdoc, "pdf")) { var fileName = Path.GetFileName(documento.FileName); var path = Path.Combine(directory1.Root.Name + @"Files\" + tProblema.IdProblema, fileName); documento.SaveAs(path); } } return(RedirectToAction("Index", new{ id = tProblema.IdUniverso, p = tProblema.usuario })); } ViewBag.IdUniverso = new SelectList(db.TUniverso, "IdUniverso", "NombUniverso", tProblema.IdUniverso); return(View(tProblema)); }
public ActionResult Create([Bind(Include = "IdProblema,titulo,Enunciado,Solucion,IdUniverso,ejemplo,ComplejidadId,usuario")] TProblema tProblema, string json, HttpPostedFileBase file, HttpPostedFileBase imagen, HttpPostedFileBase documento) { List <TParametro> parametros; List <TUniverso> u; bool band = false; if (ModelState.IsValid) { try { var x1 = db.TProblema.Where( param => param.titulo == tProblema.titulo && param.IdUniverso == tProblema.IdUniverso).ToList(); if (x1.Count > 0) { ViewBag.IdUniverso = new SelectList(db.TUniverso, "IdUniverso", "NombUniverso", tProblema.IdUniverso); ViewBag.error = "Ya existe un problema con el mismo titulo en este Universo"; parametros = db.TParametro.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.parametros = parametros; u = db.TUniverso.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.nomb = u[0].NombUniverso; ViewBag.IdUniverso = tProblema.IdUniverso; return(View(tProblema)); } if (tProblema.ejemplo == false) { tProblema.Solucion = null; } List <TProblemaParametro> t = ParseParametros(json); if (t.Count == 0) { ViewBag.IdUniverso = new SelectList(db.TUniverso, "IdUniverso", "NombUniverso", tProblema.IdUniverso); ViewBag.error = "Agregue al menos un parametro para el problema"; parametros = db.TParametro.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.parametros = parametros; u = db.TUniverso.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.nomb = u[0].NombUniverso; ViewBag.IdUniverso = tProblema.IdUniverso; return(View(tProblema)); } if (t.Count > 0) { tProblema.TProblemaParametro = t; } SetComplexity(tProblema, tProblema.TProblemaParametro); db.TProblema.Add(tProblema); int x = db.SaveChanges(); band = true; } catch (Exception E) { ViewBag.IdUniverso = new SelectList(db.TUniverso, "IdUniverso", "NombUniverso", tProblema.IdUniverso); ViewBag.error = "Ha ocurrido un error cuando se creaba el problema. Revise los campos"; parametros = db.TParametro.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.parametros = parametros; u = db.TUniverso.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.nomb = u[0].NombUniverso; ViewBag.IdUniverso = tProblema.IdUniverso; return(View(tProblema)); } if (band == true) { DirectorySecurity s = new DirectorySecurity("E:", AccessControlSections.Owner); DirectoryInfo directory = new DirectoryInfo("E:"); directory.SetAccessControl(s); if (Directory.Exists(@"E\Files") == false) { Directory.CreateDirectory(directory.Root.Name + @"\Files"); } Directory.CreateDirectory(directory.Root.Name + @"Files\" + tProblema.IdProblema); if (file != null) { string ext = SaberExt(file.FileName); if (CompararCadenas(ext, "avi") || CompararCadenas(ext, "mp4")) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine( directory.Root.Name + @"Files\" + tProblema.IdProblema, fileName); file.SaveAs(path); } } if (imagen != null) { string extimagen = SaberExt(imagen.FileName); if (CompararCadenas(extimagen, "jpg") || CompararCadenas(extimagen, "png") || CompararCadenas(extimagen, "jpeg")) { var fileName = Path.GetFileName(imagen.FileName); var path = Path.Combine(directory.Root.Name + @"Files\" + tProblema.IdProblema, fileName); imagen.SaveAs(path); } } if (documento != null) { string extdoc = SaberExt(documento.FileName); if (extdoc.Contains("xls") || extdoc.Contains("doc") || CompararCadenas(extdoc, "pdf")) { var fileName = Path.GetFileName(documento.FileName); var path = Path.Combine(directory.Root.Name + @"Files\" + tProblema.IdProblema, fileName); documento.SaveAs(path); } } } return(RedirectToAction("Index", new { id = tProblema.IdUniverso, p = tProblema.usuario })); } ViewBag.IdUniverso = new SelectList(db.TUniverso, "IdUniverso", "NombUniverso", tProblema.IdUniverso); parametros = db.TParametro.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.parametros = parametros; u = db.TUniverso.Where(param => param.IdUniverso == tProblema.IdUniverso).ToList(); ViewBag.nomb = u[0].NombUniverso; return(View(tProblema)); }