from fastapi import APIRouter, BackgroundTasks, Depends, File, Form, UploadFile
from sqlalchemy.orm import Session
from app.database.main.mysql import get_db
from app.dependency.authantication import JWTPayloadSchema,get_current_user
from app.api.send_mail.schema import SendMailCreate
from app.api.send_mail import service

send_mail_router = APIRouter()

@send_mail_router.post("/send_mail", response_model_exclude_none=True)
async def create_segment(
    from_mail: str = Form(...),
    to_mail: str = Form(...),
    subject: str = Form(...),
    body: str = Form(...),
    background_tasks: BackgroundTasks = BackgroundTasks(),
    attach_file: UploadFile = File(None),
    db: Session = Depends(get_db),
    token: JWTPayloadSchema = Depends(get_current_user),
):
    request = SendMailCreate(
        from_mail=from_mail,
        to_mail=[to_mail],
        subject=subject,
        body=body
    )

    return await service.SendMailService(db, token).created_data(
        request,
        background_tasks,
        attach_file
    )

@send_mail_router.get("/get_admin_student_email",response_model_exclude_none=True)
async def get_admin_student_emails(group_code:str, db:Session=Depends(get_db),token: JWTPayloadSchema = Depends(get_current_user)):
    return await service.SendMailService(db,token).get_admin_student_email(group_code)