diff --git a/SQL/site_data.sql b/SQL/site_data.sql index 7d98a6c..c16fdc7 100644 --- a/SQL/site_data.sql +++ b/SQL/site_data.sql @@ -94,6 +94,23 @@ CREATE TABLE products ( ALTER TABLE ONLY products_details ADD CONSTRAINT products_details_id_key UNIQUE (id); +CREATE TABLE member_product_refresh( + id SERIAL, + uid uuid DEFAULT uuid_generate_v4(), + member_id INT REFERENCES members(id), + product_id VARCHAR(25) NOT NULL, + subscription_uid VARCHAR(100) UNIQUE NOT NULL, + status INT DEFAULT 0, + added timestamp without time zone DEFAULT now(), + updated timestamp without time zone DEFAULT now() +); + +ALTER TABLE ONLY member_product_refresh + ADD CONSTRAINT member_product_refresh_id_key UNIQUE (id); + + + + ALTER TABLE products_details OWNER TO merms_panel; --- ALTER TABLE products_details ADD sale_text TEXT; diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index bf3ad4f..19307c6 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -234,6 +234,15 @@ def get_dashboard(): # Call the dashboard service result = OfficeDashboardService.get_dashboard_data() return jsonify(result) + +@api.route('/office/transaction', methods=['GET']) +# @token_required +def get_subscription_office(): + # Call the dashboard service + result = OfficeDashboardService.get_subscriptions_data() + return jsonify(result) + + #===================================================== # # EligibilityCheck Endpoint diff --git a/app/api/services/office_dashboard.py b/app/api/services/office_dashboard.py index 4dd1e4a..77d1cd4 100644 --- a/app/api/services/office_dashboard.py +++ b/app/api/services/office_dashboard.py @@ -8,6 +8,10 @@ from app.models import MembersProducts, Products, Members, ProductsDetails, Prod class OfficeDashboardService(BaseService): + @staticmethod + def get_subscriptions_data(): + pass + @staticmethod def get_dashboard_data(): try: diff --git a/app/api/services/products.py b/app/api/services/products.py index 43cd493..91db106 100644 --- a/app/api/services/products.py +++ b/app/api/services/products.py @@ -8,7 +8,7 @@ from marshmallow import ValidationError # from app.api.enums import TransactionType # from app.api.integrations import SimbrellaIntegration from app.extensions import db -from app.models import MembersProducts, Products, Members +from app.models import MembersProducts, Products, Members, MembersProductsRefresh # from app.api.services.offer_analysis import OfferAnalysis from app.api.helpers.response_helper import ResponseHelper @@ -143,6 +143,29 @@ class ProductsService(BaseService): member_data = Members.get_member_by_uid(uid) member_id = member_data.id subscription_uid = validated_data.get('subscription_uid') + product_id = validated_data.get('product_id') + + memberSubscription = MembersProducts.get_member_product_by_product_member_id(member_id, product_id) + logger.info(f"memberSubscription UID ****** *****: {memberSubscription.uid} , subscription_uid == {subscription_uid}") + if memberSubscription is None : + response_data = { + "error": "Product not found", + "member_id": member_id, + "uid": member_data.uid, + } + return ResponseHelper.success(data=response_data) + + if str(memberSubscription.uid) != subscription_uid : + response_data = { + "error": "Invalid product call", + "member_id": member_id, + "uid": member_data.uid, + } + return ResponseHelper.success(data=response_data) + + MembersProductsRefresh.create_subscription_refresh(member_id,product_id, subscription_uid) + # if memberSubscription.uid != subscription_uid : + #products = MembersProducts.get_member_productlist_by_member_id(member_id) diff --git a/app/models/__init__.py b/app/models/__init__.py index 2a954b8..ad289c7 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -19,9 +19,11 @@ from .members_pending import MembersPending from .products_details import ProductsDetails from .provision_actions import ProvisionActions from .password_reset import PasswordReset +from .member_product_refresh import MembersProductsRefresh __all__ = ['Members','Customer', 'Account', 'Products', - 'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails', 'ProvisionActions', 'PasswordReset','Loan', 'Transaction', 'Repayment', + 'MembersProducts', 'MembersActions', 'MembersPending', 'ProductsDetails', 'ProvisionActions', 'MembersProductsRefresh', + 'PasswordReset','Loan', 'Transaction', 'Repayment', 'LoanCharge', 'Offer', 'Charge', 'RACCheck', 'LoanRepaymentSchedule', 'TransactionOffer', 'RepaymentsData', 'Salary'] \ No newline at end of file diff --git a/app/models/members_actions.py b/app/models/members_actions.py index 0a8b2ba..10314cc 100644 --- a/app/models/members_actions.py +++ b/app/models/members_actions.py @@ -37,7 +37,7 @@ class MembersActions(db.Model): @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).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")