from reportlab.pdfgen import canvas
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from PyPDF2 import PdfReader, PdfWriter
from datetime import datetime, timedelta
import random
import os


from utils.pdf_bbca import generate_bbca_pdf
from utils.pdf_aladin import generate_aladin_pdf
from utils.pdf_allo import generate_allo_pdf
from utils.pdf_banksaqu import generate_banksaqu_pdf
from utils.pdf_bbni import generate_bbni_pdf
from utils.pdf_bbni_new import generate_bbni_new_pdf
from utils.pdf_bbri import generate_bbri_pdf
from utils.pdf_bbsi import generate_bbsi_pdf
from utils.pdf_bbsi_new import generate_bbsi_new_pdf
from utils.pdf_blu import generate_blu_pdf
from utils.pdf_danamon import generate_danamon_pdf
from utils.pdf_digi import generate_digi_pdf
from utils.pdf_hana import generate_hana_pdf
from utils.pdf_indihome import generate_indihome_pdf
from utils.pdf_jago import generate_jago_pdf
from utils.pdf_jakom import generate_jakom_pdf
from utils.pdf_jenius import generate_jenius_pdf
from utils.pdf_krom import generate_krom_pdf
from utils.pdf_livin import generate_livin_pdf
from utils.pdf_mandiri_v1 import generate_mandiri_v1_pdf
from utils.pdf_mandiri_v2 import generate_mandiri_v2_pdf
from utils.pdf_mandiri_v3 import generate_mandiri_v3_pdf
from utils.pdf_octo import generate_octo_pdf
from utils.pdf_permata_v1 import generate_permata_v1_pdf
from utils.pdf_permata_v2 import generate_permata_v2_pdf
from utils.pdf_raya import generate_raya_pdf
from utils.pdf_republic import generate_republic_pdf
from utils.pdf_seabank import generate_seabank_pdf
from utils.pdf_super import generate_super_pdf
from utils.pdf_trmw import generate_trmw_pdf
from utils.pdf_ocbc import generate_ocbc_pdf

# Register custom fonts
# Path absolut ke direktori ini
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
FONT_DIR = os.path.join(BASE_DIR, "../assets/fonts")


def generate_pdf(data, template_path, output_path):
    if data.get("template") == "ALADIN":
        generate_aladin_pdf(data, template_path, output_path)
    elif data.get("template") == "ALLO":
        generate_allo_pdf(data, template_path, output_path)
    elif data.get("template") == "BANKSAQU":
        generate_banksaqu_pdf(data, template_path, output_path)
    elif data.get("template") == "BBNI":
        generate_bbni_pdf(data, template_path, output_path)
    elif data.get("template") == "BBNI_NEW":
        generate_bbni_new_pdf(data, template_path, output_path)
    elif data.get("template") == "BBRI":
        generate_bbri_pdf(data, template_path, output_path)
    elif data.get("template") == "BBSI":
        generate_bbsi_pdf(data, template_path, output_path)
    elif data.get("template") == "BBSI_NEW":
        generate_bbsi_new_pdf(data, template_path, output_path)
    elif data.get("template") == "BLU":
        generate_blu_pdf(data, template_path, output_path)
    elif data.get("template") == "DANAMON":
        generate_danamon_pdf(data, template_path, output_path)
    elif data.get("template") == "DIGI":
        generate_digi_pdf(data, template_path, output_path)
    elif data.get("template") == "HANA":
        generate_hana_pdf(data, template_path, output_path)
    elif data.get("template") == "INDIHOME":
        generate_indihome_pdf(data, template_path, output_path)
    elif data.get("template") == "JAGO":
        generate_jago_pdf(data, template_path, output_path)
    elif data.get("template") == "JAKOM":
        generate_jakom_pdf(data, template_path, output_path)
    elif data.get("template") == "JENIUS":
        generate_jenius_pdf(data, template_path, output_path)
    elif data.get("template") == "KROM":
        generate_krom_pdf(data, template_path, output_path)
    elif data.get("template") == "LIVIN":
        generate_livin_pdf(data, template_path, output_path)
    elif data.get("template") == "MANDIRI_V1":
        generate_mandiri_v1_pdf(data, template_path, output_path) 
    elif data.get("template") == "MANDIRI_V2":
        generate_mandiri_v2_pdf(data, template_path, output_path) 
    elif data.get("template") == "MANDIRI_V3":
        generate_mandiri_v3_pdf(data, template_path, output_path) 
    elif data.get("template") == "OCBC":
        generate_ocbc_pdf(data, template_path, output_path)
    elif data.get("template") == "OCTO":
        generate_octo_pdf(data, template_path, output_path)
    elif data.get("template") == "PERMATA_V1":
        generate_permata_v1_pdf(data, template_path, output_path)
    elif data.get("template") == "PERMATA_V2":
        generate_permata_v2_pdf(data, template_path, output_path)
    elif data.get("template") == "RAYA":
        generate_raya_pdf(data, template_path, output_path)
    elif data.get("template") == "REPUBLIC":
        generate_republic_pdf(data, template_path, output_path)
    elif data.get("template") == "SEABANK":
        generate_seabank_pdf(data, template_path, output_path)
    elif data.get("template") == "SUPER":
        generate_super_pdf(data, template_path, output_path)
    elif data.get("template") == "TMRW":
        generate_trmw_pdf(data, template_path, output_path)
    elif data.get("template") == "BBCA":
        generate_bbca_pdf(data, template_path, output_path)
    else:
        generate_bbca_pdf(data, template_path, output_path)