using Jiaowu.Api.Infrastructure.Persistence; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; namespace Jiaowu.Api.Controllers; [ApiController] [Authorize] [Route("api/dashboard")] public sealed class DashboardController(AppDbContext db) : ControllerBase { [HttpGet] public async Task> Get(CancellationToken cancellationToken) { var currentTerm = await db.AcademicTerms .AsNoTracking() .Where(x => x.IsCurrent) .Select(x => new { x.Id, x.Name, x.StartDate, x.EndDate }) .FirstOrDefaultAsync(cancellationToken); return new { CurrentTerm = currentTerm, Counts = new { Campuses = await db.Campuses.CountAsync(cancellationToken), Colleges = await db.Colleges.CountAsync(cancellationToken), Majors = await db.Majors.CountAsync(cancellationToken), Classes = await db.AdministrativeClasses.CountAsync(cancellationToken), Classrooms = await db.Classrooms.CountAsync(cancellationToken), Teachers = await db.Teachers.CountAsync(cancellationToken), Students = await db.Students.CountAsync(cancellationToken), Courses = await db.Courses.CountAsync(cancellationToken), Users = await db.Users.CountAsync(cancellationToken) } }; } }