Files
MermsCoreFlask/app/api/services/myproduct.py
T
CHIEFSOFT\ameye b5ce5460d2 fix data
2025-07-06 21:12:45 -04:00

174 lines
8.2 KiB
Python

from flask import session, jsonify
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.api.helpers.response_helper import ResponseHelper
from werkzeug.security import generate_password_hash, check_password_hash
from app.api.schemas.myproduct import MyProductSchema
import datetime
import jwt
import random
from app.config import Config
class MyProductsService(BaseService):
@staticmethod
def process_subscription(data):
try:
with db.session.begin():
logger.info(f"Incoming MyProduct data ==>>>> {data}")
validated_data = MyProductsService.validate_data(data, MyProductSchema())
token = validated_data.get('token')
uid = validated_data.get('uid')
member_data = Members.get_member_by_uid(uid)
member_id = member_data.id
product_id = validated_data.get('product_id')
product_data = Products.get_product_by_product_id(product_id)
if not product_data:
return {
"message": "Please provide product_id",
"data": None,
"error": "Bad request"
}, 400
logger.info(f"GET HERE ******************************** : {data}", exc_info=True)
mumberSub = MembersProducts.get_member_product_by_product__member_id(member_id, product_id)
subscription =[]
if not mumberSub:
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": subscription,
"member_id": member_id,
"uid": uid
}
return ResponseHelper.success(data=response_data)
except ValidationError as err:
logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}")
db.session.rollback()
return ResponseHelper.unprocessable_entity(result_description="Validation exception")
except ValueError as err:
logger.error(f"{getattr(err, 'messages', str(err))}")
db.session.rollback()
return ResponseHelper.error(result_description=str(err))
except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
return ResponseHelper.internal_server_error()
@staticmethod
def process_request(data):
try:
with db.session.begin():
logger.info(f"Incoming MyProduct data ==>>>> {data}")
validated_data = MyProductsService.validate_data(data, MyProductSchema())
token = validated_data.get('token')
uid = validated_data.get('uid')
member_data = Members.get_member_by_uid(uid)
member_id = member_data.id
product_id = validated_data.get('product_id')
'''
Table "public.products"
Column | Type | Collation | Nullable | Default
-------------+-----------------------------+-----------+----------+--------------------------------------
id | integer | | not null | nextval('products_id_seq'::regclass)
uid | uuid | | | uuid_generate_v4()
product_id | character varying(25) | | not null |
name | character varying(100) | | not null |
description | character varying(250) | | not null |
status | integer | | | 0
added | timestamp without time zone | | | now()
updated | timestamp without time zone | | | now()
banner | character varying(100) | | |
Indexes:
"products_id_key" UNIQUE CONSTRAINT, btree (id)
"products_name_key" UNIQUE CONSTRAINT, btree (name)
"products_product_id_key" UNIQUE CONSTRAINT, btree (product_id)
Referenced by:
TABLE "members_products" CONSTRAINT "members_products_product_id_fkey" FOREIGN KEY (product_id) REFERENCES products(product_id)
merms_panel=#
"Product Description - Commitment is something that comes from understanding that everything has its price and then having the willingness to pay that price. This is important because nobody wants to put significant effort into something, only to find out after the fact that the price was too high.The price is something not necessarily defined as financial. It could be time, effort, sacrifice, money or perhaps, something else.",
'''
product_data = Products.get_product_by_product_id(product_id)
product_description = ProductsDetails.get_product_details_with_product_id('A000002')
productDataStatus = product_data.status
# "banner": "banner.jpg",
myproduct_data = {
"myproudct": {
"banner": product_data.banner,
"description": product_description.details,
"sale_text" : product_description.sale_text,
"internal_url": "",
"price_text": "90 days free and 3.95/Month",
"product_id": product_data.product_id,
"product_name": product_data.name,
"product_subscription_uid": "",
"product_uid": product_data.uid,
"promotion_text": "Start Free Today !",
"status": productDataStatus,
"subscription_text": "Start with your goals in mind and then work possible.ith yand Goals. If the plan doesn\u2019t support the vision then change it!",
"title": "Your personal professional web presence"
}
}
# Simulate processing
response_data = {
"myproduct": myproduct_data,
"member_id": member_id,
"uid": uid,
}
return ResponseHelper.success(data=response_data)
except ValidationError as err:
logger.error(f"Validation Error: {getattr(err, 'messages', str(err))}")
db.session.rollback()
return ResponseHelper.unprocessable_entity(result_description="Validation exception")
except ValueError as err:
logger.error(f"{getattr(err, 'messages', str(err))}")
db.session.rollback()
return ResponseHelper.error(result_description=str(err))
except Exception as e:
logger.error(f"An error occurred: {str(e)}", exc_info=True)
db.session.rollback()
return ResponseHelper.internal_server_error()