# ========================================================================
# User ID API Endpoint
#

from fastapi import APIRouter
from api.core.EasyMessage import API_BaseRequest
from api.core.EasyMessage import API_BaseResponse
from api.core.EasySQL import EasySQL
from api.core.EasyUser import EasyUser

import json

print("SEARCH USER COUNT API ENDPOINT")

router = APIRouter()
sql_connection = EasySQL()
user = EasyUser()

class API_Request(API_BaseRequest):
    account_type: str = ""
    job_location: str = ""

class API_Response(API_BaseResponse):
    count: int = 0

@router.post("/users/search_users_count")
def search_users_count(request: API_Request):

    # Default Session Check
    api_response = API_Response()
    session_hash = request.session_hash
    username = user.authenticate_session(session_hash)

    if(username == False):
        api_response.success = False
        api_response.status_code = 403
        api_response.reason = "Login Failure"
        return api_response

    # Perform the SQL request
    sql_connection.db_init()
    sql_connection.db_connect()

    # Get all users
    all_users = sql_connection.select('users')
    filtered_users = []

    # Check criteria against search
    for account_user in all_users:
        users_attributes = json.loads(account_user['attributes'])
        user_type = users_attributes.get('account_type')
        user_location = users_attributes.get('post_code')
        user_range = users_attributes.get('location_range')
        user_ok = True

        if(request.account_type != ""):
            if(user_type != request.account_type):
                user_ok = False

        if(request.job_location != ""):
            pass

        if(user_ok):
            filtered_users.append(account_user)

    api_response.success = True
    api_response.status_code = 200
    api_response.reason = ""
    api_response.count = len(filtered_users)
    return api_response
