from typing import List
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.api.civil import schemas
from app.api.civil.schemas import CivilCreate
from app.api.civil.service import CivilService
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTPayloadSchema, get_current_user

civil_router = APIRouter()

@civil_router.post("/civil", response_model_exclude_none=True)
async def create_civil_entry(request: CivilCreate,db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return await CivilService(db, token).create_civil(request)

@civil_router.get("/civil/{group_id}", response_model_exclude_none=True)
async def get_civil_entry(group_id: int,db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return await CivilService(db, token).get_civil_by_group_id(group_id)

@civil_router.get("/subtotal/{group_id}")
def subtotal(group_id: int, db: Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return CivilService(db, token).get_subtotal_by_store_format(group_id)

@civil_router.put("/update_civil", response_model_exclude_none=True)
async def update_civil(request:List[schemas.CivilUpdate], db:Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return await CivilService(db,token).update(request)

@civil_router.delete("/delete_civil", response_model_exclude_none=True)
async def delete_civil(civil_id:int, db:Session = Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return await CivilService(db,token).delete(civil_id)

    