Office back fix

This commit is contained in:
CHIEFSOFT\ameye
2026-01-01 15:10:13 -05:00
parent 42f9d7fb24
commit 565fb8a35d
3 changed files with 107 additions and 2 deletions
+17 -1
View File
@@ -149,7 +149,7 @@ def upload_file():
if file and allowed_file(file.filename):
logger.info(f'POST CALLED 5 {file.filename}')
response = FileUploadService.process_file_upload("WEB_MEDIA", file ,member_uid )
response = FileUploadService.process_file_upload("WEB_MEDIA", file, member_uid)
# save_path=UPLOAD_FOLDER + "/" + "F000000000001"
# filename = secure_filename(file.filename)
@@ -234,6 +234,7 @@ def merms_account_payments():
response = AccountService.process_payments_data(data)
return response
@api.route("/panel/account/media-files", methods=["POST"])
def get_websitefiles():
data = request.get_json()
@@ -241,6 +242,7 @@ def get_websitefiles():
response = FileUploadService.member_webfiles(data)
return response
@api.route("/panel/account/products/url", methods=["POST"])
def myproduct_url():
data = request.get_json()
@@ -611,6 +613,20 @@ def get_subscription_billings_office():
return jsonify(result)
@api.route('/office/file-uploads', methods=['GET'])
# @token_required
def get_file_uploads_office():
# Call the dashboard service
filters = {
'product_id': request.args.get('product_id'),
'member_id': request.args.get('member_id'),
'page': request.args.get('page', 1),
'limit': request.args.get('limit', 20)
}
result = OfficeDashboardService.get_file_upload_data(filters)
return jsonify(result)
@api.route('/office/transaction', methods=['GET'])
def get_subscription_transaction_office():
# Call the dashboard service
+66 -1
View File
@@ -1,13 +1,15 @@
from urllib import request
from flask import jsonify
from app.config import settings
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 MembersProducts, Products, Payments, Members, CustomTemplates, ProductsTemplates, MembersProfile, \
ProductsDetails
ProductsDetails, MembersWebfiles
class OfficeDashboardService(BaseService):
@@ -515,6 +517,69 @@ class OfficeDashboardService(BaseService):
return response_data
except Exception as e:
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
return jsonify({"message": "Internal Server Error"}), 500
@staticmethod
def get_file_upload_data(filters):
try:
if filters is None:
filters = {}
# Extract filters
file_group = filters.get('file_group')
member_id = filters.get('member_id')
# Extract pagination parameters
page = int(filters.get('page', 1))
limit = int(filters.get('limit', 20))
# Ensure page and limit are valid
if page < 1:
page = 1
if limit < 1 or limit > 100:
limit = 20
fileListData, total_count = MembersWebfiles.get_all_webfiles(file_group, file_group, page, limit)
# Convert loans to dictionary format
member_sub_data = []
if fileListData:
for subs in fileListData:
member_sub_data.append({
'id': subs.id,
'file_uid': subs.uid,
'member_id': subs.member_id,
'member_uid': subs.member_uid,
'file_group': subs.file_group,
'filename': subs.filename,
'save_filename': subs.save_filename,
'file_type': subs.file_type,
'status': subs.status,
'file_size': subs.file_size,
'added': subs.added.isoformat() if subs.added else None,
'updated': subs.updated.isoformat() if subs.updated else None
})
# Calculate total pages
total_pages = (total_count + limit - 1) // limit
response_data = {
'file_list': member_sub_data,
'media_server': settings.MEDIA_SERVER,
'count': len(member_sub_data),
'pagination': {
'total_count': total_count,
'total_pages': total_pages,
'current_page': page,
'limit': limit,
'has_next': page < total_pages,
'has_prev': page > 1
}
}
return response_data
except Exception as e:
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
return jsonify({"message": "Internal Server Error"}), 500
+24
View File
@@ -76,6 +76,30 @@ class MembersWebfiles(db.Model):
return None
return member_webfile
@classmethod
def get_all_webfiles(cls, file_group=None, member_id=None, page=1, limit=20):
query = cls.query
logger.info(f"Get all payments back")
if member_id:
query = query.filter(cls.member_id == member_id)
if file_group:
query = query.filter(cls.file_group == file_group)
# Order by created_at descending (newest first)
query = query.order_by(cls.added.desc())
# Get total count before pagination
total_count = query.count()
# Apply pagination
offset = (page - 1) * limit
query = query.limit(limit).offset(offset)
return query.all(), total_count
def to_dict(self):
"""
Convert the Loan object to a dictionary format for JSON serialization.