Files
hamkadr/src/JobsMedical.Web/Pages/Admin/Overview.cshtml.cs
T

39 lines
1.8 KiB
C#
Raw Normal View History

using JobsMedical.Web.Data;
using JobsMedical.Web.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.EntityFrameworkCore;
namespace JobsMedical.Web.Pages.Admin;
[Authorize(Roles = "Admin")]
public class OverviewModel : PageModel
{
private readonly AppDbContext _db;
public OverviewModel(AppDbContext db) => _db = db;
public int Users, Employers, Staff, Banned;
public int Facilities, VerifiedFacilities, PendingFacilities;
public int OpenShifts, OpenJobs, Applies;
public int PushSubs, QueueNew, QueueFlagged, OpenReports;
public async Task OnGetAsync()
{
var today = DateOnly.FromDateTime(DateTime.UtcNow);
Users = await _db.Users.CountAsync();
Employers = await _db.Users.CountAsync(u => u.Role == UserRole.FacilityAdmin);
Staff = await _db.Users.CountAsync(u => u.Role == UserRole.Doctor);
Banned = await _db.Users.CountAsync(u => u.IsBanned);
Facilities = await _db.Facilities.CountAsync();
VerifiedFacilities = await _db.Facilities.CountAsync(f => f.IsVerified);
PendingFacilities = Facilities - VerifiedFacilities;
OpenShifts = await _db.Shifts.CountAsync(s => s.Status == ShiftStatus.Open && s.Date >= today);
OpenJobs = await _db.JobOpenings.CountAsync(j => j.Status == ShiftStatus.Open);
Applies = await _db.InterestEvents.CountAsync(e => e.EventType == InterestEventType.Apply);
PushSubs = await _db.WebPushSubscriptions.CountAsync();
QueueNew = await _db.RawListings.CountAsync(r => r.Status == RawListingStatus.New);
QueueFlagged = await _db.RawListings.CountAsync(r => r.Status == RawListingStatus.Flagged);
OpenReports = await _db.Reports.CountAsync(r => r.Status == ReportStatus.Open);
}
}