shri-jai
feat: foodcount
f1cda74
from fastapi import HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select
import uuid
from src.payslip.models import PayslipRequest
from src.payslip.utils import decrypt_token
from src.payslip.googleservice import (
refresh_google_access_token,
build_email,
send_gmail,
)
async def send_mail_as_user(
session: AsyncSession,
user_id: uuid.UUID,
from_email: str,
to_email: str,
subject: str,
body: str,
):
q = (
select(PayslipRequest)
.where(PayslipRequest.user_id == user_id)
.order_by(PayslipRequest.requested_at.desc())
)
entry = (await session.execute(q)).scalar_one_or_none()
if not entry or not entry.refresh_token:
raise HTTPException(428, "GMAIL_NOT_CONNECTED")
refresh_token = decrypt_token(entry.refresh_token)
access_token = refresh_google_access_token(refresh_token)
raw = build_email(
from_email=from_email,
to_email=to_email,
subject=subject,
body=body,
)
send_gmail(access_token, raw)