from fastapi import APIRouter, Depends, HTTPException
from models.development import DevelopmentCreate
from database import db
from dependencies.auth import get_current_user, TokenData
from utils.logger import log_action
import uuid

router = APIRouter()

@router.post("/developments")
async def create_development(
    dev: DevelopmentCreate,
    current_user: TokenData = Depends(get_current_user)
):
    if current_user.role != "admin":
        raise HTTPException(status_code=403, detail="Only admin can create developments.")

    dev_data = dev.dict()
    existing = await db.developments.find_one({"development_id": dev.development_id})
    if existing:
        raise HTTPException(status_code=400, detail="Development ID already exists.")

    result = await db.developments.insert_one(dev_data)
    
    op_id = str(uuid.uuid4())
    await log_action(
        action="create",
        collection="developments",
        document_id=str(result.inserted_id),
        user=current_user,
        after=dev_data,
        operation_id=op_id
    )

    
    return {"message": "Development created", "id": str(result.inserted_id)}
