Files
hamkadr/src/JobsMedical.Web/Pages/Admin/Analytics.cshtml
T
soroush.asadi aa61efd46f
CI/CD / CI · dotnet build (push) Successful in 47s
CI/CD / Deploy · hamkadr (push) Successful in 1m28s
[Applicant+Admin] Withdraw application, delete account, admin analytics dashboard
Applicant: 'انصراف از درخواست' on /Me removes the Apply event for that shift/job. Account: 'حذف حساب من' on /Me/Profile permanently deletes the user + cascades (profile, alerts, reviews, applications), detaches anonymous visitor history, and signs out (per privacy policy). Admin: /Admin/Analytics dashboard — totals (users, facilities/verified, open shifts/jobs, applications, reviews), 7-day deltas, and a 14-day applications bar chart; linked from Overview alongside the new نظرات moderation page.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 07:52:49 +03:30

46 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@page
@model JobsMedical.Web.Pages.Admin.AnalyticsModel
@{
ViewData["Title"] = "آمار و تحلیل";
string Fa(int n) => JalaliDate.ToPersianDigits(n.ToString());
}
<div class="page-head">
<div class="container">
<h1>📊 آمار و تحلیل</h1>
<p class="muted"><a asp-page="/Admin/Overview">← پنل مدیریت</a></p>
</div>
</div>
<div class="container section">
<div class="grid grid-4">
<div class="card card-pad"><div class="muted">کاربران</div><div style="font-size:26px; font-weight:800;">@Fa(Model.Users)</div><div class="muted" style="font-size:12px;">+@Fa(Model.NewUsers7) در ۷ روز</div></div>
<div class="card card-pad"><div class="muted">مراکز</div><div style="font-size:26px; font-weight:800;">@Fa(Model.Facilities)</div><div class="muted" style="font-size:12px;">@Fa(Model.VerifiedFacilities) تأییدشده</div></div>
<div class="card card-pad"><div class="muted">شیفت‌های باز</div><div style="font-size:26px; font-weight:800; color:var(--primary-dark);">@Fa(Model.OpenShifts)</div></div>
<div class="card card-pad"><div class="muted">استخدام‌های باز</div><div style="font-size:26px; font-weight:800; color:var(--primary-dark);">@Fa(Model.OpenJobs)</div></div>
<div class="card card-pad"><div class="muted">اعلام تمایل‌ها</div><div style="font-size:26px; font-weight:800; color:var(--accent);">@Fa(Model.Applications)</div><div class="muted" style="font-size:12px;">+@Fa(Model.NewApps7) در ۷ روز</div></div>
<div class="card card-pad"><div class="muted">نظرات</div><div style="font-size:26px; font-weight:800;">@Fa(Model.Reviews)</div></div>
</div>
<div class="card card-pad" style="margin-top:18px;">
<h3 style="margin-top:0;">اعلام تمایل — ۱۴ روز اخیر</h3>
<div style="display:flex; align-items:flex-end; gap:6px; height:140px; padding-top:10px;">
@foreach (var b in Model.ApplyByDay)
{
var h = (int)(b.Count / (double)Model.MaxBar * 120) + 2;
<div style="flex:1; display:flex; flex-direction:column; align-items:center; gap:4px;">
<div style="width:100%; height:@(h)px; background:var(--primary); border-radius:6px 6px 0 0;" title="@Fa(b.Count)"></div>
<span class="muted" style="font-size:10px;">@Fa(b.Day.Day)</span>
</div>
}
</div>
</div>
<div class="card card-pad" style="margin-top:18px; display:flex; gap:10px; flex-wrap:wrap;">
<a class="btn btn-outline" asp-page="/Admin/Index">صف آگهی‌ها</a>
<a class="btn btn-outline" asp-page="/Admin/Facilities">مراکز</a>
<a class="btn btn-outline" asp-page="/Admin/Reviews">نظرات</a>
<a class="btn btn-outline" asp-page="/Admin/Reports">گزارش‌ها</a>
<a class="btn btn-outline" asp-page="/Admin/Users">کاربران</a>
</div>
</div>