# Optimized Python Code
# Archivo: DMPrjWarWarranty.py
# Ruta: src\App\Ventas_Module\VentasEUA\DataMaster\DMPrjWarWarranty.py
# Lenguaje: Python con Flask

from flask import Flask, render_template, send_file, abort, url_for, jsonify, request,session
import os
from dotenv import load_dotenv
import ftplib
from werkzeug.utils import secure_filename
import tempfile
from App.Security_Module.UserPassword import user_has_access
from App.Subir_Archivo import subir_archivo_ftp_desde_request,view_pdf_file,verificar_actualizar_archivos
from Consultas_SQL.Ventas.VentasEUA.DataMaster.DMPrjWarWarrantySQL import (
    get_Catalogo_de_garantias, insert_Catalogo_de_garantias,update_Catalogo_de_garantias,delete_Catalogo_de_garantias,item_exists,searchitems
    )
import requests
import os
# Cargar las variables de entorno desde el archivo .env
load_dotenv()
# /////////////////////////////////
#   Variables Generales
# ////////////////////////////////
ruta_pdf = "/domains/sycelephant.com/public_html/file/Ventas/EUA/DMITEMS/ADDACCESORY_SPRING"
carpeta = "/Ventas/EUA/DMITEMS/ADDACCESORY_SPRING/"
# /////////////////////////////////
#   Funciones Genericas
# ////////////////////////////////


# /////////////////////////////////
#   Varifica items Repetidos
# ////////////////////////////////
def existen_items(item):
    result = item_exists(item)
    if result:  # Verifica si result no es None (puede ser None si la consulta no encuentra nada)
        count = int(result[0]) # Accede al primer elemento de la tupla (índice 0) y lo convierte a entero.
    else:
        count = 0
    return count

# /////////////////////////////////
#   Funciones dedicadas
# ////////////////////////////////

def register_dmCatalogo_de_garantias_routes(app):
    """
    Registra las rutas para la gestión de departamentos directamente en la aplicación Flask.
    """
    # /////////////////////////////////
    #   Consultar Breakers
    # ////////////////////////////////
    @app.route("/ventas/data_master/Catalogo_de_garantias/listCatalogo_de_garantias", methods=["GET"])
    def list_Catalogo_de_garantias():
        """
        user_id = session.get('user_id')
        if not user_has_access(user_id, "Ventas","read"):
            message = "No tiene permisos para visualizar este archivo"
            return render_template("Security/AccessDened.html",message)
        """
        """Retorna la lista de get_Catalogo_de_garantias."""
        try:
            TIPOSCONTROLES = get_Catalogo_de_garantias()
            return jsonify(TIPOSCONTROLES), 200
        except Exception as e:
            return jsonify({"error": str(e)}), 500
    # Función para verificar si un item ya existe en la base de datos
    
   
    # /////////////////////////////////
    #   Guardar Breakers
    # ////////////////////////////////
    @app.route("/ventas/data_master/brakers/addCatalogo_de_garantias", methods=["POST"])
    def add_Catalogo_de_garantias():
        user_id = session.get('user_id')
        try:
            item = request.form.get("item")
            description = request.form.get("description")
            Percentage = request.form.get("Percentage")
            #print('------------------------------->','item',item,'description',description,'Percentage',Percentage)
            #if not all([item, description, Percentage]): 
            #    return jsonify({"error": "Todos los campos son obligatorios."}), 400
            
            # Verificar si el item ya existe
            if existen_items(item) == 1:
                return jsonify({"error": "El item ya existe en el catálogo."}), 400
            
            # Database Insert
            result = insert_Catalogo_de_garantias(item, description, Percentage)
            
            return jsonify({"message": "Catálogo de garantías agregado exitosamente."}), 201
        
        except Exception as e:
            return jsonify({"error": str(e)}), 500
    # /////////////////////////////////
    #   Actualizar inputs de  Breakers
    # ////////////////////////////////
    @app.route("/ventas/data_master/updateCatalogo_de_garantias", methods=["POST"])
    def update_Catalogo_de_garantias_route():
        
        """Actualiza un breaker en la base de datos."""
        try:
            data = request.get_json()
            item = data.get("item")
            description = data.get("description")
            Percentage = data.get("Percentage")

            if not all([item, description, Percentage]):
                return jsonify({"error": "Todos los campos son obligatorios."}), 400
            
            update_Catalogo_de_garantias(item, description, Percentage)
            return jsonify({"message": "Catálogo de garantías actualizado exitosamente."}), 200
        except Exception as e:
            return jsonify({"error": str(e)}), 500
        
    # /////////////////////////////////
    #   Eliminar Breakers
    # ////////////////////////////////
    @app.route("/ventas/data_master/Catalogo_de_garantias/deleteCatalogo_de_garantias", methods=["POST"])
    def delete_Catalogo_de_garantias_route():
        """Elimina un control de la base de datos."""
        try:
            data = request.get_json()
            item = data.get("item")
            if not item:
                return jsonify({"error": "El campo Item es obligatorio."}), 400
            delete_Catalogo_de_garantias(item)
            return jsonify({"message": "Catálogo de garantías eliminado exitosamente."}), 200
        except Exception as e:
            return jsonify({"error": str(e)}), 500
            
    # /////////////////////////////////
    #   Revisar la tabla CZE_BreakersCatalog y verificar si estan en archivos de fichas tecnicas  
    # ////////////////////////////////
    # /////////////////////////////////
  