from flask import Blueprint, jsonify, request

from services.etat import (
    volumes_preleves_par_usage,
    provenance_eau_par_usage,
    captages_carte_data,
    captages_abandonnes, 
    qualite_eau_souterraine_data,
    step_data,
    step_chiffres_cles,
    qualite_eco_carte)

from services.retrospective import (
    evolution_prelevements,
    evolution_catnat_inondation,
    nombre_catnat_inondation
)

from services.anticiper import (
    population_ppri_data,
    habitations_ppri_data
)

from services.trajectoire import (
    projection_population,
    projection_conso_eau,
    calcul_economie_eau,
    evolution_prix_eau,
    repartition_prix_2024
)

indicateurs_bp = Blueprint("indicateurs", __name__)


def get_filters():
    """
    Récupère les filtres envoyés par le frontend
    """

    return {
        "epci": request.args.get("epci"),
        "communes": request.args.getlist("communes")
    }


@indicateurs_bp.route("/volumes-preleves")
def volumes_preleves():
    filters = get_filters()

    data = volumes_preleves_par_usage(**filters)

    return jsonify(data)


@indicateurs_bp.route("/evolution-prelevements")
def evolution_prelev():
    filters = get_filters()

    data = evolution_prelevements(**filters)

    return jsonify(data)


@indicateurs_bp.route("/evolution-catnat-inondation")
def evolution_catnat():
    filters = get_filters()

    data = evolution_catnat_inondation(**filters)

    return jsonify(data)


@indicateurs_bp.route("/nombre-catnat-inondation")
def nombre_catnat():
    filters = get_filters()

    data = nombre_catnat_inondation(**filters)

    return jsonify(data)


@indicateurs_bp.route("/provenance-eau")
def provenance_eau():
    filters = get_filters()

    data = provenance_eau_par_usage(**filters)

    return jsonify(data)

@indicateurs_bp.route("/captages-carte")
def captages_carte():

    filters = get_filters()

    data = captages_carte_data(**filters)

    return jsonify(data)

@indicateurs_bp.route("/captages-abandonnes")
def captages_abandon():

    filters = get_filters()

    data = captages_abandonnes(**filters)

    return jsonify(data)

@indicateurs_bp.route("/qualite-eau-souterraine")
def qualite_eau_souterraine_carte():

    filters = get_filters()

    data = qualite_eau_souterraine_data(**filters)

    return jsonify(data)

@indicateurs_bp.route("/step-carte")
def step_carte():

    filters = get_filters()

    data = step_data(**filters)

    return jsonify(data)

@indicateurs_bp.route("/step-chiffres-cles")
def step_chiffres():

    filters = get_filters()

    data = step_chiffres_cles(**filters)

    return jsonify(data)

@indicateurs_bp.route("/population-ppri")
def pop_ppri():

    filters = get_filters()

    data = population_ppri_data(**filters)

    return jsonify(data)

@indicateurs_bp.route("/habitations-ppri")
def habitations_ppri():

    filters = get_filters()

    data = habitations_ppri_data(**filters)

    return jsonify(data)

@indicateurs_bp.route("/projection-population")
def projection_population_api():

    filters = get_filters()

    data = projection_population(**filters)

    return jsonify(data)


@indicateurs_bp.route("/projection-conso-eau")
def projection_conso_eau_api():

    filters = get_filters()

    data = projection_conso_eau(**filters)

    return jsonify(data)


@indicateurs_bp.route("/economie-eau")
def economie_eau_api():

    filters = get_filters()

    data = calcul_economie_eau(**filters)

    return jsonify(data)

@indicateurs_bp.route("/prix-evolution")
def prix_evolution():

    filters = get_filters()

    data = evolution_prix_eau(**filters)

    return jsonify(data)


@indicateurs_bp.route("/prix-repartition")
def prix_repartition():

    filters = get_filters()

    data = repartition_prix_2024(**filters)

    return jsonify(data)


@indicateurs_bp.route("/qualite-eco-carte")
def qualite_eco_carte_api():

    filters = get_filters()

    data = qualite_eco_carte(**filters)

    return jsonify(data)