1f34fd126f
Card: move location to its own line above the date in the shift card (job card already did). Verification workflow: employers upload documents (license/permit) on a new Employer/Verify page; uploading marks the facility Pending. Admins see pending facilities with their documents on Admin/Facilities, can download each doc, and approve (تأیید شد) or reject with a reason. Documents stored as bytea in the DB (survives deploys via the existing volume); served only to the owner or an admin via /facility-doc/{id}. Facility model gains Verification status enum + note + requested-at; IsVerified kept in sync. Complaints: registered users/visitors can file a شکایت about a facility from shift/job detail pages (targets ReportTargetType.Facility, surfaces in Admin/Reports as مرکز). Migration backfills existing verified facilities to Verified.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
43 lines
1.9 KiB
Plaintext
43 lines
1.9 KiB
Plaintext
@model JobsMedical.Web.Models.Shift
|
|
@{
|
|
var (badgeClass, typeLabel) = Model.ShiftType switch
|
|
{
|
|
ShiftType.Day => ("badge-day", "صبح"),
|
|
ShiftType.Evening => ("badge-evening", "عصر"),
|
|
ShiftType.Night => ("badge-night", "شب"),
|
|
_ => ("badge-oncall", "آنکال"),
|
|
};
|
|
}
|
|
<a class="card card-pad shift-card" asp-page="/Shifts/Details" asp-route-id="@Model.Id">
|
|
<div class="row" style="justify-content: space-between;">
|
|
<span class="facility">@Model.Facility?.Name</span>
|
|
<span class="badge @badgeClass">@typeLabel</span>
|
|
</div>
|
|
<div class="row">
|
|
@if (Model.Role is not null)
|
|
{
|
|
<span class="badge badge-type">@Model.Role.Name</span>
|
|
}
|
|
@if (Model.GenderRequirement != Gender.Any)
|
|
{
|
|
<span class="badge badge-gender">@JalaliDate.GenderLabel(Model.GenderRequirement)</span>
|
|
}
|
|
@if (Model.Facility?.IsVerified == true)
|
|
{
|
|
<span class="badge badge-verified">✓ تأیید شده</span>
|
|
}
|
|
</div>
|
|
<div class="row loc-row">📍 @Model.Facility?.City?.Name@(Model.Facility?.District is not null ? "، " + Model.Facility.District.Name : "")</div>
|
|
@if (Model.DistanceKm is double km)
|
|
{
|
|
<div class="row"><span class="badge badge-distance">📍 @JalaliDate.ToPersianDigits(km.ToString("0.#")) کیلومتر از شما</span></div>
|
|
}
|
|
<div class="row">📅 @JalaliDate.WeekDayName(Model.Date)، @JalaliDate.ToLongDate(Model.Date)</div>
|
|
<div class="row">🕐 @JalaliDate.Time(Model.StartTime) تا @JalaliDate.Time(Model.EndTime)</div>
|
|
<partial name="_HourBar" model="Model" />
|
|
<div class="foot">
|
|
<span class="pay">@JalaliDate.PayLabel(Model.PayType, Model.PayAmount, Model.SharePercent)</span>
|
|
<span class="btn btn-outline" style="padding: 6px 14px;">جزئیات</span>
|
|
</div>
|
|
</a>
|