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

int comprobarExiste(FILE *f, const char* titulo) {
    char busqTit[50], autor[50];
    float precio;
    int num = -1;

    rewind(f); 
    while (fgets(busqTit, 50, f) != NULL) {
        if (busqTit[strlen(busqTit) - 1] == '\n') {
            busqTit[strlen(busqTit) - 1] = '\0';
        }
    
        if (strcmp(busqTit, titulo) == 0) {
        fgets(autor, 50, f);
        fscanf(f, "%f %d", &precio, &num);
            return num;
            
        }
    }
    return -1;
}

void anadirLibro (FILE *f, const char* titulo, const char* autor, const float precio, const int num){
    fclose(f); 
    if((f=fopen("libros.txt", "a"))==NULL){ 
        fprintf(stderr, "El fichero %s no se ha podido abrir\n", "libros.txt");
        exit(-1);
    }

    fprintf(f,"\n%s\n", titulo);
    fprintf(f,"%s\n", autor);
    fprintf(f, "%.2f %d", precio, num);

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

int numLibrosDif(FILE *f) {
    char cadena[50];
    int cont = 0;

    rewind(f); 
    while (fgets(cadena, 50, f) != NULL) {
        cont++;
    }
    return (cont / 3);
}

void listarLibros(FILE *f) {
    char cadena[50];
    int cont = -1;

    rewind(f); 
    while (fgets(cadena, 50, f) != NULL) {
        if (cadena[strlen(cadena) - 1] == '\n') {
            cadena[strlen(cadena) - 1] = '\0';
        }
        cont++;
        if ((cont % 3) == 0) {
            printf("-%s.\n", cadena);
        }
    }
    printf("\n");
}

void cambiarPrecios(FILE *f, float porcentaje, int nDist) {
    libro* vLibros;
    vLibros = (libro*)malloc(sizeof(libro) * nDist);
    if (vLibros == NULL) {
        exit(-1);
    }

    rewind(f); 
    for (int i = 0; i < nDist; i++) {
        fgets(vLibros[i].titulo, 50, f);
        if (vLibros[i].titulo[strlen(vLibros[i].titulo) - 1] == '\n') {
            vLibros[i].titulo[strlen(vLibros[i].titulo) - 1] = '\0';
        }
        fgets(vLibros[i].autor, 50, f);
        if (vLibros[i].autor[strlen(vLibros[i].autor) - 1] == '\n') {
            vLibros[i].autor[strlen(vLibros[i].autor) - 1] = '\0';
        }
        fscanf(f, "%f %d \n", &vLibros[i].precio, &vLibros[i].unidades);
        vLibros[i].precio = vLibros[i].precio + vLibros[i].precio * porcentaje;
    }

    rewind(f); 
    for (int i = 0; i < nDist; i++) {
        fprintf(f, "%s\n", vLibros[i].titulo);
        fprintf(f, "%s\n", vLibros[i].autor);
        fprintf(f, "%.2f %d\n", vLibros[i].precio, vLibros[i].unidades);
    }

    free(vLibros);
}

void venderUnidades(FILE *f, const char* titulo, int nVentas){
    rewind(f);
    char busqTit[50], autor[50];
    float precio;
    int num = -1;

    rewind(f); 
    while (fgets(busqTit, 50, f) != NULL) {
        if (busqTit[strlen(busqTit) - 1] == '\n') {
            busqTit[strlen(busqTit) - 1] = '\0';
        }
    
        if (strcmp(busqTit, titulo) == 0) {
        fgets(autor, 50, f);
        fscanf(f, "%f %d", &precio, &num);
        
            
        }
    }
}