import logging from odoo import http from odoo.http import request from odoo.addons.encoach_api.controllers.base import ( jwt_required, _json_response, _error_response, ) _logger = logging.getLogger(__name__) class StatsController(http.Controller): @http.route('/api/sessions', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def list_sessions(self, **kw): try: return _json_response([]) except Exception as e: return _error_response(str(e), 500) @http.route('/api/stats', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def get_stats(self, **kw): try: env = request.env course_count = env['op.course'].sudo().search_count([]) student_count = env['op.student'].sudo().search_count([]) faculty_count = env['op.faculty'].sudo().search_count([]) batch_count = env['op.batch'].sudo().search_count([]) return _json_response([{ 'label': 'courses', 'value': course_count, }, { 'label': 'students', 'value': student_count, }, { 'label': 'teachers', 'value': faculty_count, }, { 'label': 'batches', 'value': batch_count, }]) except Exception as e: return _error_response(str(e), 500) @http.route('/api/statistical', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def get_statistical(self, **kw): try: env = request.env return _json_response({ 'total_students': env['op.student'].sudo().search_count([]), 'total_courses': env['op.course'].sudo().search_count([]), 'total_teachers': env['op.faculty'].sudo().search_count([]), 'total_batches': env['op.batch'].sudo().search_count([]), 'exam_count': 0, 'pass_rate': 0, 'avg_score': 0, }) except Exception as e: return _error_response(str(e), 500) @http.route('/api/stats/performance', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def get_performance(self, **kw): try: return _json_response([]) except Exception as e: return _error_response(str(e), 500) # ── Analytics ──────────────────────────────────────────────────── @http.route('/api/analytics/student', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def analytics_student(self, **kw): try: return _json_response({ 'total_courses': 0, 'completed_courses': 0, 'average_score': 0, 'attendance_rate': 0, }) except Exception as e: return _error_response(str(e), 500) @http.route('/api/analytics/class', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def analytics_class(self, **kw): try: return _json_response({ 'total_students': 0, 'average_score': 0, 'pass_rate': 0, }) except Exception as e: return _error_response(str(e), 500) @http.route('/api/analytics/subject', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def analytics_subject(self, **kw): try: return _json_response({ 'subjects': [], }) except Exception as e: return _error_response(str(e), 500) @http.route('/api/analytics/content-gaps', type='http', auth='public', methods=['GET'], csrf=False) @jwt_required def analytics_content_gaps(self, **kw): try: return _json_response({ 'gaps': [], }) except Exception as e: return _error_response(str(e), 500)