# import boto3
# import json
# import math
# import asyncio
# import random
#
# from datetime import datetime

from fastapi import APIRouter, Depends
from backend.app.dependencies import validate_token
# from backend.app.plan.schemas import PlanTriggerRequest
from backend.app.config import get_settings
# from sqlalchemy.orm import sessionmaker
from utils.logger import setup_logger
# from backend.app.db.connection import db_engine
# from backend.app.db.functions.recommendations_functions import create_scenario
# import pandas as pd
from backend.app.whlg.schema import WHLGElligibilityRequest

# from utils.s3 import read_csv_from_s3
# from sqlalchemy.dialects.postgresql import insert
# from backend.app.db.connection import get_db_session
# from backend.app.db.models.whlg import Whlg
# from backend.app.db.functions.whlg_functions import upsert_whlg_postcode

logger = setup_logger()

if get_settings().ENVIRONMENT == "local":
    router = APIRouter(
        prefix="/whlg",
        tags=["whlg"],
    )

else:
    router = APIRouter(
        prefix="/whlg",
        tags=["whlg"],
        dependencies=[Depends(validate_token)],
        responses={404: {"description": "Not found"}}
    )


@router.get("/")
async def whlg_entrypoint():
    # body needs to include postcode, UPRN [task ID?]
    #
    # Refer to the plan trigger route for code
    # 1) Create an event schema and store it in the schemas file
    # 2) Build the tasks functions
    # 3) Read in the funding csx. This can be found as such:
    # whlg_eligible_postcodes = read_csv_from_s3(
    #         bucket_name=get_settings().DATA_BUCKET,
    #         filepath="funding/whlg eligible postcodes.csv",
    #     )
    #     whlg_eligible_postcodes = pd.DataFrame(whlg_eligible_postcodes)
    # Check the postcode against this file
    # We need to store this somewhere????!!!??!??!?!?!?!??!??!??!??!??!??!??!??!??!??! Create a new table!
    # Update subtask to be complete
    # Once this is complete, build the logs stuff, add the cloudwatch logs ID to the database
    return {"hello": "from whlg"}


@router.post("/eligible")
async def eligiable(body: WHLGElligibilityRequest):
    # postcode = body.postcode or ""
    # postcode = postcode.lower().replace(" ", "")
    #
    # whlg_eligible_postcodes = read_csv_from_s3(
    #     bucket_name=get_settings().DATA_BUCKET,
    #     filepath="funding/whlg eligible postcodes.csv",
    # )
    # whlg_eligible_postcodes = pd.DataFrame(whlg_eligible_postcodes)
    # whlg_eligible_postcodes['Postcode'] = whlg_eligible_postcodes['Postcode'].str.replace(' ', '', regex=False)
    #
    # is_eligible = postcode in whlg_eligible_postcodes['Postcode'].values
    # return {"whlg_eligible": is_eligible}
    return None
