import os from jinja2 import Environment, FileSystemLoader from decimal import Decimal BUSINESS = "Goba Buku Wifi😉" class MessageTemplate: def __init__(self): # Set the template directory to the same directory as this file template_dir = os.path.dirname(__file__) self.env = Environment(loader=FileSystemLoader(template_dir)) def render_template(self, template_name: str, **kwargs) -> str: """Renders a template with provided variables.""" template = self.env.get_template(template_name) return template.render(**kwargs) def registration_message(self, user_name, business_name=BUSINESS): """Generates the registration message for SMS.""" return self.render_template( "Registration.md", user_name=user_name, business_name=business_name, ) def payment_confirmation_message(self, amount, expiry_date, business_name=BUSINESS): """Generates the payment confirmation message for SMS.""" return self.render_template( "Payment.md", amount=amount, expiry_date=expiry_date, business_name=business_name, ) def payment_success_subscription_message( self, user_name: str, amount: Decimal, plan_name: str ): return f"Ndugu {user_name}, Nimepokea kiasi cha shilingi {amount}. Asante kwa kujiunga na {plan_name}" def account_disabled_message(self) -> str: return "Akaunti yako imezimwa. Tafadhali wasiliana na msaada kwa usaidizi." def account_enabled_message(self) -> str: return "Akaunti yako imewashwa. Sasa unaweza kufikia akaunti yako." def reset_token_message(self, token: str) -> str: return f"Tokeni yako ya kuweka upya nenosiri ni: {token}. Tafadhali tumia tokeni hii kuweka upya nenosiri lako." def password_reset_confirmation_message(self) -> str: return "Nenosiri lako limewekwa upya kwa mafanikio. Ikiwa hukufanya kitendo hiki, tafadhali wasiliana na msaada mara moja." def subscription_created_message(self, plan_name: str, expiration_time: str) -> str: return f"Habari! Usajili wako kwenye mpango wa {plan_name} umefanikiwa kuundwa. Utaisha tarehe {expiration_time}." def insufficient_funds_message( self, required_amount: Decimal, provided_amount: Decimal ) -> str: return f"Pesa hazitoshi kwa mpango uliyochagua. Zinazohitajika: {required_amount}, Zilizotolewa: {provided_amount}. Tafadhali ongeza pesa zaidi au chagua mpango tofauti." def balance_assigned_message(self, amount: Decimal, new_balance: Decimal) -> str: return f"Habari! Salio la {amount} limeongezwa kwa mafanikio kwenye akaunti yako. Salio lako jipya ni {new_balance}." def subscription_expired_message( self, user_name: str, plan_name: str, business_name=BUSINESS ) -> str: """Generates a message when the subscription is over.""" return f"Habari {user_name}, Bando lako la {plan_name}, limeisha. "