diff --git a/app/api/services/login.py b/app/api/services/login.py index 75bc550..e35e856 100644 --- a/app/api/services/login.py +++ b/app/api/services/login.py @@ -230,6 +230,9 @@ class LoginService(BaseService): "message_key": "invalid_username_or_password", } return ResponseHelper.success(data=invalid_data) + # + # last_login + Members.set_member_last_login(member.uid) user_data = {} user_data["id"] = member.id, diff --git a/app/models/members.py b/app/models/members.py index 186f64d..78f01ee 100644 --- a/app/models/members.py +++ b/app/models/members.py @@ -26,6 +26,8 @@ class Members(db.Model): option_name = db.Column(db.String(100), nullable=True) next_billing= db.Column(db.DateTime(timezone=False)) trial_end = db.Column(db.DateTime(timezone=False)) + last_login = db.Column(db.DateTime(timezone=False), server_default=func.now(), onupdate=func.now()) + # "account_id": self.account_id, def to_dict(self): return { @@ -40,6 +42,7 @@ class Members(db.Model): "status": self.status, "added": self.added.isoformat() if self.added else None, "updated": self.updated.isoformat() if self.updated else None, + "last_login" : self.last_login.isoformat() if self.last_login else None, "email": self.email, "account_name": self.account_name, "firstname": self.firstname, @@ -86,6 +89,17 @@ class Members(db.Model): member.profile_completed = datetime.now(timezone.utc) return member.profile_completed + @classmethod + def set_member_last_login(cls, uid): + member = cls.query.filter_by(uid=str(uid)).first() + + if not member: + logger.info(f"User UID = {uid} found") + return None + + member.last_login = datetime.now(timezone.utc) + return member.last_login + @classmethod def add_member(cls, firstname, lastname, email, username,password, country, trials_days = 90): @@ -189,7 +203,7 @@ class Members(db.Model): logger.info(f"Get Recent Member Login") # Order by created_at descending (newest first) - query = query.order_by(cls.added.desc()) + query = query.order_by(cls.last_login.desc()) query = query.limit(limit).offset(0) return query.all() \ No newline at end of file diff --git a/app/models/products.py b/app/models/products.py index b33738c..b7fe38c 100644 --- a/app/models/products.py +++ b/app/models/products.py @@ -91,7 +91,7 @@ class Products(db.Model): """ Return all offers in dictionary format. """ - product_list = cls.query.all() + product_list = cls.query.order_by(cls.list_order.asc()).all() if not product_list: raise ValueError(f"No available Products")