#include "funciones.h"
#include "estructuras.h"
#include <stdio.h>
#include <string.h>

int main() {
    FILE* f = NULL;
    int n = 1, numero, nDist;
    float porcentaje, precio;
    char cadena[50], autor[50];

    if ((f = fopen("libros.txt", "r+")) == NULL) {
        fprintf(stderr, "El fichero %s no se ha podido abrir\n", "libros.txt");
        return -1;
    }

    while (n != 9) {
        printf("BIENVENIDO AL MENU DE LA LIBRERÍA DE LA UCO. ELIGE UNA OPCION:\n\n");
        printf("1.  Comprobar existencia de un libro.\n");
        printf("2.  Introduce un nuevo libro en la base de datos.\n");
        printf("3.  Ver número de libros distintos (no vect).\n");
        printf("4.  Ver lista de libros (no vect).\n");
        printf("5.  Incrementar precio de libros. (struct)\n");
        printf("6.  Vender n unidades de un libro.\n");
        printf("7.  Crear fichero con titulos de los que haya menos de n unidades.\n");
        printf("8.  Borrar titulo sin stock (no vect).\n");
        printf("9.  Salir.\n");

        scanf("%d", &n);
        printf("\n\n");
        getchar(); 

        switch (n) {
            case 1:
                printf("Introduce el nombre del libro\n");
                fgets(cadena, 50, stdin);
                if (cadena[strlen(cadena) - 1] == '\n') {
                    cadena[strlen(cadena) - 1] = '\0';
                }
                numero = comprobarExiste(f, cadena);
                if (numero < 0) {
                    printf("No se ha encontrado el libro\n\n");
                } else {
                    printf("El numero de ejemplares disponibles es: %d \n \n", numero);
                }
            break;

            case 2:
                printf("Introduce el nombre del libro:\n");
                fgets(cadena, 50, stdin);
                if (cadena[strlen(cadena) - 1] == '\n') {
                    cadena[strlen(cadena) - 1] = '\0';
                }
                printf("Introduce el autor del libro:\n");
                fgets(autor, 50, stdin);
                if (autor[strlen(autor) - 1] == '\n') {
                    autor[strlen(autor) - 1] = '\0';
                }
                printf("Introduce el precio: \n");
                scanf("%f", &precio);
                printf("Introduce el numero de ejemplares: \n");
                scanf("%d", &numero);
                anadirLibro(f, cadena, autor, precio, numero);
                printf("Libro añadido con exito! \n\n");
            break;

            case 3:
                nDist = numLibrosDif(f);
                printf("Hay un total de %d libros diferentes \n\n", nDist);
            break;

            case 4:
                printf("LISTADO DE LIBROS:\n");
                listarLibros(f);
            break;

            case 5:
                nDist = numLibrosDif(f);
                printf("Dime cuanto por ciento le subimos el precio: (en decimal)\n");
                scanf("%f", &porcentaje);
                cambiarPrecios(f, porcentaje, nDist);
                printf("Precios cambiados con exito! \n\n");
            break;

            case 6:
                printf("Dime el libro que vas a vender \n");
                fgets(cadena, 50, stdin);
                if (cadena[strlen(cadena) - 1] == '\n') {
                    cadena[strlen(cadena) - 1] = '\0';
                }
                numero = comprobarExiste(f, cadena);
                if (numero < 0) {
                    printf("No se ha encontrado el libro\n\n");
                } else {
                    printf("Dime cuantos libros quieres vender: \n");
                    scanf("%d", numero);
                    venderUnidades(f,cadena,numero);
                    
                }
                

            default:
                printf("Elige una opcion dentro de los posibles \n");
                break;
        }
        rewind(f);
    }

    fclose(f); 
    return 0;
}