Files
MermsCoreFlask/app/api/services/account.py
T
2025-06-24 11:59:45 -04:00

100 lines
4.1 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
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):
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_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,
"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()