86 lines
3.4 KiB
Python
86 lines
3.4 KiB
Python
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:
|
|
return None
|
|
return member_actions
|
|
|
|
@classmethod
|
|
def get_recent_member_calendar_actions_member_id(cls, member_id, limit):
|
|
# member_actions = cls.query.limit(4).all()
|
|
member_actions = cls.query.filter_by(member_id=member_id).order_by(cls.id.desc()).limit(limit).all()
|
|
|
|
if not member_actions:
|
|
return None
|
|
return member_actions
|
|
|
|
# '''
|
|
# merms_panel=# select * from members_actions limit 2;
|
|
# id | uid | member_id | member_uid | action_label | action_name | status_description | status | adde
|
|
# d | updated
|
|
# ----+--------------------------------------+-----------+--------------------------------------+------------------------+----------------------+--------------------+--------+---------------
|
|
# -------------+----------------------------
|
|
# 1 | 91f112f3-c8ad-4533-bfa7-117f8e8781b4 | 2 | f995061e-a36c-4648-a3fc-d18e3d93e353 | Systems Status Checks | system_status_checks | processing | 0 | 2025-07-20 18:
|
|
# 52:08.011359 | 2025-07-20 18:52:08.011359
|
|
# 2 | 7fa90e2d-d4d2-40fd-bbad-c18be69f8967 | 1 | 2493007e-ab59-428a-8d34-ce66c8dea5ac | Systems Status Checks | system_status_checks | processing | 0 | 2025-07-20 18:
|
|
# 52:08.093698 | 2025-07-20 18:52:08.093698
|
|
# (2 rows)
|
|
# '''
|
|
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'<Products {self.id}>'
|