diff --git a/app/api/services/myproduct.py b/app/api/services/myproduct.py index 1a63a2d..efc07c2 100644 --- a/app/api/services/myproduct.py +++ b/app/api/services/myproduct.py @@ -3,7 +3,7 @@ from app.utils.logger import logger from app.api.services.base_service import BaseService from marshmallow import ValidationError from app.extensions import db -from app.models import MembersProducts, Products, Members, ProductsDetails +from app.models import MembersProducts, Products, Members, ProductsDetails, ProductsDetails, ProvisionActions from app.api.helpers.response_helper import ResponseHelper from werkzeug.security import generate_password_hash, check_password_hash from app.api.schemas.myproduct import MyProductSchema @@ -40,30 +40,7 @@ class MyProductsService(BaseService): logger.info(f"GET HERE ******************************** : {data}", exc_info=True) subscription = MembersProducts.get_member_product_by_product_member_id(member_id, product_id) - # if not subscription: - # logger.error(f"Ready to add data to tables") - # response_data = { - # "subscription": mumberSub, - # "member_id": member_id, - # "error": "already_subscribed", - # "uid": uid - # } - # return ResponseHelper.success(data=response_data) - - # internal_url = str(random.randint(10000, 99999)) + ".devprov.mermsemr.com" - #INSERT_NEW_PRODUCT = "INSERT INTO members_products (member_id ,product_id,status,internal_url) VALUES (%s, %s, %s, %s)" - # val_insert = (member_id, product_id,6,internal_url) - # status = 6 - # subscription = MembersProducts.create_subscription(member_id ,product_id,status,internal_url) - - # response_data = { - # "subscription_uid": subscription.uid, - # "subscription_id": subscription.id, - # "internal_url": subscription.internal_url, - # "member_id": member_id, - # "uid": uid - # } - provision_activities=[] + provision_activities = ProvisionActions.get_provision_action_by_member_id(member_id, 4) response_data = { "subscription_uid": subscription.uid, "subscription_id": subscription.id, diff --git a/app/models/__init__.py b/app/models/__init__.py index 4e5bdc6..19d41a6 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -17,8 +17,9 @@ from .members_products import MembersProducts from .members_actions import MembersActions from .members_pending import MembersPending from .products_details import ProductsDetails +from .provision_actions import ProvisionActions __all__ = ['Members','Customer', 'Account', 'Products', - 'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails', 'Loan', 'Transaction', 'Repayment', + 'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails', 'ProvisionActions', 'Loan', 'Transaction', 'Repayment', 'LoanCharge', 'Offer', 'Charge', 'RACCheck', 'LoanRepaymentSchedule', 'TransactionOffer', 'RepaymentsData', 'Salary'] \ No newline at end of file diff --git a/app/models/provision_actions.py b/app/models/provision_actions.py new file mode 100644 index 0000000..3d4cbba --- /dev/null +++ b/app/models/provision_actions.py @@ -0,0 +1,62 @@ +from datetime import datetime, timezone, timedelta +from itertools import product +from app.extensions import db +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 ProvisionActions(db.Model): + __tablename__ = 'provision_actions' + + id = db.Column( + db.Integer, + primary_key=True, + autoincrement=True, + ) + + uid = db.Column(db.String(150), nullable=True) + member_id = db.Column(db.Integer, nullable=False) + product_uid = db.Column(db.String(100), nullable=False) + action = db.Column(db.String(100), nullable=False) + added = db.Column(db.DateTime(timezone=True), server_default=func.now()) + + + + @classmethod + def get_provision_action_by_member_id(cls, member_id, limit): + provision_action = cls.query.all() + provision_action = cls.query.filter_by(member_id=member_id).limit(limit).all() + if not provision_action: + return None + return provision_action + + @classmethod + def get_provision_action_by_product_uid(cls, product_uid,limit): + provision_action = cls.query.all() + provision_action = cls.query.filter_by(product_uid=product_uid).limit(limit).all() + if not provision_action: + return None + return provision_action + + + def to_dict(self): + """ + Convert the Loan object to a dictionary format for JSON serialization. + """ + return { + 'id': self.id, + 'uid': self.uid, + 'product_uid': self.product_uid, + 'action': self.action, + 'added': self.added, + } + + def __repr__(self): + return f''