# from datetime import datetime, timezone # from app.extensions import db # from app.models.charge import Charge # from sqlalchemy.orm import relationship # from sqlalchemy.sql import func # # class Offer(db.Model): # __tablename__ = 'offers' # # id = db.Column(db.String, primary_key=True) # product_id = db.Column(db.String, nullable=False) # min_amount = db.Column(db.Float, nullable=False) # max_amount = db.Column(db.Float, nullable=False) # tenor = db.Column(db.Integer, nullable=False) # schedule = db.Column(db.Integer, nullable=True) # interest_rate = db.Column(db.Float, default=3.0) # management_rate = db.Column(db.Float, default=1.0) # insurance_rate = db.Column(db.Float, default=1.0) # vat_rate = db.Column(db.Float, default=7.5) # list_order = db.Column(db.Integer, nullable=True) # max_daily_loans = db.Column(db.Integer, nullable=True) # max_active_loans = db.Column(db.Integer, nullable=True) # max_life_loans = db.Column(db.Integer, nullable=True) # created_at = db.Column(db.DateTime(timezone=True), server_default=func.now()) # updated_at = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) # # # charges = relationship( # # "Charge", # # primaryjoin="Offer.id == Charge.offer_id", # # foreign_keys="Charge.offer_id", # # back_populates="offer", # # ) # # @classmethod # def get_all_offers(cls): # """ # Return all offers in dictionary format. # """ # offers = cls.query.all() # # if not offers: # raise ValueError(f"No available offers") # return offers # # @classmethod # def is_valid_offer(cls, offer_id): # offer = cls.query.filter_by(id=str(offer_id)).first() # # # if not offer: # return False # return offer # # @classmethod # def get_offer_by_id(cls, offer_id): # """ # Return an offer by its ID. # """ # offer = cls.query.filter_by(id=str(offer_id)).first() # # if not offer: # raise ValueError(f"Offer with ID {offer_id} not found") # return offer # # @classmethod # def get_offer_by_product_id(cls, product_id): # """ # Return an offer by its product ID. # """ # offer = cls.query.filter_by(product_id=str(product_id)).first() # # if not offer: # raise ValueError(f"Offer with Product ID {product_id} not found") # return offer # # def to_dict(self): # return { # "offerId": self.id, # "productId": self.product_id, # "minAmount": self.min_amount, # "maxAmount": self.max_amount, # "tenor": self.tenor, # "interest_rate": self.interest_rate, # "management_rate": self.management_rate, # "insurance_rate": self.insurance_rate, # "vat_rate": self.vat_rate, # "maxDailyLoans": self.max_daily_loans, # "maxActiveLoans": self.max_active_loans, # "maxLifeLoans": self.max_life_loans # # } # # def __repr__(self): # return f''