{% extends "layouts/base.twig" %} {% block title %}{{ translations.assign_position ?? 'Stanowiska pracownika' }}{% endblock %} {% block head %} {{ parent() }} {% endblock %} {% block page_heading %}

{{ translations.employee_positions ?? 'Stanowiska pracownika' }}

{{ translations.employee_positions_subtitle ?? '' }}

{% endblock %} {% block content %}

{{ translations.positions_for ?? 'Stanowiska dla' }}: {{ employee.getDisplayName() ?: (employee.getName() ~ ' ' ~ employee.getSurname()) }}

ID: {{ employee.getId() }} {{ translations.readonly ?? 'Tylko do odczytu' }}
{{ translations.back ?? 'Wróć' }}
{# ── Prepare ── #} {% set employee_competency_ids = employee.getCompetencyIds() %} {% set assigned_positions = employee.getPositions() %} {% set assigned_position_ids = [] %} {% set assigned_position_by_id = {} %} {% for ap in assigned_positions %} {% set pid = ap.getId() %} {% set assigned_position_ids = assigned_position_ids|merge([pid]) %} {% set assigned_position_by_id = assigned_position_by_id|merge({ ('pos_' ~ pid): { level_id: ap.getLevelId(), level_name: ap.getLevelName(), level_order: ap.getLevelOrder() } }) %} {% endfor %} {# ── Search + counters ── #}
{{ translations.total_positions ?? 'Wszystkich' }}: 0 {{ translations.assigned_positions ?? 'Przypisanych' }}: {{ assigned_positions|length }}
{{ translations.positions ?? 'Stanowiska' }}
{% if positions is empty %}
{{ translations.no_positions ?? 'Brak zdefiniowanych stanowisk.' }}
{% else %}
{% for pos in positions %} {% set levelCount = pos.getLevels() is defined ? pos.getLevels()|length : 0 %} {% set posHasAnyAvailableLevel = false %} {% set levelsForJs = [] %} {% if levelCount > 0 %} {% for lvl in pos.getLevels() %} {% set requiredIds = [] %} {% set requiredNames = [] %} {% if lvl.getCompetencies() is defined and lvl.getCompetencies() is not empty %} {% for rc in lvl.getCompetencies() %} {% set requiredIds = requiredIds|merge([rc.getId()]) %} {% set requiredNames = requiredNames|merge([rc.getName()]) %} {% endfor %} {% endif %} {% set requiredCount = requiredIds|length %} {% set haveCount = 0 %} {% for rid in requiredIds %} {% if rid in employee_competency_ids %}{% set haveCount = haveCount + 1 %}{% endif %} {% endfor %} {% set missingCount = requiredCount - haveCount %} {% set isLevelAvailable = (missingCount <= 0) %} {% if isLevelAvailable %}{% set posHasAnyAvailableLevel = true %}{% endif %} {% set percent = requiredCount == 0 ? 100 : ((haveCount / requiredCount) * 100)|round(0, 'floor') %} {% set levelsForJs = levelsForJs|merge([{ id: lvl.getId(), name: lvl.getName(), required_count: requiredCount, have_count: haveCount, missing_count: missingCount, percent: percent, is_available: isLevelAvailable }]) %} {% endfor %} {% endif %} {% set isAssigned = pos.getId() in assigned_position_ids %} {% set assignedKey = 'pos_' ~ pos.getId() %} {% set assignedInfo = assigned_position_by_id[assignedKey] ?? null %} {% set searchText = (pos.getName() ~ ' ' ~ (pos.getDescription() ?? ''))|lower %}
{{ pos.getName() }}
{{ levelCount }} {{ translations.levels ?? 'poziomów' }} {% if isAssigned %} {{ translations.assigned ?? 'Przypisano' }}{% if assignedInfo and assignedInfo.level_name %} • {{ assignedInfo.level_name }}{% endif %} {% else %} {{ translations.not_assigned ?? 'Nie przypisano' }} {% endif %} {% if posHasAnyAvailableLevel %} {{ translations.requirements_met ?? 'Wymogi spełnione' }} {% else %} {{ translations.requirements_not_met ?? 'Wymogi niespełnione' }} {% endif %}
{% if pos.getDescription() %}
{{ pos.getDescription() }}
{% endif %}

{% if levelCount == 0 %}
{{ translations.position_has_no_levels ?? 'Stanowisko nie ma zdefiniowanych poziomów.' }}
{% else %}
{{ translations.levels_and_required_competencies ?? 'Poziomy i wymagane kompetencje' }}
{% for lvl in levelsForJs %}
{% if lvl.is_available %} {% else %} {% endif %} {{ lvl.name ?? ('Poziom #' ~ lvl.id) }}
{{ lvl.have_count }}/{{ lvl.required_count }} {{ translations.competencies_genitive ?? 'kompetencji' }} {% if lvl.required_count > 0 and lvl.missing_count > 0 %} {{ translations.missing ?? 'Brak' }} {{ lvl.missing_count }} {% elseif lvl.required_count == 0 %} {{ translations.no_requirements ?? 'Brak wymagań' }} {% else %} {{ translations.complete ?? 'Kompletne' }} {% endif %}
{{ translations.progress ?? 'Postęp' }}: {{ lvl.percent }}%
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
{% endblock %} {% block scripts %} {% endblock %}