using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Authorization; using Microsoft.EntityFrameworkCore; using RR3CommunityServer.Data; using static RR3CommunityServer.Data.RR3DbContext; namespace RR3CommunityServer.Pages; [Authorize] public class SessionsModel : PageModel { private readonly RR3DbContext _context; public SessionsModel(RR3DbContext context) { _context = context; } public List AllSessions { get; set; } = new(); public List ActiveSessions { get; set; } = new(); public List ExpiredSessions { get; set; } = new(); public async Task OnGetAsync() { AllSessions = await _context.Sessions .OrderByDescending(s => s.CreatedAt) .ToListAsync(); var now = DateTime.UtcNow; ActiveSessions = AllSessions.Where(s => s.ExpiresAt > now).ToList(); ExpiredSessions = AllSessions.Where(s => s.ExpiresAt <= now).ToList(); } public async Task OnPostDeleteAsync(int sessionId) { var session = await _context.Sessions.FindAsync(sessionId); if (session != null) { _context.Sessions.Remove(session); await _context.SaveChangesAsync(); } return RedirectToPage(); } public async Task OnPostCleanupExpiredAsync() { var expiredSessions = await _context.Sessions .Where(s => s.ExpiresAt <= DateTime.UtcNow) .ToListAsync(); _context.Sessions.RemoveRange(expiredSessions); await _context.SaveChangesAsync(); return RedirectToPage(); } }