Files
hamkadr/src/JobsMedical.Web/Pages/Employer/PostShift.cshtml
T
soroush.asadi 6cfdd16c42
CI/CD / CI · dotnet build (push) Successful in 6m23s
CI/CD / Deploy · hamkadr (push) Failing after 6m30s
Add gender requirement (آقا/خانم/فرقی نمی‌کند) + employee (کارجو) panel
- Gender enum + GenderRequirement on Shift/JobOpening + Gender on UserPreferences (migration)
- Employer PostShift/PostJob + admin Review have a gender select; parser detects آقا/خانم/مرد/زن
- Gender badge on cards + detail; gender filter on Shifts/Jobs; gender in preferences
- Recommendations exclude listings whose gender requirement conflicts with the person's gender
- Two panels: new /Me employee (کارجو) panel (recommendations + saved + applied + prefs) alongside /Employer; nav routes by role; /Account/Profile → /Me

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 00:19:32 +03:30

91 lines
4.2 KiB
Plaintext

@page
@model JobsMedical.Web.Pages.Employer.PostShiftModel
@{
ViewData["Title"] = "انتشار شیفت";
}
<div class="page-head"><div class="container"><h1>انتشار شیفت جدید</h1></div></div>
<div class="container section" style="max-width:560px;">
@if (Model.Error is not null)
{
<div class="alert" style="background:#fdeaea; color:var(--danger);">@Model.Error</div>
}
@if (Model.MyFacilities.Count == 0)
{
<div class="card empty-state">
ابتدا یک مرکز ثبت کن.
<a class="btn btn-accent" asp-page="/Employer/RegisterFacility">ثبت مرکز</a>
</div>
}
else
{
<form method="post" class="card card-pad">
<div class="filter-group">
<label>مرکز درمانی</label>
<select name="FacilityId">
@foreach (var f in Model.MyFacilities)
{
<option value="@f.Id">@f.Name — @f.City?.Name</option>
}
</select>
</div>
<div class="filter-group">
<label>نقش مورد نیاز</label>
<select name="RoleId">
@foreach (var r in Model.Roles)
{
<option value="@r.Id">@r.Name</option>
}
</select>
</div>
<div class="filter-group">
<label>جنسیت مورد نیاز</label>
<select name="GenderRequirement">
<option value="0">فرقی نمی‌کند</option>
<option value="1">آقا</option>
<option value="2">خانم</option>
</select>
</div>
<div class="filter-group">
<label>تاریخ (میلادی)</label>
<input type="date" name="Date" value="@Model.Date.ToString("yyyy-MM-dd")" dir="ltr" />
</div>
<div class="filter-group">
<label>نوع شیفت</label>
<select name="ShiftType">
<option value="0">صبح</option>
<option value="1">عصر</option>
<option value="2">شب</option>
<option value="3">آنکال</option>
</select>
</div>
<div class="filter-group" style="display:flex; gap:8px;">
<div style="flex:1;"><label>شروع</label><input type="time" name="StartTime" value="@Model.StartTime.ToString("HH:mm")" dir="ltr" /></div>
<div style="flex:1;"><label>پایان</label><input type="time" name="EndTime" value="@Model.EndTime.ToString("HH:mm")" dir="ltr" /></div>
</div>
<div class="filter-group" style="display:flex; gap:8px;">
<div style="flex:1;">
<label>مبلغ مقطوع هر شیفت (تومان)</label>
<input type="number" name="PayAmount" value="@Model.PayAmount" dir="ltr" />
</div>
<div style="flex:1;">
<label>یا سهم درآمد (٪)</label>
<input type="number" name="SharePercent" value="@Model.SharePercent" min="1" max="100" dir="ltr" placeholder="مثلاً ۵۰" />
</div>
</div>
<p class="muted" style="font-size:12px;">می‌توانی فقط مبلغ، فقط درصد، یا هر دو را وارد کنی؛ اگر هر دو پر شود به کاربر «به انتخاب شما» نمایش داده می‌شود.</p>
<div class="filter-group">
<label style="display:flex; align-items:center; gap:8px; font-weight:600;">
<input type="checkbox" name="Negotiable" value="true" style="width:auto;" checked="@Model.Negotiable" /> توافقی (بدون مبلغ مشخص)
</label>
</div>
<div class="filter-group">
<label>توضیحات</label>
<textarea name="Description" rows="3">@Model.Description</textarea>
</div>
<button type="submit" class="btn btn-accent btn-block btn-lg">انتشار شیفت</button>
</form>
}
</div>