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 OfficeUsers(db.Model): __tablename__ = 'office_users' id = db.Column( db.Integer, primary_key=True, autoincrement=True, ) uid = db.Column(db.String(150), nullable=True) username = db.Column(db.String(25), nullable=False) password = db.Column(db.String(100), nullable=False) firstname = db.Column(db.String(25), nullable=False) lastname = db.Column(db.String(25), nullable=False) acc_level = db.Column(db.Integer, nullable=True, default=10) status = db.Column(db.Integer, nullable=True, default=0) added = db.Column(db.DateTime(timezone=True), server_default=func.now()) @classmethod def get_office_users_list(cls): users_list = cls.query.all() if not users_list: raise ValueError(f"No available users") return users_list @classmethod def get_office_user_id(cls, user_id): """ Get customer's active loans by loan_id. """ users_list = cls.query.filter_by(id=user_id).first() if not users_list: # raise ValueError(f"pProduct with ID {product_id} does not exist.") logger.error(f"users_list with ID {user_id} does not exist.") return None return users_list def to_dict(self): """ Convert the Loan object to a dictionary format for JSON serialization. """ return { 'id': self.id, 'uid': self.uid, 'username': self.username, 'password': self.password, 'firstname': self.firstname, 'lastname': self.lastname, 'acc_level': self.acc_level, 'status': self.status, 'added': self.added } def __repr__(self): return f''