40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
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<ActionResult<object>> 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)
|
|
}
|
|
};
|
|
}
|
|
}
|