Task: Improve layout

This commit is contained in:
Björn Fromme
2023-10-21 16:41:57 +02:00
parent bf2e5600d0
commit 847af5341c
14 changed files with 278 additions and 174 deletions
+35
View File
@@ -0,0 +1,35 @@
<?php
declare(strict_types=1);
namespace DoctrineMigrations;
use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
final class Version20231021133634 extends AbstractMigration
{
public function getDescription(): string
{
return '';
}
public function up(Schema $schema): void
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE application ADD remarks_by_id INT DEFAULT NULL');
$this->addSql('ALTER TABLE application ADD CONSTRAINT FK_A45BDDC1DF01D017 FOREIGN KEY (remarks_by_id) REFERENCES user (id)');
$this->addSql('CREATE INDEX IDX_A45BDDC1DF01D017 ON application (remarks_by_id)');
}
public function down(Schema $schema): void
{
// this down() migration is auto-generated, please modify it to your needs
$this->addSql('ALTER TABLE application DROP FOREIGN KEY FK_A45BDDC1DF01D017');
$this->addSql('DROP INDEX IDX_A45BDDC1DF01D017 ON application');
$this->addSql('ALTER TABLE application DROP remarks_by_id');
}
}
+15
View File
@@ -40,6 +40,9 @@ class Application implements TimestampableEntityInterface
#[ORM\Column(type: Types::TEXT, nullable: true)] #[ORM\Column(type: Types::TEXT, nullable: true)]
private ?string $remarks = null; private ?string $remarks = null;
#[ORM\ManyToOne]
private ?User $remarksBy = null;
public function __construct(Assignment $assignment, Teamer $teamer) public function __construct(Assignment $assignment, Teamer $teamer)
{ {
$this->uuid = Uuid::v4(); $this->uuid = Uuid::v4();
@@ -143,4 +146,16 @@ class Application implements TimestampableEntityInterface
return $count === $requiredTrainings->count(); return $count === $requiredTrainings->count();
} }
public function getRemarksBy(): ?User
{
return $this->remarksBy;
}
public function setRemarksBy(?User $remarksBy): static
{
$this->remarksBy = $remarksBy;
return $this;
}
} }
+8 -6
View File
@@ -2,6 +2,7 @@
namespace App\Repository; namespace App\Repository;
use App\Entity\Application;
use App\Entity\Assignment; use App\Entity\Assignment;
use App\Entity\Teamer; use App\Entity\Teamer;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
@@ -37,14 +38,15 @@ class AssignmentRepository extends ServiceEntityRepository
if (null !== $teamer) { if (null !== $teamer) {
$qb $qb
->leftJoin('assignment.applications', 'application', Join::WITH, 'application.teamer = :teamer') ->leftJoin('assignment.applications', 'application', Join::WITH, $qb->expr()->eq('application.teamer', ':teamer'))
->leftJoin('assignment.dispositions', 'disposition', Join::WITH, 'disposition.teamer = :teamer') ->leftJoin('assignment.dispositions', 'disposition', Join::WITH, $qb->expr()->eq('disposition.teamer', ':teamer'))
->setParameter('teamer', $teamer) ->setParameter('teamer', $teamer)
; ;
} else { } else {
$qb $qb
->leftJoin('assignment.applications', 'application') ->leftJoin('assignment.applications', 'application', Join::WITH, $qb->expr()->neq('application.status', ':status'))
->leftJoin('assignment.dispositions', 'disposition') ->leftJoin('assignment.dispositions', 'disposition')
->setParameter('status', Application::STATUS_REJECTED)
; ;
} }
@@ -59,9 +61,9 @@ class AssignmentRepository extends ServiceEntityRepository
->select('assignment', 'destination', 'job_profile', 'application', 'disposition') ->select('assignment', 'destination', 'job_profile', 'application', 'disposition')
->innerJoin('assignment.destination', 'destination') ->innerJoin('assignment.destination', 'destination')
->innerJoin('assignment.jobProfile', 'job_profile') ->innerJoin('assignment.jobProfile', 'job_profile')
->innerJoin('assignment.teamers', 'teamer', Join::WITH, 'teamer = :teamer') ->innerJoin('assignment.teamers', 'teamer', Join::WITH, $qb->expr()->eq('teamer', ':teamer'))
->leftJoin('assignment.applications', 'application', Join::WITH, 'application.teamer = :teamer') ->leftJoin('assignment.applications', 'application', Join::WITH, $qb->expr()->eq('application.teamer', ':teamer'))
->leftJoin('assignment.dispositions', 'disposition', Join::WITH, 'disposition.teamer = :teamer') ->leftJoin('assignment.dispositions', 'disposition', Join::WITH, $qb->expr()->eq('disposition.teamer', ':teamer'))
->where($qb->expr()->isNull('assignment.deletedAt')) ->where($qb->expr()->isNull('assignment.deletedAt'))
->setParameter('teamer', $teamer) ->setParameter('teamer', $teamer)
; ;
+65 -41
View File
@@ -1,52 +1,76 @@
<div class="grid grid-cols-2 gap-x-4 gap-y-3"> <dl class="divide-y divide-gray-100">
<div class="font-bold text-xl"> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Jobprofil <dt class="text-sm font-bold leading-6 text-gray-900">
Jobprofil
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.jobProfile.name }}
</dd>
</div> </div>
<div class="font-bold text-xl"> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
{{ assignment.jobProfile.name }} <dt class="text-sm font-bold leading-6 text-gray-900">
Destination
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.destination.product }}, {{ assignment.destination.hotel }}
</dd>
</div> </div>
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Destination <dt class="text-sm font-bold leading-6 text-gray-900">
</div> Einsatztermin
<div> </dt>
{{ assignment.destination.product }} <dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
<br> {{ assignment.effectivePeriod.start|date('d.m.Y') }} - {{ assignment.effectivePeriod.end|date('d.m.Y') }}
{{ assignment.destination.hotel }} </dd>
</div>
<div>
Einsatztermin
</div>
<div>
{{ assignment.effectivePeriod.start|date('d.m.Y') }} - {{ assignment.effectivePeriod.end|date('d.m.Y') }}
</div> </div>
{% if assignment.pickup and assignment.pickupDate %} {% if assignment.pickup and assignment.pickupDate %}
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Busabfahrt <dt class="text-sm font-bold leading-6 text-gray-900">
Busabfahrt
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.pickupDate|date('d.m.Y') }}
</dd>
</div> </div>
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
{{ assignment.pickupDate|date('d.m.Y') }} <dt class="text-sm font-bold leading-6 text-gray-900">
</div> Busbegleitung
<div> </dt>
Busbegleitung <dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
</div> {{ assignment.pickup|bpn_pickup_label }}
<div> </dd>
{{ assignment.pickup|bpn_pickup_label }}
</div> </div>
{% endif %} {% endif %}
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Du bekommst <dt class="text-sm font-bold leading-6 text-gray-900">
</div> Du bekommst
<div> </dt>
{{ assignment.benefits|nl2list }} <dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.benefits|nl2list }}
</dd>
</div> </div>
{% if assignment.fees|length %} {% if assignment.fees|length %}
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Honorar <dt class="text-sm font-bold leading-6 text-gray-900">
</div> Honorar
<div> </dt>
{% for fee in assignment.fees %} <dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ fee.name }} {{ fee.value|format_money }} {% for fee in assignment.fees %}
{% endfor %} {{ fee.name }} {{ fee.value|format_money }}
{% endfor %}
</dd>
</div> </div>
{% endif %} {% endif %}
</div> {% if additional is defined %}
{% for item in additional %}
<div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
<dt class="text-sm font-bold leading-6 text-gray-900">
{{ item.type }}
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ item.description|raw }}
</dd>
</div>
{% endfor %}
{% endif %}
</dl>
@@ -1,49 +1,62 @@
<div class="grid lg:grid-cols-2 gap-x-8 gap-y-4"> <div class="grid lg:grid-cols-2 gap-x-8 gap-y-4">
<div class="lg:col-span-2 font-bold text-xl"> <dl class="divide-y divide-gray-100">
Jobprofil {{ assignment.jobProfile.name }} <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
</div> <dt class="text-sm font-bold leading-6 text-gray-900">
<div class="grid grid-cols-2 gap-x-4 gap-y-3"> Jobprofil
<div class="font-bold"> </dt>
Destination <dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.jobProfile.name }}
</dd>
</div> </div>
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
{{ assignment.destination.product }} <dt class="text-sm font-bold leading-6 text-gray-900">
<br> Destination
{{ assignment.destination.hotel }} </dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.destination.product }}, {{ assignment.destination.hotel }}
</dd>
</div> </div>
<div class="font-bold"> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Einsatztermin <dt class="text-sm font-bold leading-6 text-gray-900">
Einsatztermin
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.effectivePeriod.start|date('d.m.Y') }} - {{ assignment.effectivePeriod.end|date('d.m.Y') }}
</dd>
</div> </div>
<div> </dl>
{{ assignment.effectivePeriod.start|date('d.m.Y') }} - {{ assignment.effectivePeriod.end|date('d.m.Y') }} <dl class="divide-y divide-gray-100">
</div>
</div>
<div class="grid grid-cols-2 gap-x-4 gap-y-3">
{% if assignment.pickup and assignment.pickupDate %} {% if assignment.pickup and assignment.pickupDate %}
<div class="font-bold"> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Busabfahrt <dt class="text-sm font-bold leading-6 text-gray-900">
Busabfahrt
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ assignment.pickupDate|date('d.m.Y') }}
</dd>
</div> </div>
<div> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
{{ assignment.pickupDate|date('d.m.Y') }} <dt class="text-sm font-bold leading-6 text-gray-900">
</div> Busbegleitung
<div class="font-bold"> </dt>
Busbegleitung <dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
</div> {{ assignment.pickup|bpn_pickup_label }}
<div> </dd>
{{ assignment.pickup|bpn_pickup_label }}
</div> </div>
{% endif %} {% endif %}
<div class="font-bold"> <div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
Honorar <dt class="text-sm font-bold leading-6 text-gray-900">
Honorar
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{% if assignment.fees|length %}
{% for fee in assignment.fees %}
{{ fee.name }} {{ fee.value|format_money }}
{% endfor %}
{% else %}
-
{% endif %}
</dd>
</div> </div>
<div> </dl>
{% if assignment.fees|length %}
{% for fee in assignment.fees %}
{{ fee.name }} {{ fee.value|format_money }}
{% endfor %}
{% else %}
-
{% endif %}
</div>
</div>
</div> </div>
@@ -1,5 +1,5 @@
<ul class="pb-8 divide-y divide-gray-200"> <ul class="pb-8 divide-y divide-gray-200">
{% if assignment.pickup and assignment.effectivePickupDate %} {% if assignment.pickup and assignment.effectivePickupDate %}
<li class="py-2"> <li class="py-2">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="flex-1">Busbegleitung {{ assignment.pickup|bpn_pickup_label }} am {{ assignment.effectivePickupDate|date('d.m.Y') }}</span> <span class="flex-1">Busbegleitung {{ assignment.pickup|bpn_pickup_label }} am {{ assignment.effectivePickupDate|date('d.m.Y') }}</span>
@@ -0,0 +1,12 @@
<dl class="divide-y divide-gray-100">
{% for item in items %}
<div class="py-6 first:pt-0 last:pb-0 sm:grid sm:grid-cols-3 sm:gap-4">
<dt class="text-sm font-bold leading-6 text-gray-900">
{{ item.type }}
</dt>
<dd class="mt-1 text-sm leading-6 text-gray-700 sm:col-span-2 sm:mt-0">
{{ item.description }}
</dd>
</div>
{% endfor %}
</dl>
+4
View File
@@ -0,0 +1,4 @@
<div class="flex items-start space-x-4 bg-red-600 text-white p-4 rounded-md w-full">
{{ icon('alert', 'w-6 h-6 shrink-0') }}
<span>{{ message }}</span>
</div>
+4
View File
@@ -0,0 +1,4 @@
<div class="flex items-start space-x-4 bg-primary text-white p-4 rounded-md w-full">
{{ icon('info', 'w-6 h-6 shrink-0') }}
<span>{{ message }}</span>
</div>
+2 -2
View File
@@ -6,7 +6,7 @@
<h1 class="text-2xl font-bold pb-8"> <h1 class="text-2xl font-bold pb-8">
Einsatzübersicht Einsatzübersicht
</h1> </h1>
<div class="bg-gray-100 rounded-md p-4 mb-8"> <div class="pb-8">
{% include '_partials/_assignment_info_compact.html.twig' %} {% include '_partials/_assignment_info_compact.html.twig' %}
</div> </div>
<div class="col-span-2"> <div class="col-span-2">
@@ -22,7 +22,7 @@
Name Name
</th> </th>
<th class="w-1/3"> <th class="w-1/3">
Anmerkungen Wünsche
</th> </th>
<th class="w-1/6"> <th class="w-1/6">
Status Status
+15 -18
View File
@@ -35,25 +35,22 @@
{% endif %} {% endif %}
</div> </div>
<div class="flex flex-col space-y-2"> <div class="flex flex-col space-y-2">
<a href="{{ path('app_teamer_assignment', { 'uuid': assignment.uuid, 'r': return_url() }) }}" {% if application.status == constant('App\\Entity\\Application::STATUS_REJECTED') %}
class="btn btn--small flex items-center space-x-2"> {% set icon = 'close' %}
{{ icon('info', 'w-4 h-4 shrink-0') }} {% set class = 'bg-gray-100 text-gray-800 hover:bg-gray-50' %}
<span>Details</span> {% set url = path('app_teamer_assignment', { 'uuid': assignment.uuid, 'r': return_url() }) %}
</a> {% set label = 'Bewerbung abgelehnt' %}
{% if is_granted('DELETE', application) %} {% else %}
<button type="button" {% set icon = 'hourglass' %}
title="Bewerbung löschen" {% set class = 'bg-yellow-100 text-yellow-800 hover:bg-yellow-50' %}
class="btn btn--small bg-red-100 text-red-800 hover:bg-red-50" {% set url = path('app_teamer_assignment', { 'uuid': assignment.uuid, 'r': return_url() }) %}
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }} {% set label = 'in Bearbeitung' %}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Bewerbing wirklich zurückziehen/löschen?',
'target-url': path('app_teamer_application_delete', { 'uuid': application.uuid })
}) }}>
{{ icon('delete', 'w-4 h-4 shrink-0') }}
<span>Löschen</span>
</button>
{% endif %} {% endif %}
<a href="{{ url }}"
class="btn btn--small flex items-center space-x-2 {{ class }}">
{{ icon(icon, 'w-4 h-4 shrink-0') }}
<span>{{ label }}</span>
</a>
</div> </div>
{% if teamer.bookmarks.contains(assignment) %} {% if teamer.bookmarks.contains(assignment) %}
{{ icon('star', 'w-5 h-5 text-yellow-500 absolute top-0 right-0 mt-2 mr-2') }} {{ icon('star', 'w-5 h-5 text-yellow-500 absolute top-0 right-0 mt-2 mr-2') }}
+30 -23
View File
@@ -7,9 +7,7 @@
Einsatzübersicht Einsatzübersicht
</h1> </h1>
<div class="grid lg:grid-cols-2 gap-8 items-start"> <div class="grid lg:grid-cols-2 gap-8 items-start">
<div class="bg-gray-100 rounded-md p-4"> {% include '_partials/_assignment_info.html.twig' %}
{% include '_partials/_assignment_info.html.twig' %}
</div>
<div> <div>
<h2 class="text-xl font-bold pb-2"> <h2 class="text-xl font-bold pb-2">
Voraussetzungen für diesen Einsatz Voraussetzungen für diesen Einsatz
@@ -17,24 +15,33 @@
{% include '_partials/_assignment_requirements_info.html.twig' %} {% include '_partials/_assignment_requirements_info.html.twig' %}
<div class="flex flex-col items-start space-y-4"> <div class="flex flex-col items-start space-y-4">
{% if disposition is not null %} {% if disposition is not null %}
<div> {% include '_partials/_infobox.html.twig' with {
Du wurdest am {{ disposition.createdAt|date('d.m.Y') }} für diesen Einsatz eingeteilt. 'message': 'Du wurdest am ' ~ disposition.createdAt|date('d.m.Y') ~ 'für diesen Einsatz eingeteilt.'
</div> } %}
{% elseif application is not null %} {% elseif application is not null %}
<div> {% if application.status == constant('App\\Entity\\Application::STATUS_REJECTED') %}
Du hast dich am {{ application.createdAt|date('d.m.Y') }} auf diesen Einsatz beworben. {% include '_partials/_errorbox.html.twig' with {
</div> 'message': 'Deine Bewerbung wurde leider abgelehnt.'
<button type="button" } %}
class="btn btn--secondary" {% if application.remarks %}
title="Bewerbung zurückziehen" <strong>Begründung:</strong> {{ application.remarks|nl2br}}
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }} {% endif %}
{{ stimulus_action('modal-button', 'confirmation', null, { {% else %}
'title': 'Bist du sicher?', {% include '_partials/_infobox.html.twig' with {
'content': 'Möchtest du die Bewerbing wirklich zurückziehen?', 'message': 'Du hast dich am ' ~ application.createdAt|date('d.m.Y') ~ 'auf diesen Einsatz beworben.'
'target-url': path('app_teamer_application_withdraw', { 'uuid': application.uuid }) } %}
}) }}> <button type="button"
Bewerbung zurückziehen class="btn btn--secondary"
</button> title="Bewerbung zurückziehen"
{{ stimulus_controller('modal-button', [], [], {'confirmation-modal': '#confirmation-modal'}) }}
{{ stimulus_action('modal-button', 'confirmation', null, {
'title': 'Bist du sicher?',
'content': 'Möchtest du die Bewerbing wirklich zurückziehen?',
'target-url': path('app_teamer_application_withdraw', { 'uuid': application.uuid })
}) }}>
Bewerbung zurückziehen
</button>
{% endif %}
{% else %} {% else %}
<div> <div>
Erfüllst du mehrere oder alle Voraussetzungen für diesen Einsatz? Erfüllst du mehrere oder alle Voraussetzungen für diesen Einsatz?
@@ -42,10 +49,10 @@
<a href="{{ path('app_teamer_application_create', { 'uuid': assignment.uuid }) }}" class="btn"> <a href="{{ path('app_teamer_application_create', { 'uuid': assignment.uuid }) }}" class="btn">
Hier bewerben! Hier bewerben!
</a> </a>
<a href="{{ path('app_teamer_bookmark_toggle', { 'uuid': assignment.uuid, 'r': return_url() }) }}" class="underline">
{% if not isBookmarked %}auf die Merkliste setzen{% else %}von der Merkliste löschen{% endif %}
</a>
{% endif %} {% endif %}
<a href="{{ path('app_teamer_bookmark_toggle', { 'uuid': assignment.uuid, 'r': return_url() }) }}" class="underline">
{% if not isBookmarked %}auf die Merkliste setzen{% else %}von der Merkliste löschen{% endif %}
</a>
<a href="{{ returnUrl }}" class="underline"> <a href="{{ returnUrl }}" class="underline">
zurück zurück
</a> </a>
+23 -40
View File
@@ -2,43 +2,31 @@
{% block title %}Einsatzdetails{% endblock %} {% block title %}Einsatzdetails{% endblock %}
{% macro infobox(message) %}
<div class="flex items-start space-x-4 bg-primary text-white p-4 rounded-md">
{{ icon('info', 'w-6 h-6 shrink-0') }}
<span>{{ message }}</span>
</div>
{% endmacro %}
{% block content %} {% block content %}
{% set assignment = disposition.assignment %} {% set assignment = disposition.assignment %}
<h1 class="text-2xl font-bold pb-8"> <h1 class="text-2xl font-bold pb-8">
Einsatzdetails Dein Einsatz wurde bestätigt!
</h1> </h1>
<div class="grid lg:grid-cols-2 gap-8 items-start"> <div class="grid lg:grid-cols-2 gap-8 items-start">
<div> <div>
<h2 class="text-xl font-bold pb-4"> {% include '_partials/_assignment_info.html.twig' with {
Dein Einsatz wurde bestätigt! 'additional': [
</h2> {
<div class="pb-2"> 'type': 'Ansprechpartner',
Dein Ansprechpartner für alle reisebezogenen Themen ist: 'description': 'Für alle reisebezogenen Themen wende dich bitte an ' ~ assignment.contact ~ ' (<a href="mailto:' ~ assignment.contact.email ~'" class="underline">' ~ assignment.contact.email ~ '</a>)'
</div> },
<div class="pb-4"> {
<strong>{{ assignment.contact }}</strong>, <a href="mailto:{{ assignment.contact.email }}" class="underline">{{ assignment.contact.email }}</a> 'type': 'Kalendereintrag',
</div> 'description': '<a href="' ~ path('app_teamer_disposition_ics', { 'uuid': disposition.uuid }) ~ '" title="In den Kalender eintragen" class="underline">Hier klicken</a>'
<div class="pb-4"> }
<a href="{{ path('app_teamer_disposition_ics', { 'uuid': disposition.uuid }) }}" ]
title="In den Kalender eintragen" } %}
class="group"> </div>
<div class="flex items-center justify-between"> <div>
<span class="flex-1">Klicke hier, um den Einsatz in deinen Kalender einzutragen</span>
{{ icon('calendar', 'w-4 h-4 duration-200 group-hover:scale-125') }}
</div>
</a>
</div>
{% if disposition.assignment.documents|length %} {% if disposition.assignment.documents|length %}
<h3 class="text-lg font-bold"> <h2 class="text-lg font-bold">
Dokumente Dokumente
</h3> </h2>
<ul class="pb-4 divide-y divide-gray-200"> <ul class="pb-4 divide-y divide-gray-200">
{% for document in disposition.assignment.documents %} {% for document in disposition.assignment.documents %}
<li class="py-2"> <li class="py-2">
@@ -55,16 +43,11 @@
{% endfor %} {% endfor %}
</ul> </ul>
{% endif %} {% endif %}
<div class="bg-gray-100 rounded-md p-4">
{% include '_partials/_assignment_info.html.twig' %}
</div>
</div>
<div>
{# Upload contract #} {# Upload contract #}
{% if workflow_has_marked_place(disposition, 'new') %} {% if workflow_has_marked_place(disposition, 'new') %}
<h3 class="text-xl font-bold pb-4"> <h2 class="text-lg font-bold pb-4">
Honorarvertrag Honorarvertrag
</h3> </h2>
{% if workflow_can(disposition, 'upload_contract') %} {% if workflow_can(disposition, 'upload_contract') %}
<div class="pb-4"> <div class="pb-4">
<a href="{{ path('app_teamer_disposition_contractpdf', { 'uuid': disposition.uuid }) }}" target="_blank" class="inline-block"> <a href="{{ path('app_teamer_disposition_contractpdf', { 'uuid': disposition.uuid }) }}" target="_blank" class="inline-block">
@@ -88,16 +71,16 @@
{{ form_end(form) }} {{ form_end(form) }}
{% else %} {% else %}
{% for blocker in workflow_transition_blockers(disposition, 'upload_contract') %} {% for blocker in workflow_transition_blockers(disposition, 'upload_contract') %}
{{ _self.infobox(blocker.message) }} {% include '_partials/_infobox.html.twig' with { 'message': blocker.message } %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endif %} {% endif %}
{# Upload invoice #} {# Upload invoice #}
{% if workflow_has_marked_place(disposition, 'confirmed') %} {% if workflow_has_marked_place(disposition, 'confirmed') %}
<h3 class="text-xl font-bold pb-4"> <h2 class="text-lg font-bold pb-4">
Honorarnote Honorarnote
</h3> </h2>
{% if workflow_can(disposition, 'upload_invoice') %} {% if workflow_can(disposition, 'upload_invoice') %}
<div class="pb-4"> <div class="pb-4">
<a href="{{ path('app_teamer_disposition_invoicepdf', { 'uuid': disposition.uuid }) }}" target="_blank" class="inline-block"> <a href="{{ path('app_teamer_disposition_invoicepdf', { 'uuid': disposition.uuid }) }}" target="_blank" class="inline-block">
@@ -121,7 +104,7 @@
{{ form_end(form) }} {{ form_end(form) }}
{% else %} {% else %}
{% for blocker in workflow_transition_blockers(disposition, 'upload_invoice') %} {% for blocker in workflow_transition_blockers(disposition, 'upload_invoice') %}
{{ _self.infobox(blocker.message) }} {% include '_partials/_infobox.html.twig' with { 'message': blocker.message } %}
{% endfor %} {% endfor %}
{% endif %} {% endif %}
{% endif %} {% endif %}
+12 -4
View File
@@ -47,10 +47,18 @@
</div> </div>
<div> <div>
{% if assignment.applications|length %} {% if assignment.applications|length %}
{% set icon = 'hourglass' %} {% set application = assignment.applications[0] %}
{% set class = 'bg-yellow-100 text-yellow-800 hover:bg-yellow-50' %} {% if application.status == constant('App\\Entity\\Application::STATUS_REJECTED') %}
{% set url = path('app_teamer_assignment', { 'uuid': assignment.uuid, 'r': return_url() }) %} {% set icon = 'close' %}
{% set label = 'in Bearbeitung' %} {% set class = 'bg-gray-100 text-gray-800 hover:bg-gray-50' %}
{% set url = path('app_teamer_assignment', { 'uuid': assignment.uuid, 'r': return_url() }) %}
{% set label = 'Bewerbung abgelehnt' %}
{% else %}
{% set icon = 'hourglass' %}
{% set class = 'bg-yellow-100 text-yellow-800 hover:bg-yellow-50' %}
{% set url = path('app_teamer_assignment', { 'uuid': assignment.uuid, 'r': return_url() }) %}
{% set label = 'in Bearbeitung' %}
{% endif %}
{% elseif assignment.dispositions|length %} {% elseif assignment.dispositions|length %}
{% set icon = 'check' %} {% set icon = 'check' %}
{% set class = 'bg-green-100 text-green-700 hover:bg-green-50' %} {% set class = 'bg-green-100 text-green-700 hover:bg-green-50' %}