307 lines
17 KiB
Twig
307 lines
17 KiB
Twig
{% extends 'admin/layout.html.twig' %}
|
|
|
|
{% block content %}
|
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Neue Bewerbungen</span>
|
|
{% if newApplicationsCount > 0 or pendingApplicationsCount > 0 %}
|
|
<span>{{ newApplicationsCount }} neu, {{ pendingApplicationsCount }} in Bearbeitung</span>
|
|
{% endif %}
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for application in applications %}
|
|
{% set assignment = application.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<a href="{{ path('app_administrative_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}" class="flex items-center space-x-1">
|
|
{{ icon('hand', 'w-4 h-4 shrink-0') }}
|
|
<span class="whitespace-nowrap">{{ application.teamer.fullName(true) }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.effectivePeriod.start|date('d.m.y') }} - {{ assignment.effectivePeriod.end|date('d.m.y') }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.destination.hotel }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.jobProfile.name }}</span>
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="font-bold text-lg pb-2">
|
|
Neue Einteilungen
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for disposition in newDispositions %}
|
|
{% set assignment = disposition.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<a href="{{ path('app_administrative_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}" class="flex items-center space-x-1">
|
|
{{ icon('hand', 'w-4 h-4 shrink-0') }}
|
|
{% include '_partials/_disposition_data.html.twig' with { 'disposition': disposition } %}
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Neue Honorarverträge</span>
|
|
{% if newContractsCount > 0 or pendingContractsCount > 0 %}
|
|
<span>{{ newContractsCount }} neu, {{ pendingContractsCount }} in Bearbeitung</span>
|
|
{% endif %}
|
|
</h2>
|
|
<div class="max-h-64 overflow-y-scroll overflow-x-hidden">
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for document in newContracts %}
|
|
{% set assignment = document.disposition.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<button type="button"
|
|
class="flex items-center space-x-1 truncate"
|
|
hx-get="{{ path('app_administrative_document_check', { 'uuid': document.uuid, 'r': return_url() }) }}"
|
|
hx-target="body"
|
|
hx-swap="beforeend">
|
|
{{ icon('download', 'w-4 h-4 shrink-0') }}
|
|
<span>{{ document.owner.teamer.fullName(true) }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.effectivePeriod.start|date('d.m.y') }} - {{ assignment.effectivePeriod.end|date('d.m.y') }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.destination.hotel }}</span>
|
|
</button>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Neue Honorarnoten</span>
|
|
{% if newInvoicesCount > 0 or pendingInvoicesCount > 0 %}
|
|
<span>{{ newInvoicesCount }} neu, {{ pendingInvoicesCount }} in Bearbeitung</span>
|
|
{% endif %}
|
|
</h2>
|
|
<div class="max-h-64 overflow-y-scroll overflow-x-hidden">
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for document in newInvoices %}
|
|
{% set assignment = document.disposition.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<button type="button"
|
|
class="flex items-center space-x-1 truncate"
|
|
hx-get="{{ path('app_administrative_document_check', { 'uuid': document.uuid, 'r': return_url() }) }}"
|
|
hx-target="body"
|
|
hx-swap="beforeend">
|
|
{{ icon('download', 'w-4 h-4 shrink-0') }}
|
|
<span>{{ document.owner.teamer.fullName(true) }}</span>
|
|
<span class="whitespace-nowrap">{{ assignment.effectivePeriod.start|date('d.m.y') }} - {{ assignment.effectivePeriod.end|date('d.m.y') }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.destination.hotel }}</span>
|
|
</button>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Neue Führerscheine</span>
|
|
{% if newDriverLicensesCount > 0 %}
|
|
<span>{{ newDriverLicensesCount }} neu</span>
|
|
{% endif %}
|
|
</h2>
|
|
<div class="max-h-64 overflow-y-scroll overflow-x-hidden">
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for document in newDriverLicenses %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<button type="button"
|
|
class="flex items-center space-x-1 truncate"
|
|
hx-get="{{ path('app_administrative_teamer_driver_license_check', { 'uuid': document.uuid }) }}"
|
|
hx-target="body"
|
|
hx-swap="beforeend">
|
|
{{ icon('download', 'w-4 h-4 shrink-0') }}
|
|
<span>{{ document.owner.teamer.fullName(true) }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ document.createdAt|date('d.m.y') }}</span>
|
|
</button>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="font-bold text-lg pb-2">
|
|
Neue Einsätze
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for assignment in assignments %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<a href="{{ path('app_administrative_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}"
|
|
class="flex items-center space-x-1">
|
|
{{ icon('calendar', 'w-4 h-4 shrink-0') }}
|
|
<span class="whitespace-nowrap">{{ assignment.effectivePeriod.start|date('d.m.y') }} - {{ assignment.effectivePeriod.end|date('d.m.y') }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.jobProfile.name }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.owner.fullName(true) }}</span>
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="font-bold text-lg pb-2">
|
|
Neue Verfügbarkeiten
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for availability in availabilities %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<a href="{{ path('app_admin_teamer_availability', { 'uuid': availability.owner.uuid, 'r': return_url() }) }}"
|
|
class="flex items-center space-x-1">
|
|
{{ icon('calendar', 'w-4 h-4 shrink-0') }}
|
|
<span class="whitespace-nowrap">{{ availability.owner.fullName(true) }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ availability.dateFrom|date('d.m.y') }} - {{ availability.dateTo|date('d.m.y') }}</span>
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Neue Feedbacks</span>
|
|
{% if pendingFeedbacksCount > 0 %}
|
|
<span>{{ pendingFeedbacksCount }} freizugeben</span>
|
|
{% endif %}
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for feedback in feedbacks %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<button type="button"
|
|
hx-get="{{ path('app_admin_feedback_approve', { 'uuid': feedback.uuid }) }}"
|
|
hx-target="body"
|
|
hx-swap="beforeend" class="flex items-center space-x-1">
|
|
{{ icon('feedback', 'w-4 h-4 shrink-0') }}
|
|
<span class="whitespace-nowrap">{{ feedback.teamer }}</span>
|
|
{% if feedback.destinationName %}
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ feedback.destinationName }}</span>
|
|
{% endif %}
|
|
{% if feedback.jobProfileName %}
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ feedback.jobProfileName }}</span>
|
|
{% endif %}
|
|
</button>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
|
|
{% set overdueFeedbacksCount = overdueFeedbacks|length %}
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Überfällige Feedbacks</span>
|
|
{% if overdueFeedbacksCount > 0 %}
|
|
<span>{{ overdueFeedbacksCount }} überfällig</span>
|
|
{% endif %}
|
|
</h2>
|
|
<div class="max-h-64 overflow-y-scroll overflow-x-hidden">
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for disposition in overdueFeedbacks %}
|
|
{% set assignment = disposition.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<a href="{{ path('app_administrative_feedback_provide', { 'uuid': disposition.uuid, 'r': return_url() }) }}"
|
|
class="flex items-center space-x-1">
|
|
{{ icon('feedback', 'w-4 h-4 shrink-0') }}
|
|
<span class="whitespace-nowrap">{{ disposition.teamer }}</span>
|
|
{% if assignment.destination %}
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.destination }}</span>
|
|
{% endif %}
|
|
{% if assignment.jobProfile %}
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.jobProfile.name }}</span>
|
|
{% endif %}
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
{% set overdueContractsCount = overdueContracts|length %}
|
|
<div class="bg-gray-100 border border-gray-200 rounded-md px-4 py-2">
|
|
<h2 class="flex justify-between pb-2">
|
|
<span class="font-bold text-lg">Überfällige Honorarverträge</span>
|
|
{% if overdueContractsCount > 0 %}
|
|
<span>{{ overdueContractsCount }} überfällig</span>
|
|
{% endif %}
|
|
</h2>
|
|
<div class="max-h-64 overflow-y-scroll overflow-x-hidden">
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for disposition in overdueContracts %}
|
|
{% set assignment = disposition.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0 overflow-x-hidden">
|
|
<a href="{{ path('app_administrative_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}"
|
|
class="flex items-center space-x-1">
|
|
{{ icon('calendar', 'w-4 h-4 shrink-0') }}
|
|
<span class="whitespace-nowrap">{{ assignment.effectivePeriod.start|date('d.m.y') }} - {{ assignment.effectivePeriod.end|date('d.m.y') }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ assignment.jobProfile.name }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ disposition.teamer.fullName(true) }}</span>
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
{% endblock %}
|