from flask import jsonify from app.utils.logger import logger from app.api.services.base_service import BaseService from sqlalchemy import func, desc from datetime import datetime, timedelta, timezone from app.extensions import db from app.models import OfficeUsers, CustomTemplates, MembersProducts, ProductsTemplates, MembersProductsRefresh class OfficeTemplatesService(BaseService): @staticmethod def set_office_custom_template(data): logger.info('set_office_custom_template') try: with db.session.begin(): subscrtiption_uid = data.get('subscrtiption_uid', '') custom_id = data.get('custom_id', '') membersSubResult = MembersProducts.get_member_product_by_subscription_uid(subscrtiption_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 {subscrtiption_uid} does not exist." }, 400 member_id = membersSubResult.member_id logger.info(f'set_office_custom_template {member_id} {subscrtiption_uid} {custom_id}') MembersProducts.set_member_product_custom_template(member_id, subscrtiption_uid, custom_id) office_users_result = { "set_office_custom_template": [], } return office_users_result except Exception as e: logger.error(f"An error occurred: {str(e)}", exc_info=True) office_users_result = { "error": f"An error occurred: {str(e)}", } return office_users_result @staticmethod def set_office_user_template(data): logger.info('set_office_user_template') try: subscrtiption_uid = data.get('subscrtiption_uid', '') template_uid = data.get('template_uid', '') selectProduct = None selectedTemplate = None selectProduct = MembersProducts.get_member_product_by_subscription_uid(subscrtiption_uid) if selectProduct: selectedTemplate = ProductsTemplates.get_template_by_uid(template_uid) if selectedTemplate is None or selectedTemplate is None: return jsonify({ 'error': 'Missing credentials', 'message': 'Invalid credentials', }), 400 office_users_result = { "set_office_user_template": [], } return office_users_result except Exception as e: logger.error(f"An error occurred: {str(e)}", exc_info=True) office_users_result = { "error": f"An error occurred: {str(e)}", } return office_users_result @staticmethod def create_custom_template(data): logger.info('create_custom_template') try: custom_id = data.get('custom_id', '') provision_name = data.get('provision_name', '') similarName = CustomTemplates.get_template_by_custom_id(custom_id) if not similarName and provision_name != '': # with db.session.begin(): custom_data = CustomTemplates.create_template(custom_id, provision_name) else: custom_data = { "error": "Possible duplicate" } office_users_result = { "custom_data": custom_data, } return office_users_result except Exception as e: logger.error(f"An error occurred: {str(e)}", exc_info=True) office_users_result = { "error": f"An error occurred: {str(e)}", } return office_users_result @staticmethod def office_template_rebuild(data): logger.info('office_template_rebuild') try: with db.session.begin(): subscription_uid = data.get('subscription_uid', '') custom_id = data.get('custom_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 member_id = membersSubResult.member_id product_id = membersSubResult.product_id logger.info(f'office_template_rebuild {member_id} {subscription_uid} {product_id}') # with db.session.begin(): plannedRefresh = MembersProductsRefresh.create_subscription_refresh(member_id, product_id, subscription_uid) office_rebuild_result = { "office_template_rebuild": [], } return office_rebuild_result except Exception as e: logger.error(f"An error occurred: {str(e)}", exc_info=True) office_rebuild_result = { "error": f"An error occurred: {str(e)}", } return office_rebuild_result