예제 #1
0
        /// <summary>
        /// Retorna una lista de los libros mostrando ID y titulo
        /// </summary>
        /// <returns></returns>
        public IActionResult Listar()
        {
            var modelo = _stock.ObtenerTitulosDeEditorial(null);

            ViewData.Model = modelo;

            ViewBag.Encabezado = "Lista de TODOS los ID y Titulos";

            return(View());
        }
예제 #2
0
        public void Run()
        {
            Console.Clear();
            Header("biblioZ-cli", "Interface de linea de comando para BiblioZone");

            try
            {
                int opcion = Prompt.Menu("Seleccionar una de las acciones que queres realizar", new[]
                {
                    "Importar Libros desde --file y ejecutar las pruebas en memoria",
                    "Importar Libros desde --file y guardar en la DB",
                    "Importar Autores desde --file y mostrar en pantalla",
                    "Importar Autores desde --file y guardar en la DB",
                    "Consultas varias desde el contexto",
                    "Pruebas ingresando Libros"
                });

                //  TODO_HECHO obtener archivo desde la configuracion
                //
                //  --file=D:\CURSOS\libros.csv --tipo=libros
                //
                //  --file=D:\CURSOS\autores.csv --tipo=autores
                //
                //  NOTA: cuando ponemos el menu, no tiene sentido usar la opcion --tipo
                //
                //  string file = @"D:\CURSOS\PTR2020_Avanzado\listados\libros.csv";
                string file = _config["file"];

                if (opcion.In(0, 2, 1, 3) && file == null)
                {
                    throw new ApplicationException("La opcion seleccionada necesita que se pase un archivo en --file");
                }

                switch (opcion)
                {
                case 0:
                {
                    if (Prompt.Confirm($"Es el archivo correcto? ==> {file}"))
                    {
                        _logger.LogInformation("Iniciando el procesamiento del archivo de Libros {archivo}", file);

                        IEnumerable <Libro> lista = _imp.ImportarCSV(file);

                        _logger.LogInformation("Ejecutando pruebas en memoria...");

                        //  ejecutamos las pruebas sobre la lista importada (memoria)
                        //
                        Pruebas(lista);
                    }
                }
                break;

                case 1:
                {
                    if (Prompt.Confirm($"Es el archivo correcto? ==> {file}"))
                    {
                        _logger.LogInformation("Iniciando el procesamiento del archivo de Libros {archivo}", file);

                        IEnumerable <Libro> lista = _imp.ImportarCSV(file);

                        _logger.LogInformation("Iniciando el proceso de exportacion");

                        //  eliminamos los datos previos??
                        if (Prompt.Confirm("Eliminamos datos previos?", true,
                                           "WARNING Esta operacion eliminara todos los datos de las 3 tablas de Articulos!!"))
                        {
                            _exp.ClearDatabase();
                        }

                        //  pasamos la responsabilidad de la exportacion al componente adecuado...
                        //
                        _exp.ExportarListaDeLibros(lista);
                    }
                }
                break;

                case 2:
                {
                    if (Prompt.Confirm($"Es el archivo correcto? ==> {file}"))
                    {
                        _logger.LogInformation("Iniciando el procesamiento del archivo de Autores {archivo}", file);

                        var autoresTemp = _imp.ImportarAutores(file);

                        Console.WriteLine("Lista de autores importados...");

                        foreach (var item in autoresTemp)
                        {
                            Console.WriteLine($"Se importo el siguiente par (idLibro, autor) ==> {item}");

                            _logger.LogDebug("Se importo el siguiente par (idLibro, autor) ==> {tupla}", item);
                        }
                    }
                }
                break;

                case 3:
                {
                    if (Prompt.Confirm($"Es el archivo correcto? ==> {file}"))
                    {
                        _logger.LogInformation("Iniciando el procesamiento del archivo de Autores {archivo}", file);

                        var autoresTemp = _imp.ImportarAutores(file);

                        Console.WriteLine("Lista de autores importados...");

                        foreach (var item in autoresTemp)
                        {
                            Console.WriteLine($"Se importo el siguiente par (idLibro, autor) ==> {item}");

                            _logger.LogDebug("Se importo el siguiente par (idLibro, autor) ==> {tupla}", item);
                        }
                        _exp.ExportarListaDeAutores(autoresTemp);
                    }
                }
                break;

                case 13:
                {
                    string editorial = Prompt.Input <string>("Ingresar el nombre de una editorial");

                    Console.WriteLine($"Titulos para la Editorial {editorial}:\n");

                    //  foreach (string titulo in _exp.ObtenerTitulosDeEditorial(editorial)) { Console.WriteLine(titulo); }
                }
                break;

                case 4:
                {
                    Console.WriteLine($"Pruebas de consultas e ingresos varios para libros y autores:\n");

                    string criterio = Prompt.Input <string>("Ingresar criterio (titulo, editorial o autor)... ");

                    var libros = _stock.GetLibrosFromCriterio(criterio);

                    foreach (Libro libro in libros)
                    {
                        Console.WriteLine($"Titulo: {libro.Titulo} - Clave: {libro.ID_Real} - ISBN: {libro.ISBN13}");

                        Console.WriteLine("Autor(es) del libro...");
                        foreach (Autor autor in libro.Autores)
                        {
                            Console.WriteLine($"Nombre: {autor.Nombre} - Libros Escritos: {autor.Libros.Count}");
                        }
                    }

                    string editorial = Prompt.Input <string>("Ingresar un nombre de editorial (exacto) ");

                    var titulos = _stock.ObtenerTitulosDeEditorial(editorial);

                    Console.WriteLine($"Titulos editados por {editorial}");

                    foreach ((Guid id, string titulo)item in titulos)
                    {
                        Console.WriteLine($"Titulo: {item.titulo} - ID: {item.id}");
                    }

                    //if (libroResultado == null)
                    //{
                    //  //  crear nuevo libro...
                    //  libroResultado = new Libro()
                    //  {
                    //    ID = "1234",
                    //    Titulo = titulo,
                    //    Publicacion = null
                    //  };
                    //}
                    //else
                    //{
                    //  Console.WriteLine($"Autores del libro: {libroResultado.Titulo}");

                    //  foreach (var au in libroResultado.LibroAutores)
                    //    Console.WriteLine($"ID={au.ID_Autor} ; Nombre={au.Autor.Nombre}");
                    //}

                    //string autor = Prompt.Input<string>("Ingresar nombre del autor (exacto)");
                    //var autorResultado = _exp.GetAutor(autor);

                    //if (autorResultado == null)
                    //{
                    //  autorResultado = new Autor()
                    //  {
                    //    Nombre = autor
                    //  };
                    //}
                    //else
                    //{
                    //  Console.WriteLine($"Libros escritos por {autor}");

                    //  foreach (var li in autorResultado.AutorLibros)
                    //    Console.WriteLine($"{li.Libro.Titulo}");
                    //}

                    ////  PARA MEDITAR -- De que manera podemos evitar el UPDATE del Libro que no esta modificado??
                    ////
                    //libroResultado.LibroAutores.Add(new LibroAutor() { Libro = libroResultado, Autor = autorResultado });

                    //_exp.AgregarLibro(libroResultado);
                    ////  _exp.AgregarLibroAutor(new LibroAutor() { Libro = libroResultado, Autor = autorResultado });

                    //Console.WriteLine($"GUID: {libroResultado.ID_Real} Fecha: {libroResultado.Publicacion}");
                }
                break;
                }
            }
            catch (ApplicationException ex) when(ex.Data.Contains("archivo"))
            {
                Console.WriteLine($"Se produjo una excepcion {ex.Message} Archivo: {ex.Data["archivo"]}");
            }
            catch (NullReferenceException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.WriteLine();
                Console.WriteLine("[finally] ==> programa terminado!!");
            }
        }