192 lines
7.4 KiB
Python
192 lines
7.4 KiB
Python
from flask import session, jsonify
|
|
from app.models.loan import Loan
|
|
from app.utils.logger import logger
|
|
from app.api.services.base_service import BaseService
|
|
from app.api.schemas.eligibility_check import EligibilityCheckSchema
|
|
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 Offer, RACCheck, Members, MembersActions
|
|
from app.api.services.offer_analysis import OfferAnalysis
|
|
from app.api.helpers.response_helper import ResponseHelper
|
|
from werkzeug.security import generate_password_hash, check_password_hash
|
|
from app.api.schemas.user import UserSchema
|
|
|
|
import datetime
|
|
import jwt
|
|
import random
|
|
from app.config import Config
|
|
|
|
|
|
class AccountService(BaseService):
|
|
|
|
@staticmethod
|
|
def process_bar_request(data):
|
|
bar_data = {
|
|
"last_update": datetime.datetime.utcnow(),
|
|
"top_bar": [
|
|
{"id": "1", "description": "Contacts", "last_update": "10-10-2010 11:00 AM",
|
|
"value": random.randint(0, 10), "data_span": 'Last 2 months'},
|
|
{"id": "2", "description": "Site Traffic", "last_update": "10-10-2010 11:30 AM",
|
|
"value": random.randint(0, 10), "data_span": 'Past 12 hours'},
|
|
{"id": "3", "description": "Appointments", "last_update": "10-12-2010 11:30 AM",
|
|
"value": random.randint(0, 10), "data_span": 'Last 14 days'},
|
|
{"id": "4", "description": "Purchases", "last_update": "10-12-2010 11:30 AM",
|
|
"value": random.randint(0, 10), "data_span": 'Last 3 months'},
|
|
]
|
|
}
|
|
return ResponseHelper.success(data=bar_data)
|
|
|
|
@staticmethod
|
|
def process_action_request(data):
|
|
|
|
try:
|
|
with db.session.begin():
|
|
|
|
validated_data = AccountService.validate_data(data, UserSchema())
|
|
user_token = validated_data.get('token')
|
|
uid = str(validated_data.get('uid'))
|
|
member_data = Members.get_member_by_uid(uid)
|
|
|
|
member_actions = MembersActions.get_recent_member_actions(member_data.id)
|
|
member_actions_data = []
|
|
product_data =[]
|
|
|
|
for t in member_actions:
|
|
product_data.append({
|
|
'id': t.id,
|
|
'uid': t.uid,
|
|
'product_id': t.product_id,
|
|
'name': t.name,
|
|
'description': t.description,
|
|
'status': t.status,
|
|
'added': t.added,
|
|
'updated': t.updated,
|
|
'banner': t.banner
|
|
})
|
|
|
|
action_data = {
|
|
"recent_actions": member_actions_data,
|
|
"last_update": datetime.datetime.utcnow(),
|
|
"initial": random.randint(0, 10),
|
|
"processing": random.randint(0, 10),
|
|
"verifying": random.randint(0, 10),
|
|
"completed": random.randint(0, 10),
|
|
"actions": member_actions_data
|
|
}
|
|
|
|
logger.info(f"Member Actions Error: {action_data}")
|
|
|
|
return ResponseHelper.success(data=action_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():
|
|
|
|
validated_data = AccountService.validate_data(data, UserSchema())
|
|
user_token = validated_data.get('token')
|
|
uid = str(validated_data.get('uid'))
|
|
|
|
member = Members.get_member_by_uid(uid)
|
|
|
|
# Simulate processing
|
|
response_data = {
|
|
"member_id": member.id,
|
|
"uid": str(uid),
|
|
"username": member.username,
|
|
"account_name": member.account_name,
|
|
"firstname":member.firstname,
|
|
"lastname": member.lastname,
|
|
"email": member.email,
|
|
"room": member.uid,
|
|
"token": user_token
|
|
}
|
|
|
|
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_calendar(data):
|
|
try:
|
|
with db.session.begin():
|
|
|
|
validated_data = AccountService.validate_data(data, UserSchema())
|
|
user_token = validated_data.get('token')
|
|
uid = str(validated_data.get('uid'))
|
|
|
|
dList = []
|
|
sample_range = random.randint(20, 60)
|
|
for x in range(sample_range):
|
|
timeMin = random.randint(1440, 2880)
|
|
calDate = datetime.datetime.utcnow() + datetime.timedelta(minutes=timeMin * random.randint(0, 20))
|
|
new_l = {"uid": "425611f2-c692-4404-b93d-76ca7a5ce7" + str(x),
|
|
"title": "Calendar Random Item on " + str(x), "start": calDate,
|
|
"category": random.randint(1, 4)}
|
|
dList.append(new_l)
|
|
|
|
calendar_data = {
|
|
"last_update": datetime.datetime.utcnow(),
|
|
"category": [
|
|
{"cid": "1", "description": "category 01"},
|
|
{"cid": "2", "description": "category 02"},
|
|
{"cid": "3", "description": "category 03"},
|
|
{"cid": "4", "description": "category 04"},
|
|
],
|
|
"list": dList
|
|
}
|
|
|
|
return ResponseHelper.success(data=calendar_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()
|