from datetime import datetime, timezone, timedelta from itertools import product from app.extensions import db from app.models.customer import Customer from app.models.account import Account from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import relationship from dateutil.relativedelta import relativedelta from datetime import timedelta import logging from sqlalchemy import and_, or_, not_ from sqlalchemy.sql import func import json logger = logging.getLogger(__name__) class MembersActions(db.Model): __tablename__ = 'members_actions' id = db.Column( db.Integer, primary_key=True, autoincrement=True, ) uid = db.Column(db.String(150), nullable=False) member_id = db.Column(db.Integer, nullable=False) member_uid = db.Column(db.String(150), nullable=False) action_label = db.Column(db.String(35), nullable=False) action_name = db.Column(db.String(100), nullable=False) status_description = db.Column(db.String(25), nullable=False) status = db.Column(db.Integer, nullable=True, default=0) added = db.Column(db.DateTime(timezone=True), server_default=func.now()) updated = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) @classmethod def get_recent_member_actions(cls, member_id): # member_actions = cls.query.limit(4).all() member_actions = cls.query.filter_by(member_id=member_id).order_by(cls.id.desc()).limit(4).all() if not member_actions: raise ValueError(f"No Member Actions") return member_actions def to_dict(self): """ Convert the Loan object to a dictionary format for JSON serialization. """ return { 'id': self.id, 'uid': self.uid, 'member_id': self.member_id, 'member_uid': self.member_uid, 'action_label' : self.action_label, 'action_name': self.action_name, 'status_description': self.status_description, 'status': self.status, 'added': self.added, 'updated': self.updated } def __repr__(self): return f''