import { fetchBillById } from '@/app/lib/actions/billActions';
import { notFound } from 'next/navigation';

export async function GET(request: Request, { params:{ id } }: { params: { id:string } }) {
    const [locationID, billID] = id.split('-');

    const [location, bill] = await fetchBillById(locationID, billID, true) ?? [];

    if(!bill?.attachment) {
        notFound();
    }

    // convert fileContentsBase64 from Base64 string to binary string
    const fileContentsBuffer = Buffer.from(bill.attachment.fileContentsBase64, 'base64');

    // convert fileContentsBuffer to format that can be sent to the client
    const fileContents = new Uint8Array(fileContentsBuffer);
    
    return new Response(fileContents, {
        status: 200,
        headers: {
            'Content-Type': "application/octet-stream",
            'Content-Disposition': `attachment; filename="${bill.attachment.fileName}"`,
            'Last-Modified': `${bill.attachment.fileLastModified}`
        }
    });
}