private string AgregarWatchlistArchivo(BNodo <string, Usuario> nodo, Usuario usuarioIngresado, Audiovisual audiovisual) { int contador; contador = 0; foreach (var item in nodo.Hijos) { AgregarWatchlistArchivo(nodo.Hijos[contador], usuarioIngresado, audiovisual); contador++; } foreach (var item in nodo.Entradas) { if (item.Apuntador == usuarioIngresado) { Audiovisual yaAgregado = item.Apuntador.WatchList.Where(x => x.Nombre == audiovisual.Nombre).FirstOrDefault(); if (yaAgregado == null) { item.Apuntador.WatchList.Add(audiovisual); } else { return("Este elemento ya se encuentra en su watchlist"); } } } return("El elemento fue agregado exitosamente."); }
private void LeerArchivo(Usuario usuario) { string filePath = @"C:\Users\" + Environment.UserName + @"\" + usuario.Username + @".watchlist"; try { using (StreamReader r = new StreamReader(filePath)) { string linea = r.ReadLine(); if (linea != "(Vacío)") { while (linea != null) { linea = linea.Replace(" ", ""); linea = linea.Replace(" ,", ","); var array = linea.Split(','); Audiovisual temp = new Audiovisual(); temp.Tipo = array[0]; temp.Nombre = array[1]; temp.Anio = int.Parse(array[2]); temp.Genero = array[3]; if (temp.Tipo == "Documental") { var audiovisualCatalogo = DefaultConnection.BArbolDocumentaryPorNombre.Search(temp.Nombre); if (audiovisualCatalogo != null) { temp.AudioVisualID = audiovisualCatalogo.Apuntador.AudioVisualID; AgregarWatchlistArchivo(DefaultConnection.BArbolUsuarios.Raiz, usuario, temp); } } else if (temp.Tipo == "Serie") { var audiovisualCatalogo = DefaultConnection.BArbolShowPorNombre.Search(temp.Nombre); if (audiovisualCatalogo != null) { temp.AudioVisualID = audiovisualCatalogo.Apuntador.AudioVisualID; AgregarWatchlistArchivo(DefaultConnection.BArbolUsuarios.Raiz, usuario, temp); } } else if (temp.Tipo == "Película") { var audiovisualCatalogo = DefaultConnection.BArbolMoviePorNombre.Search(temp.Nombre); if (audiovisualCatalogo != null) { temp.AudioVisualID = audiovisualCatalogo.Apuntador.AudioVisualID; AgregarWatchlistArchivo(DefaultConnection.BArbolUsuarios.Raiz, usuario, temp); } } linea = r.ReadLine(); } } } } catch { TempData["alertMessage"] = "El archivo no es válido "; } }
public ActionResult WatchList(int id) { var model = new List <Audiovisual>(); ConvertiraLista(ref model); Audiovisual temp = model.Where(x => x.AudioVisualID == id).FirstOrDefault(); AgregarWatchlist(DefaultConnection.BArbolUsuarios.Raiz, UsuarioIngresado, temp); return(View(DefaultConnection.BArbolUsuarios.Search(UsuarioIngresado.Username).Apuntador.WatchList)); }
private void LeerArbolAudiovisual(string[] lines, int nlinea, int grado, BNodo <string, Audiovisual> nodoPadre, BArbol <string, Audiovisual> arbol, int llave) { string[] linea = lines[nlinea].Split('|'); BNodo <string, Audiovisual> Nodo = new BNodo <string, Audiovisual>(grado); for (int i = (2 + grado); i < (linea.Count()); i++) { if (!(linea[i] == String.Format("{0, -66}", ""))) { linea[i] = linea[i].Replace(" ", ""); linea[i] = linea[i].Replace(" ,", ","); linea[i] = linea[i].Trim(); string[] lineaAudiovisual = linea[i].Split(','); Audiovisual nuevoAudiovisual = new Audiovisual(); nuevoAudiovisual.Tipo = lineaAudiovisual[0]; nuevoAudiovisual.Nombre = lineaAudiovisual[1]; nuevoAudiovisual.Anio = Convert.ToInt16(lineaAudiovisual[2]); nuevoAudiovisual.Genero = lineaAudiovisual[3]; nuevoAudiovisual.AudioVisualID = db.IDActual++; Entry <string, Audiovisual> entry = new Entry <string, Audiovisual>(); if (llave == 0) { entry.LLave = nuevoAudiovisual.Nombre; } else if (llave == 1) { entry.LLave = nuevoAudiovisual.Genero.PadRight(20) + "_" + nuevoAudiovisual.Nombre; } else { entry.LLave = nuevoAudiovisual.Anio.ToString().PadRight(4) + "_" + nuevoAudiovisual.Nombre; } entry.Apuntador = nuevoAudiovisual; Nodo.Entradas.Add(entry); } } for (int i = 2; i < (2 + grado); i++) { if (!(linea[i] == String.Format("{0, -3}", ""))) { LeerArbolAudiovisual(lines, (Convert.ToInt16(linea[i]) + 2), grado, Nodo, arbol, llave); } } if (nodoPadre == null) { arbol.Raiz = Nodo; } else { nodoPadre.Hijos.Add(Nodo); } }
public ActionResult AgregarAdmin([Bind(Include = "AudioVisualID,Tipo,Nombre,Anio,Genero")] Audiovisual audiovisual) { try { audiovisual.AudioVisualID = db.IDActual++; // TODO: Add insert logic here if (audiovisual.Tipo == "Serie") { if (DefaultConnection.BArbolShowPorNombre.Search(audiovisual.Nombre) == null) { DefaultConnection.BArbolShowPorNombre.Insertar(audiovisual.Nombre, audiovisual); string llave = audiovisual.Anio.ToString() + "_" + audiovisual.Nombre; DefaultConnection.BArbolShowPorAnio.Insertar(llave, audiovisual); llave = audiovisual.Genero.PadRight(20) + "_" + audiovisual.Nombre; DefaultConnection.BArbolShowPorGenero.Insertar(llave, audiovisual); } } else if (audiovisual.Tipo == "Película") { if (DefaultConnection.BArbolMoviePorNombre.Search(audiovisual.Nombre) == null) { DefaultConnection.BArbolMoviePorNombre.Insertar(audiovisual.Nombre, audiovisual); string llave = audiovisual.Anio.ToString() + "_" + audiovisual.Nombre; DefaultConnection.BArbolMoviePorAnio.Insertar(llave, audiovisual); llave = audiovisual.Genero.PadRight(20) + "_" + audiovisual.Nombre; DefaultConnection.BArbolMoviePorGenero.Insertar(llave, audiovisual); } } else if (audiovisual.Tipo == "Documental") { if (DefaultConnection.BArbolDocumentaryPorNombre.Search(audiovisual.Nombre) == null) { DefaultConnection.BArbolDocumentaryPorNombre.Insertar(audiovisual.Nombre, audiovisual); string llave = audiovisual.Anio.ToString() + "_" + audiovisual.Nombre; DefaultConnection.BArbolDocumentaryPorAnio.Insertar(llave, audiovisual); llave = audiovisual.Genero.PadRight(20) + "_" + audiovisual.Nombre; DefaultConnection.BArbolDocumentaryPorGenero.Insertar(llave, audiovisual); } } else { TempData["alertMessage"] = "No es un tipo valido. (Documental, Pelicula, Serie) "; return(RedirectToAction("AgregarAdmin")); } return(RedirectToAction("InterfazAdmin")); } catch { return(View()); } }
public ActionResult Delete(int id, FormCollection collection) { try { // TODO: Add delete logic here var model = new List <Audiovisual>(); ConvertiraLista(ref model); Audiovisual temp = model.Where(x => x.AudioVisualID == id).FirstOrDefault(); EliminarWatchlist(DefaultConnection.BArbolUsuarios.Raiz, UsuarioIngresado, temp); return(RedirectToAction("MostrarWatchList")); } catch { return(View()); } }
public ActionResult Delete(int id, FormCollection collection) { try { // TODO: Add delete logic here var model = new List <Audiovisual>(); ConvertiraLista(ref model); Audiovisual temp = model.Where(x => x.AudioVisualID == id).FirstOrDefault(); if (temp.Tipo == "Documental") { DefaultConnection.BArbolDocumentaryPorNombre.Eliminar(temp.Nombre); string llave = temp.Anio.ToString() + "_" + temp.Nombre; DefaultConnection.BArbolDocumentaryPorAnio.Eliminar(llave); llave = temp.Genero.PadRight(20) + "_" + temp.Nombre; DefaultConnection.BArbolDocumentaryPorGenero.Eliminar(llave); } else if (temp.Tipo == "Serie") { DefaultConnection.BArbolShowPorNombre.Eliminar(temp.Nombre); string llave = temp.Anio.ToString() + "_" + temp.Nombre; DefaultConnection.BArbolShowPorAnio.Eliminar(llave); llave = temp.Genero.PadRight(20) + "_" + temp.Nombre; DefaultConnection.BArbolShowPorGenero.Eliminar(llave); } else { DefaultConnection.BArbolMoviePorNombre.Eliminar(temp.Nombre); string llave = temp.Anio.ToString() + "_" + temp.Nombre; DefaultConnection.BArbolMoviePorAnio.Eliminar(llave); llave = temp.Genero.PadRight(20) + "_" + temp.Nombre; DefaultConnection.BArbolMoviePorGenero.Eliminar(llave); } return(RedirectToAction("InterfazAdmin")); } catch { return(View()); } }
private string AgregarWatchlist(BNodo <string, Usuario> nodo, Usuario usuarioIngresado, Audiovisual audiovisual) { int contador; contador = 0; foreach (var item in nodo.Hijos) { AgregarWatchlist(nodo.Hijos[contador], usuarioIngresado, audiovisual); contador++; } foreach (var item in nodo.Entradas) { if (item.Apuntador == usuarioIngresado) { Audiovisual yaAgregado = item.Apuntador.WatchList.Where(x => x.Nombre == audiovisual.Nombre).FirstOrDefault(); if (yaAgregado == null) { item.Apuntador.WatchList.Add(audiovisual); string rutaWatchlistUsuario = @"C:\Users\" + Environment.UserName + @"\" + item.Apuntador.Username + @".watchlist"; string audiovisualobject = item.Apuntador.WatchList.Last().ToFixedSizeString(); if (item.Apuntador.WatchList.Count() == 1) { AgregarListaUsuario(rutaWatchlistUsuario, false, audiovisualobject); } else { AgregarListaUsuario(rutaWatchlistUsuario, true, audiovisualobject); } } else { return("Este elemento ya se encuentra en su watchlist"); } } } return("El elemento fue agregado exitosamente."); }
private void EscribirArbolAudiovisual(BNodo <string, Audiovisual> nodo, int grado, ref int contador, int contadorPadre, ref StreamWriter writer, string ruta, BNodo <string, Audiovisual> raiz) { string linea; linea = $"{contador.ToString("000;-000")}|{contadorPadre.ToString("000;-000")}"; for (int i = 0; i < grado; i++) { linea += $"|{String.Format("{0, -3}", "")}"; } for (int i = 0; i < nodo.Entradas.Count(); i++) { Audiovisual item = nodo.Entradas[i].Apuntador; linea += $"|{item.ToFixedSizeString()}"; } for (int i = nodo.Entradas.Count(); i < (grado - 1); i++) { linea += $"|{String.Format("{0, -66}", "")}"; } writer.WriteLine(linea); if (nodo != raiz) { writer.Close(); ReescribirArchivo(contadorPadre, contador, ruta); writer = new StreamWriter(ruta, true); } contador++; int contadorHijos; contadorHijos = 0; contadorPadre = contador - 1; foreach (var item in nodo.Hijos) { EscribirArbolAudiovisual(nodo.Hijos[contadorHijos], grado, ref contador, contadorPadre, ref writer, ruta, raiz); contadorHijos++; } }
private void EliminarWatchlist(BNodo <string, Usuario> nodo, Usuario usuarioIngresado, Audiovisual audiovisual) { int contador; contador = 0; foreach (var item in nodo.Hijos) { EliminarWatchlist(nodo.Hijos[contador], usuarioIngresado, audiovisual); contador++; } foreach (var item in nodo.Entradas) { if (item.Apuntador == usuarioIngresado) { item.Apuntador.WatchList.Remove(audiovisual); string rutaWatchlistUsuario = @"C:\Users\" + Environment.UserName + @"\" + item.Apuntador.Username + @".watchlist"; EliminarListaUsuario(rutaWatchlistUsuario, usuarioIngresado); } } }
public ActionResult CargaArchivoJSON(HttpPostedFileBase file) { Archivo modelo = new Archivo(); string filePath = string.Empty; try { if (file != null) { string ruta = Server.MapPath("~/Temp/"); if (!Directory.Exists(ruta)) { Directory.CreateDirectory(ruta); } filePath = ruta + Path.GetFileName(file.FileName); string extension = Path.GetExtension(file.FileName); file.SaveAs(filePath); using (StreamReader r = new StreamReader(filePath)) { string json = r.ReadToEnd(); dynamic array = JsonConvert.DeserializeObject(json); foreach (var item in array) { dynamic itemtemp = JsonConvert.DeserializeObject(item.Value.ToString()); Audiovisual temp = new Audiovisual(); temp.Tipo = itemtemp.Tipo.Value; temp.Nombre = itemtemp.Nombre.Value; temp.Anio = Convert.ToInt16(itemtemp.Anio.Value); temp.Genero = itemtemp.Genero.Value; temp.AudioVisualID = ++db.IDActual; if (temp.Tipo == "Serie") { if (DefaultConnection.BArbolShowPorNombre.Search(temp.Nombre) == null) { DefaultConnection.BArbolShowPorNombre.Insertar(temp.Nombre, temp); string llave = temp.Anio.ToString().PadRight(4) + "_" + temp.Nombre; DefaultConnection.BArbolShowPorAnio.Insertar(llave, temp); llave = temp.Genero.PadRight(20) + "_" + temp.Nombre; DefaultConnection.BArbolShowPorGenero.Insertar(llave, temp); } } else if (temp.Tipo == "Película") { if (DefaultConnection.BArbolMoviePorNombre.Search(temp.Nombre) == null) { DefaultConnection.BArbolMoviePorNombre.Insertar(temp.Nombre, temp); string llave = temp.Anio.ToString().PadRight(4) + "_" + temp.Nombre; DefaultConnection.BArbolMoviePorAnio.Insertar(llave, temp); llave = temp.Genero.PadRight(20) + "_" + temp.Nombre; DefaultConnection.BArbolMoviePorGenero.Insertar(llave, temp); } } else if (temp.Tipo == "Documental") { if (DefaultConnection.BArbolDocumentaryPorNombre.Search(temp.Nombre) == null) { DefaultConnection.BArbolDocumentaryPorNombre.Insertar(temp.Nombre, temp); string llave = temp.Anio.ToString().PadRight(4) + "_" + temp.Nombre; DefaultConnection.BArbolDocumentaryPorAnio.Insertar(llave, temp); llave = temp.Genero.PadRight(20) + "_" + temp.Nombre; DefaultConnection.BArbolDocumentaryPorGenero.Insertar(llave, temp); } } } } modelo.SubirArchivo(ruta, file); } ViewBag.Error = modelo.error; ViewBag.Correcto = modelo.Confirmacion; return(RedirectToAction("InterfazAdmin")); } catch { TempData["alertMessage"] = "El archivo no es válido "; return(RedirectToAction("CargaArchivoJSON")); } }