import os
from flask import Flask, render_template, request, redirect, url_for, session, jsonify
from werkzeug.utils import secure_filename
import database
from database import Error
import uuid
from config import Configs

app = Flask(__name__)
app.config.from_object(Config)
os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True)

# Extensiones permitidas según el diseño
ALLOWED_EXTENSIONS_RECORDING = {'mp3', 'wav', 'aac', 'flac', 'mp4'}
ALLOWED_EXTENSIONS_IMAGE = {'jpg', 'jpeg', 'png', 'gif'}

def allowed_recording(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS_RECORDING

def allowed_image(filename):
    return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS_IMAGE

@app.route('/')
def login():
    return render_template('login.html')

# Login
@app.route('/login', methods=['GET', 'POST'])
def login_page():
    if request.method == 'POST':
        usuario = request.form.get('username')
        password = request.form.get('password')
        
        # Validación simple para la prueba
        if usuario == 'prueba' and password == 'prueba':
            return redirect(url_for('index')) # Existe def index():
        else:
            return "Usuario incorrecto", 401
            
    return render_template('login.html')

@app.route('/index', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        file = request.files.get('file')
        if file and allowed_recording(file.filename):

            # Guardar en MySQL como BLOB
            '''conn = database.get_db_connection()
            cursor = conn.cursor()
            file_data = file.read()
            cursor.execute("INSERT INTO archivos (nombre, contenido, tipo) VALUES (%s, %s, %s)",
                           (file.filename, file_data, file.content_type))
            conn.commit()
            cursor.close()
            conn.close()'''

            return redirect(url_for('analizar'))
    return render_template('index.html')

@app.route('/analizar', methods=['GET', 'POST'])
def analizar():
    if request.method == 'POST':

        # Captura de todos los campos
        # datos = request.form.get('indicador')...
        # Guardar en tabla 'evidencias'

        return redirect(url_for('ver_tabla'))
    return render_template('evidencias.html')

@app.route('/guardar', methods=['POST'])
def guardar():
    # PANEL 1: DATOS DEL CASO Y SOLICITANTE
    datos_caso = {
        'numero': request.form.get('caso_numero'),
        'noticia': request.form.get('caso_noticia'),
        'fecha_hora': request.form.get('caso_fecha_hora'),
        'tipo': request.form.get('caso_tipo'),
        'dni_investigador': request.form.get('caso_dni'),
        'tipificacion': request.form.get('caso_tipificacion'),
        'descripcion': request.form.get('caso_descripcion'),
        'jurisdiccion': request.form.get('caso_jurisdiccion')
    }


    '''
    
    # Recoger Panel 2, 3, etc (Listas)
    direcciones_lugares = request.form.getlist('lugar_direccion[]')
    geolocalizaciones = request.form.getlist('lugar_geo[]')

    # Bucle para guardar la relación 1:N
    # for i in range(len(direcciones_lugares)):
    #    direccion = direcciones_lugares[i]
    #    geo = geolocalizaciones[i]
    #    cursor.execute("INSERT INTO LUGAR_DILIGENCIA...", (geo, direccion...))
    '''
    '''try:
        conn = database.get_db_connection()
        cursor = conn.cursor()
        cursor.execute(
            "INSERT INTO tabla (nombre) VALUES (%s)",
            (nombre,)
        )
        conn.commit()
        cursor.close()
        conn.close()
    except Error as e:
        print("Error MySQL:", e)
        # manejar error / mostrar mensaje'''
    

    return render_template('tabla.html')

@app.route('/tabla')
def ver_tabla():
    # Consultar datos
    return render_template('tabla.html')

@app.route('/cuenta')
def cuenta():
    # Datos simulados para la cuenta
    usuario_info = {
        "nombre": "Esthe",
        "rol": "Analista Forense",
        "email": "esthe@forensic.com"
    }
    return render_template('cuenta.html', usuario=usuario_info)

if __name__ == '__main__':
    app.run(debug=True)

