[Profile] Show applicant avatar + resume to employers; profile-completeness nudge
CI/CD / CI · dotnet build (push) Successful in 1m33s
CI/CD / Deploy · hamkadr (push) Successful in 2m7s

Employer Listings: each applicant row now shows their avatar (or initials) and a «مشاهده رزومه» link when they uploaded one (served via /resume/{id}, already access-controlled to the receiving employer). Applicant projection avoids loading avatar/resume blobs. Me panel: a nudge banner prompts users to complete their profile (name/photo/resume) when any is missing, linking to /Me/Profile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-07 07:14:03 +03:30
parent e633463906
commit c46e628f6a
5 changed files with 63 additions and 18 deletions
@@ -27,6 +27,13 @@
</div>
<div class="container section">
@if (Model.ProfileIncomplete)
{
<div class="profile-nudge">
<span class="pn-text">✨ پروفایلت را کامل کن (نام، تصویر، رزومه) تا شانس پذیرش‌ات بیشتر شود.</span>
<a class="btn btn-accent btn-sm" asp-page="/Me/Profile">تکمیل پروفایل</a>
</div>
}
<div class="rec-banner">
<div>
<h2 style="margin:0 0 4px;">✨ پیشنهادهای ویژه شما</h2>
@@ -31,11 +31,14 @@ public class IndexModel : PageModel
public List<JobOpening> AppliedJobs { get; private set; } = new();
public Dictionary<int, ApplicationStatus> ShiftAppStatus { get; private set; } = new();
public Dictionary<int, ApplicationStatus> JobAppStatus { get; private set; } = new();
public bool ProfileIncomplete { get; private set; }
public async Task OnGetAsync()
{
var userId = int.Parse(User.FindFirstValue(ClaimTypes.NameIdentifier)!);
CurrentUser = await _db.Users.FindAsync(userId);
ProfileIncomplete = CurrentUser is not null &&
(string.IsNullOrWhiteSpace(CurrentUser.FullName) || CurrentUser.Avatar is null || CurrentUser.Resume is null);
Prefs = await _interest.GetPreferencesAsync();
Recommendations = await _recs.GetForVisitorAsync(6);