import { getAusweisartFromUUID } from "#components/Ausweis/types.js";
import { BASE_URI } from "#lib/constants.js";
import { transport } from "#lib/mail.js";
import {
	Benutzer,
	Enums,
	Rechnung,
	VerbrauchsausweisWohnen,
} from "#lib/client/prisma";
import { prisma } from "#lib/server/prisma";
import { getAnsichtsausweis } from "../ausweis.js";

export async function sendInvoiceMail(
	ausweis: VerbrauchsausweisWohnen,
	rechnung: Rechnung,
	user: Benutzer
) {
	console.log(ausweis);
	
	const aufnahme = await prisma.aufnahme.findUnique({
		where: {
			id: ausweis.aufnahme_id,
		},
		include: {
			objekt: true,
			bilder: true,
		},
	});

	if (!aufnahme) {
		return;
	}

	const ausweisart = getAusweisartFromUUID(ausweis.uid);

	const attachments: any[] = [];

	if (ausweisart != Enums.Ausweisart.BedarfsausweisWohnen) {
		const ansichtsausweis = await getAnsichtsausweis(
			ausweis,
			aufnahme,
			aufnahme.objekt,
			aufnahme.bilder,
			user,
			ausweisart
		);

		if (ansichtsausweis) {
			attachments.push([
				{
					filename: "Ansichtsausweis.pdf",
					encoding: "binary",
					content: Buffer.from(ansichtsausweis),
					contentType: "application/pdf",
					contentDisposition: "attachment",
				},
			]);
		}
	}

	await transport.sendMail({
		attachments,
		from: `"IBCornelsen" <info@online-energieausweis.org>`,
		to: user.email,
		subject: `Bestellbestätigung vom IBCornelsen (ID: ${ausweis.uid})`,
		cc: {
			address: rechnung.email || "",
			name: rechnung.empfaenger || "",
		},
		bcc: "info@online-energieausweis.org",
		html: `<p>Sehr geehrte*r ${user.vorname} ${user.name},</p>
		
		<p>im Anhang finden Sie Ihren geprüften Energieusweis inkl. Rechnung als PDF-Datei. Nachfolgend finden Sie unsere Bankverbindung. Bitte geben Sie als Verwendungszweck die Rechnungsnummer an (siehe unten). Vielen Dank.</p>
		
		<br>
		<table>
		<tr><td>Kreditinstitut</td><td>:</td><td>\t Commerzbank AG</td>
		<tr><td>Empfänger</td><td>:</td><td>\t IB Cornelsen</td>
		<tr><td>IBAN</td><td>:<td>\t DE81 2004 0000 0348 6008 00</td>
		<tr><td>BIC</td><td>:</td><td>\t COBADEFFXXX</td>
		<tr><td>Betrag</td><td>:</td><td>\t <b>${rechnung.betrag}€</b></td>
		<tr><td>Verwendungszweck</td><td>:</td><td>\t <b>${rechnung.uid}</b></td>
		</table>
		<br>
		
		<p>
		Alternativ können Sie auch direkt online zahlen indem Sie auf den entsprechenden Link klicken:
		</p>
		<br>
		
		<table>
			<tr><td>Per Einzuglastschrift zahlen</td>    <td>:</td>     <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=SEPA'>jetzt per ELV bezahlen</a></td></tr>
			<tr><td>Per Sofortüberweisung zahlen</td>    <td>:</td>     <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=Sofort'>jetzt per Sofortüberweisung bezahlen</a></td></tr>
			<tr><td>Über PayPal zahlen</td>    <td>:</td>     <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=PayPal'>jetzt per Paypal bezahlen</a></td></tr>
			<tr><td>Per Giropay zahlen</td>    <td>:</td>     <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=Giropay'>jetzt per Giropay bezahlen</a></td></tr>
			<tr><td>Per Visa oder MasterCard zahlen</td>    <td>:</td>     <td><a href='${BASE_URI}/energieausweis-erstellen/kaufabschluss-fortsetzen?uid=${ausweis.uid}&p=Kreditkarte'>jetzt per Kreditkarte bezahlen</a></td></tr>
		</table>
		<br>
		
		<p>
		Mit freundlichen Grüßen,
		<br>
		Dipl.-Ing. Jens Cornelsen
		<br>
		<br>
		
		<strong>IB Cornelsen</strong>
		<br>
		Katendeich 5A
		<br>
		21035 Hamburg
		<br>
		www.online-energieausweis.org
		<br>
		<br>
		
		fon 040 · 209339850
		<br>
		fax 040 · 209339859
		</p>`,
	});
}
