added new route
This commit is contained in:
@@ -227,6 +227,13 @@ def myproduct_dash():
|
|||||||
response = MyProductsService.process_request(data)
|
response = MyProductsService.process_request(data)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
@api.route("/panel/myproduct/external-url", methods=["POST"])
|
||||||
|
def set_external_url():
|
||||||
|
data = request.get_json()
|
||||||
|
# logger.info(f"Route MyProduct Data ==>>>> {data}")
|
||||||
|
response = MyProductsService.set_external_url(data)
|
||||||
|
return response
|
||||||
|
|
||||||
|
|
||||||
@api.route("/panel/myproduct/settings", methods=["POST"])
|
@api.route("/panel/myproduct/settings", methods=["POST"])
|
||||||
def myproduct_settings():
|
def myproduct_settings():
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
from marshmallow import Schema, fields
|
||||||
|
|
||||||
|
class MyProductExternalUrlSchema(Schema):
|
||||||
|
token = fields.Str(required=True)
|
||||||
|
uid = fields.Str(required=True)
|
||||||
|
subscription_uid = fields.Str(required=True)
|
||||||
|
external_url = fields.Str(required=True)
|
||||||
|
|
||||||
@@ -3,6 +3,7 @@ from urllib import request
|
|||||||
from flask import session, jsonify
|
from flask import session, jsonify
|
||||||
|
|
||||||
from app.api.enums import SettingsItemsData, KafkaMessage
|
from app.api.enums import SettingsItemsData, KafkaMessage
|
||||||
|
from app.api.schemas.myproduct_external_url import MyProductExternalUrlSchema
|
||||||
from app.api.schemas.myproduct_set_template import MyProductSetTemplateSchema
|
from app.api.schemas.myproduct_set_template import MyProductSetTemplateSchema
|
||||||
from app.utils.logger import logger
|
from app.utils.logger import logger
|
||||||
from app.api.services.base_service import BaseService
|
from app.api.services.base_service import BaseService
|
||||||
@@ -253,7 +254,8 @@ class MyProductsService(BaseService):
|
|||||||
practice = profile_data.practice
|
practice = profile_data.practice
|
||||||
specialization = profile_data.specialization
|
specialization = profile_data.specialization
|
||||||
subscription_uid = subscription.uid
|
subscription_uid = subscription.uid
|
||||||
SubscriptionGenerative.create_subscription_generative(member_id ,practice,specialization,product_id, subscription_uid)
|
SubscriptionGenerative.create_subscription_generative(member_id, practice, specialization,
|
||||||
|
product_id, subscription_uid)
|
||||||
|
|
||||||
response_data = {
|
response_data = {
|
||||||
"subscription_uid": subscription.uid,
|
"subscription_uid": subscription.uid,
|
||||||
@@ -303,7 +305,6 @@ class MyProductsService(BaseService):
|
|||||||
productDataStatus = memberSubscription.status
|
productDataStatus = memberSubscription.status
|
||||||
product_subscription_uid = memberSubscription.uid
|
product_subscription_uid = memberSubscription.uid
|
||||||
|
|
||||||
|
|
||||||
for key in settings.keys():
|
for key in settings.keys():
|
||||||
setting_value = settings[key]
|
setting_value = settings[key]
|
||||||
subscription_uid = memberSubscription.uid
|
subscription_uid = memberSubscription.uid
|
||||||
@@ -379,7 +380,6 @@ class MyProductsService(BaseService):
|
|||||||
product_template = memberSubscription.product_template
|
product_template = memberSubscription.product_template
|
||||||
custom_template = memberSubscription.custom_template
|
custom_template = memberSubscription.custom_template
|
||||||
|
|
||||||
|
|
||||||
# "banner": "banner.jpg",
|
# "banner": "banner.jpg",
|
||||||
myproduct_data = {
|
myproduct_data = {
|
||||||
"myproudct": {
|
"myproudct": {
|
||||||
@@ -605,3 +605,74 @@ class MyProductsService(BaseService):
|
|||||||
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
logger.error(f"An error occurred: {str(e)}", exc_info=True)
|
||||||
db.session.rollback()
|
db.session.rollback()
|
||||||
return ResponseHelper.internal_server_error()
|
return ResponseHelper.internal_server_error()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def set_external_url(data):
|
||||||
|
try:
|
||||||
|
with db.session.begin():
|
||||||
|
# logger.info(f"Incoming MyProduct data ==>>>> {data}")
|
||||||
|
validated_data = MyProductsService.validate_data(data, MyProductExternalUrlSchema())
|
||||||
|
token = validated_data.get('token')
|
||||||
|
uid = validated_data.get('uid')
|
||||||
|
subscription_uid = validated_data.get('subscription_uid')
|
||||||
|
external_url = validated_data.get('external_url')
|
||||||
|
|
||||||
|
member_data = Members.get_member_by_uid(uid)
|
||||||
|
if not member_data:
|
||||||
|
return {
|
||||||
|
"message": "Invalid User",
|
||||||
|
"error_message": "Error - Please select a valid product to view",
|
||||||
|
"data": None,
|
||||||
|
"error": f"User with UID {uid} does not exist."
|
||||||
|
}, 400
|
||||||
|
|
||||||
|
member_id = member_data.id
|
||||||
|
|
||||||
|
|
||||||
|
membersSubResult = MembersProducts.get_member_product_by_subscription_uid(subscription_uid)
|
||||||
|
if not membersSubResult:
|
||||||
|
return {
|
||||||
|
"message": "Invalid Subscription",
|
||||||
|
"error_message": "Error - Please select a valid product to view",
|
||||||
|
"data": None,
|
||||||
|
"error": f"Subscription with UID {subscription_uid} does not exist."
|
||||||
|
}, 400
|
||||||
|
logger.info(f"External URL Member Data: {member_data}")
|
||||||
|
|
||||||
|
|
||||||
|
if int(membersSubResult.member_id) != member_id:
|
||||||
|
return {
|
||||||
|
"message": "Mismatch subscription and User",
|
||||||
|
"error_message": "Error - Please select a valid product to view",
|
||||||
|
"data": None,
|
||||||
|
"error": f"Mismatch subscription and User."
|
||||||
|
}, 400
|
||||||
|
|
||||||
|
|
||||||
|
setUrlResult = MembersProducts.set_member_product_external_url(member_id, membersSubResult.product_id,
|
||||||
|
external_url)
|
||||||
|
|
||||||
|
# Simulate processing
|
||||||
|
response_data = {
|
||||||
|
"subscription_uid": subscription_uid,
|
||||||
|
"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()
|
||||||
|
|||||||
@@ -94,11 +94,11 @@ class OfficeDashboardService(BaseService):
|
|||||||
|
|
||||||
dashboard_data = {
|
dashboard_data = {
|
||||||
"subscription": subscription_data,
|
"subscription": subscription_data,
|
||||||
"loans": {
|
"signups": {
|
||||||
"currency": "Naira",
|
"currency": "Naira",
|
||||||
"currency_text": "\u20a6",
|
"currency_text": "\u20a6",
|
||||||
"text": "last 30 days",
|
"text": "last 30 days",
|
||||||
"value": sub_count
|
"value": int(sub_count)
|
||||||
},
|
},
|
||||||
"payments": {
|
"payments": {
|
||||||
"currency": "Dollars",
|
"currency": "Dollars",
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ class Members(db.Model):
|
|||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {
|
return {
|
||||||
"id": self.id,
|
"id": self.id,
|
||||||
|
"member_id": self.id,
|
||||||
"uid": str(self.uid),
|
"uid": str(self.uid),
|
||||||
"profile_completed": self.profile_completed,
|
"profile_completed": self.profile_completed,
|
||||||
"username": self.username,
|
"username": self.username,
|
||||||
@@ -69,7 +70,6 @@ class Members(db.Model):
|
|||||||
@classmethod
|
@classmethod
|
||||||
def get_member_by_uid(cls, uid):
|
def get_member_by_uid(cls, uid):
|
||||||
member = cls.query.filter_by(uid=str(uid)).first()
|
member = cls.query.filter_by(uid=str(uid)).first()
|
||||||
|
|
||||||
if not member:
|
if not member:
|
||||||
logger.info(f"User UID = {uid} found")
|
logger.info(f"User UID = {uid} found")
|
||||||
return None
|
return None
|
||||||
|
|||||||
@@ -98,6 +98,14 @@ class MembersProducts(db.Model):
|
|||||||
member_product.product_template = product_template
|
member_product.product_template = product_template
|
||||||
return product_template
|
return product_template
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def set_member_product_external_url(cls, member_id, product_id, external_url):
|
||||||
|
member_product = cls.query.filter_by(member_id=str(member_id), product_id=str(product_id)).first()
|
||||||
|
if not member_product:
|
||||||
|
return None
|
||||||
|
member_product.external_url = external_url
|
||||||
|
return external_url
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_subscription(cls, member_id ,product_id,status,internal_url):
|
def create_subscription(cls, member_id ,product_id,status,internal_url):
|
||||||
dns_group = "DNS_G01"
|
dns_group = "DNS_G01"
|
||||||
@@ -162,6 +170,7 @@ class MembersProducts(db.Model):
|
|||||||
return {
|
return {
|
||||||
'id': self.id,
|
'id': self.id,
|
||||||
'uid': self.uid,
|
'uid': self.uid,
|
||||||
|
'member_id': self.member_id,
|
||||||
'product_id': self.product_id,
|
'product_id': self.product_id,
|
||||||
'internal_url': self.internal_url,
|
'internal_url': self.internal_url,
|
||||||
'external_url': self.external_url,
|
'external_url': self.external_url,
|
||||||
|
|||||||
Reference in New Issue
Block a user