167 lines
7.3 KiB
Plaintext
Raw Normal View History

@using CandidateReviewDataModels.Models
@using Microsoft.AspNetCore.Mvc.TagHelpers
@using CandidateReviewContracts.ViewModels
@model ResumeViewModel
@{
ViewData["Title"] = "Резюме";
bool userRole = APIClient.User?.Role == CandidateReviewDataModels.Enums.RoleEnum.Сотрудник || APIClient.User.Role == CandidateReviewDataModels.Enums.RoleEnum.Администратор;
}
<div class="container mt-5">
<div class="d-flex justify-content-between mb-4">
<div class="card-header">
<h2>@Model.Title</h2>
<img src="@(Model.PhotoFilePath ?? "https://cdn-icons-png.flaticon.com/512/18/18601.png")"
style="max-width: 150px; max-height: 150px; object-fit: cover; "
class="card-img-top img-fluid rounded-circle mx-auto d-block"
alt="Аватар пользователя" />
<input type="hidden" name="id" value="@Model?.Id" />
</div>
<button class="btn btn-secondary" onclick="window.history.back();">Назад</button>
</div>
<div class="card shadow-sm mb-4">
<div class="card-body">
<div class="row">
<div class="col-md-6">
<dl class="row">
<dt class="col-sm-4">Вакансия:</dt>
<dd class="col-sm-8 text-muted">@Model.VacancyName</dd>
<dt class="col-sm-4">Навыки:</dt>
<dd class="col-sm-8 text-muted">@Model.Skills</dd>
<dt class="col-sm-4">Статус:</dt>
<dd class="col-sm-8 text-muted">@Model.Status</dd>
</dl>
</div>
<div class="col-md-6">
<dl class="row">
<dt class="col-sm-4">Опыт работы:</dt>
<dd class="col-sm-8 text-muted">@Model.Experience</dd>
<dt class="col-sm-4">Образование:</dt>
<dd class="col-sm-8 text-muted">@Model.Education</dd>
<dt class="col-sm-4">Описание:</dt>
<dd class="col-sm-8 text-muted">@Html.Raw(Model.Description)</dd>
</dl>
</div>
</div>
@if (Model.Status == CandidateReviewDataModels.Enums.ResumeStatusEnum.Черновик)
{
<div class="mt-4 text-end">
<a asp-action="EditResume" asp-controller="Resume" class="btn btn-primary">Отправить на оценку</a>
</div>
}
</div>
</div>
@if (userRole)
{
<h2 class="mb-4">Оценка резюме</h2>
<form method="post" asp-controller="Assessment" asp-action="AddAssessment">
<div class="row" id="criteriaList">
@if (ViewBag.Criterions != null)
{
<input type="hidden" name="ResumeId" value="@Model?.Id" />
@foreach (var criterion in ViewBag.Criterions)
{
var previousAssessment = Model.PreviousAssessments?.FirstOrDefault(a => a.Id == criterion.Id);
var isSelected = previousAssessment?.Id == criterion.Id ? "selected" : string.Empty;
<div class="row mb-3">
<div class="col-md-6">
<select name="criterionIds[]" class="form-control" required>
<option value="" disabled selected>Выберите критерий</option>
<option value="@criterion.Id" isSelected>@criterion.Name</option>
</select>
</div>
<div class="col-md-6">
<input type="number" class="form-control" name="criteriaValues[]" min="1" max="5"
value="@previousAssessment?.AssessmentCriterions?.FirstOrDefault().Value" required />
</div>
</div>
}
}
else
{
<p>Нет доступных критериев.</p>
}
</div>
<div class="row mb-3">
<div class="col-md-12">
<label for="comment" class="form-label">Комментарий</label>
<textarea id="comment" name="comment" class="form-control" rows="4" placeholder="Оставьте ваш комментарий..."></textarea>
</div>
</div>
<button type="button" class="btn btn-primary mt-3" id="addCriterionBtn">Оценить по другому критерию</button>
<button type="submit" class="btn btn-success mt-3">Сохранить</button>
</form>
<div class="mt-4">
<a asp-action="ManageCriterions" asp-controller="Criterion" class="btn btn-outline-secondary">Управление критериями</a>
</div>
}
</div>
<script>
document.addEventListener('DOMContentLoaded', function () {
var criterions = @Html.Raw(Json.Serialize(ViewBag.Criterions));
document.getElementById('addCriterionBtn').addEventListener('click', function () {
var criteriaList = document.getElementById('criteriaList');
var newRow = document.createElement('div');
newRow.classList.add('row', 'mb-3');
// Создаем выпадающий список для критерия
var criterionSelect = document.createElement('div');
criterionSelect.classList.add('col-md-6');
var select = document.createElement('select');
select.classList.add('form-control');
select.name = 'criterionIds[]';
select.required = true;
var defaultOption = document.createElement('option');
defaultOption.value = "";
defaultOption.textContent = "Выберите критерий";
select.appendChild(defaultOption);
criterions.forEach(function (criterion) {
var option = document.createElement('option');
option.value = criterion.id;
option.textContent = criterion.name;
select.appendChild(option);
});
criterionSelect.appendChild(select);
// Создаем поле ввода для оценки
var valueInput = document.createElement('div');
valueInput.classList.add('col-md-6');
var input = document.createElement('input');
input.type = 'number';
input.classList.add('form-control');
input.name = 'criteriaValues[]';
input.min = 1;
input.max = 5;
input.required = true; // Обязательное поле
valueInput.appendChild(input);
// Добавляем созданные элементы в новый ряд
newRow.appendChild(criterionSelect);
newRow.appendChild(valueInput);
// Добавляем новый ряд в список критериев
criteriaList.appendChild(newRow);
});
});
</script>