Office back fix
This commit is contained in:
@@ -149,7 +149,7 @@ def upload_file():
|
|||||||
|
|
||||||
if file and allowed_file(file.filename):
|
if file and allowed_file(file.filename):
|
||||||
logger.info(f'POST CALLED 5 {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"
|
# save_path=UPLOAD_FOLDER + "/" + "F000000000001"
|
||||||
# filename = secure_filename(file.filename)
|
# filename = secure_filename(file.filename)
|
||||||
@@ -234,6 +234,7 @@ def merms_account_payments():
|
|||||||
response = AccountService.process_payments_data(data)
|
response = AccountService.process_payments_data(data)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@api.route("/panel/account/media-files", methods=["POST"])
|
@api.route("/panel/account/media-files", methods=["POST"])
|
||||||
def get_websitefiles():
|
def get_websitefiles():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
@@ -241,6 +242,7 @@ def get_websitefiles():
|
|||||||
response = FileUploadService.member_webfiles(data)
|
response = FileUploadService.member_webfiles(data)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
@api.route("/panel/account/products/url", methods=["POST"])
|
@api.route("/panel/account/products/url", methods=["POST"])
|
||||||
def myproduct_url():
|
def myproduct_url():
|
||||||
data = request.get_json()
|
data = request.get_json()
|
||||||
@@ -611,6 +613,20 @@ def get_subscription_billings_office():
|
|||||||
return jsonify(result)
|
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'])
|
@api.route('/office/transaction', methods=['GET'])
|
||||||
def get_subscription_transaction_office():
|
def get_subscription_transaction_office():
|
||||||
# Call the dashboard service
|
# Call the dashboard service
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
from urllib import request
|
from urllib import request
|
||||||
|
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
|
|
||||||
|
from app.config import settings
|
||||||
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
|
||||||
from sqlalchemy import func, desc
|
from sqlalchemy import func, desc
|
||||||
from datetime import datetime, timedelta, timezone
|
from datetime import datetime, timedelta, timezone
|
||||||
from app.extensions import db
|
from app.extensions import db
|
||||||
from app.models import MembersProducts, Products, Payments, Members, CustomTemplates, ProductsTemplates, MembersProfile, \
|
from app.models import MembersProducts, Products, Payments, Members, CustomTemplates, ProductsTemplates, MembersProfile, \
|
||||||
ProductsDetails
|
ProductsDetails, MembersWebfiles
|
||||||
|
|
||||||
|
|
||||||
class OfficeDashboardService(BaseService):
|
class OfficeDashboardService(BaseService):
|
||||||
@@ -518,3 +520,66 @@ class OfficeDashboardService(BaseService):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
|
logger.error(f"An error occurred while getting dashboard data: {str(e)}", exc_info=True)
|
||||||
return jsonify({"message": "Internal Server Error"}), 500
|
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
|
||||||
@@ -76,6 +76,30 @@ class MembersWebfiles(db.Model):
|
|||||||
return None
|
return None
|
||||||
return member_webfile
|
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):
|
def to_dict(self):
|
||||||
"""
|
"""
|
||||||
Convert the Loan object to a dictionary format for JSON serialization.
|
Convert the Loan object to a dictionary format for JSON serialization.
|
||||||
|
|||||||
Reference in New Issue
Block a user