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)
