from fastapi import APIRouter, Depends, status, Request, HTTPException
from sqlalchemy.orm import Session
from typing import List
from utils.get_db import get_db
from services.organization_registration_request_service import get_all_organization_registration_requests_from_db, create_organization_registration_request,update_organization_registration_request_status
from schema.orgnaization_registration_request_schema import CreateOrganizationRegistrationRequestResponse,OrganizationRegistrationRequestSchema,UpdateOrganizationRegistrationRequest
from fastapi.security import HTTPBearer
from utils.role_verification import verify_super_admin

security = HTTPBearer()


organization_registration_request_router = APIRouter()


@organization_registration_request_router.get('/',status_code=status.HTTP_200_OK, dependencies=[Depends(security), Depends(verify_super_admin)])
def get_all_organization_registration_requests(request:Request,db: Session = Depends(get_db), limit: int = 10, page: int = 0,status: str = None,search: str = None,order_by:str=None,):
    return get_all_organization_registration_requests_from_db(db,request, limit, page, status, search,order_by,)


@organization_registration_request_router.post('/registration-request',status_code=status.HTTP_201_CREATED, response_model=CreateOrganizationRegistrationRequestResponse)
def create_registration_request(request:OrganizationRegistrationRequestSchema,db: Session = Depends(get_db)):
    return create_organization_registration_request(request,db)


@organization_registration_request_router.patch('/update-registration-request',status_code=status.HTTP_200_OK, response_model=CreateOrganizationRegistrationRequestResponse, dependencies=[Depends(security), Depends(verify_super_admin)])
def update_registration_request(payload:UpdateOrganizationRegistrationRequest,request:Request,db: Session = Depends(get_db)):
    user = request.state.user
    return update_organization_registration_request_status(payload,user,db)