169 lines
8.9 KiB
Twig
169 lines
8.9 KiB
Twig
{% extends 'teamer/layout.html.twig' %}
|
|
|
|
{% block title %}Dashboard{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="flex items-start justify-between pb-4">
|
|
<h1 class="text-2xl font-bold">
|
|
Dashboard
|
|
</h1>
|
|
</div>
|
|
{% if not teamer.photo %}
|
|
{% include '_partials/_toast.html.twig' with { level: 'info', messages: ['Bitte lade ein Foto von dir hoch'] } %}
|
|
{% endif %}
|
|
{% if news is not null %}
|
|
{% set alertType = news.status == 2 ? 'warning' : 'info' %}
|
|
{% include '_partials/_alert.html.twig' with { 'type': alertType, 'message': news.message } %}
|
|
{% endif %}
|
|
<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="font-bold text-lg pb-2">
|
|
Meine Bewerbungen
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for application in pendingApplications %}
|
|
{% set assignment = application.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<a href="{{ path('app_teamer_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}">
|
|
<div class="flex items-center space-x-1">
|
|
{{ icon('hand', 'w-4 h-4 shrink-0') }}
|
|
<div class="flex items-center space-x-1 truncate">
|
|
<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>
|
|
</div>
|
|
</div>
|
|
<div class="pl-5 whitespace-nowrap">{{ assignment.jobProfile.name }}</div>
|
|
</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">
|
|
Meine Dokumente
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for disposition in dispositionDocuments %}
|
|
{% set assignment = disposition.assignment %}
|
|
{% if disposition.contractDue or disposition.invoiceDue or disposition.contractRejected %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<a href="{{ path('app_teamer_disposition_detail', { 'uuid': disposition.uuid }) }}">
|
|
<div class="flex items-center space-x-1">
|
|
{{ icon('alert', 'w-4 h-4 shrink-0') }}
|
|
<div class="flex items-center space-x-1 truncate">
|
|
<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>
|
|
</div>
|
|
</div>
|
|
<div class="pl-5 whitespace-nowrap text-red-500">
|
|
{%- if disposition.contractDue -%}
|
|
Honorarvertrag fällig
|
|
{%- elseif disposition.contractRejected %}
|
|
Honorarvertrag muss erneut hochgeladen werden
|
|
{%- elseif disposition.invoiceDue -%}
|
|
Honorarnote fällig
|
|
{%- endif %}
|
|
</div>
|
|
</a>
|
|
</li>
|
|
{% endif %}
|
|
{% 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">
|
|
Mein Feedback
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for feedback in recentFeedback %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<button type="button"
|
|
title="Feedback ansehen"
|
|
hx-get="{{ path('app_teamer_feedback', { 'uuid': feedback.uuid }) }}"
|
|
hx-target="body"
|
|
hx-swap="beforeend">
|
|
<span class="flex items-center space-x-1">
|
|
{{ icon('feedback', 'w-4 h-4 shrink-0') }}
|
|
<span class="flex items-center space-x-1 truncate">
|
|
<span class="whitespace-nowrap">{{ feedback.createdAt|date('d.m.y') }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ feedback.author }}</span>
|
|
{% include '_partials/_dot.html.twig' %}
|
|
<span class="whitespace-nowrap">{{ feedback.averageRating|format_rating }}</span>
|
|
</span>
|
|
</span>
|
|
<span class="block pl-5">{{ feedback.comment }}</span>
|
|
</button>
|
|
</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">
|
|
Meine Einsätze
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for disposition in upcomingDispositions %}
|
|
{% set assignment = disposition.assignment %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<a href="{{ path('app_teamer_disposition_detail', { 'uuid': disposition.uuid }) }}">
|
|
<div class="flex items-center space-x-1">
|
|
{{ icon('check', 'w-4 h-4 shrink-0') }}
|
|
<div class="flex items-center space-x-1 truncate">
|
|
<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>
|
|
</div>
|
|
</div>
|
|
<div class="pl-5 whitespace-nowrap">{{ assignment.jobProfile.name }}</div>
|
|
</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">
|
|
Mögliche Einsätze
|
|
</h2>
|
|
<ul class="divide-y divide-gray-200">
|
|
{% for assignment in matchingAssignments %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
<a href="{{ path('app_teamer_assignment_detail', { 'uuid': assignment.uuid, 'r': return_url() }) }}">
|
|
<div class="flex items-center space-x-1 truncate">
|
|
{{ 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.destination.hotel }}</span>
|
|
</div>
|
|
<div class="pl-5 whitespace-nowrap">{{ assignment.jobProfile.name }}</div>
|
|
</a>
|
|
</li>
|
|
{% else %}
|
|
<li class="py-2 first:pt-0 last:pb-0">
|
|
-
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
{% endblock %}
|