diff --git a/src/Controller/Teamer/Application/IndexController.php b/src/Controller/Teamer/Application/IndexController.php new file mode 100644 index 0000000..9c1a227 --- /dev/null +++ b/src/Controller/Teamer/Application/IndexController.php @@ -0,0 +1,49 @@ +getUser(); + $teamer = $user->getTeamer(); + + $query = $this + ->applicationRepository + ->getPendingForTeamerQuery($teamer) + ; + + $pagination = $this->paginator->paginate( + $query, + $request->query->getInt('page', 1), + 10, + [ + 'defaultSortFieldName' => 'assignment.dateFrom', + 'defaultSortDirection' => 'asc', + ] + ); + + return $this->render('teamer/application/index.html.twig', [ + 'pagination' => $pagination, + ]); + } +} \ No newline at end of file diff --git a/src/Controller/Teamer/Disposition/DetailController.php b/src/Controller/Teamer/Disposition/DetailController.php index 4214e38..c84f300 100644 --- a/src/Controller/Teamer/Disposition/DetailController.php +++ b/src/Controller/Teamer/Disposition/DetailController.php @@ -2,20 +2,25 @@ namespace App\Controller\Teamer\Disposition; +use App\Controller\Traits\ReturnUrlTrait; use App\Entity\Disposition; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Http\Attribute\IsGranted; class DetailController extends AbstractController { + use ReturnUrlTrait; + #[Route('/teamer/disposition/detail/{uuid}', name: 'app_teamer_disposition_detail')] #[IsGranted('VIEW', subject: 'disposition')] - public function index(Disposition $disposition): Response + public function index(Disposition $disposition, Request $request): Response { return $this->render('teamer/disposition/detail.html.twig', [ 'disposition' => $disposition, + 'returnUrl' => $this->getReturnUrl($request, 'app_teamer_index'), ]); } } \ No newline at end of file diff --git a/src/Controller/Teamer/Document/IndexController.php b/src/Controller/Teamer/Document/IndexController.php new file mode 100644 index 0000000..0f6c95e --- /dev/null +++ b/src/Controller/Teamer/Document/IndexController.php @@ -0,0 +1,18 @@ +render(''); + } +} \ No newline at end of file diff --git a/src/Controller/Teamer/Feedback/IndexController.php b/src/Controller/Teamer/Feedback/IndexController.php new file mode 100644 index 0000000..8b6be52 --- /dev/null +++ b/src/Controller/Teamer/Feedback/IndexController.php @@ -0,0 +1,18 @@ +render(''); + } +} \ No newline at end of file diff --git a/src/Entity/Upload.php b/src/Entity/Upload.php index caa9d05..bdf2336 100644 --- a/src/Entity/Upload.php +++ b/src/Entity/Upload.php @@ -17,10 +17,14 @@ class Upload implements BlameableEntityInterface, TimestampableEntityInterface public const TYPE_PHOTO = 'photo'; public const TYPE_CERTIFICATE = 'certificate'; + public const TYPE_CONTRACT = 'contract'; + public const TYPE_INVOICE = 'invoice'; public const STATUS_NEW = 'new'; public const STATUS_IN_PROCESS = 'in_process'; public const STATUS_CHECKED = 'checked'; + public const STATUS_PAYED = 'payed'; + public const STATUS_ERROR = 'error'; #[ORM\Id] #[ORM\GeneratedValue] diff --git a/src/Menu/TeamerMenuBuilder.php b/src/Menu/TeamerMenuBuilder.php index 2e30cbf..7282cc3 100644 --- a/src/Menu/TeamerMenuBuilder.php +++ b/src/Menu/TeamerMenuBuilder.php @@ -45,13 +45,13 @@ class TeamerMenuBuilder extends AbstractMenuBuilder 'route' => false, 'title' => 'Meine Einsätze', 'icon' => 'bus', - 'children' => [ + 'children' => [# [ 'route' => 'app_teamer_bookmark_index', 'title' => 'Merkliste', ], [ - 'route' => 'app_teamer_bookmark_index', + 'route' => 'app_teamer_application_index', 'title' => 'Offene Bewerbungen', ], [ @@ -63,11 +63,11 @@ class TeamerMenuBuilder extends AbstractMenuBuilder 'title' => 'Letzte Einsätze', ], [ - 'route' => 'app_teamer_bookmark_index', + 'route' => 'app_teamer_document_index', 'title' => 'Meine Dokumente', ], [ - 'route' => 'app_teamer_bookmark_index', + 'route' => 'app_teamer_feedback_index', 'title' => 'Mein Feedback', ], ], diff --git a/src/Repository/ApplicationRepository.php b/src/Repository/ApplicationRepository.php index d766531..2841f50 100644 --- a/src/Repository/ApplicationRepository.php +++ b/src/Repository/ApplicationRepository.php @@ -3,6 +3,7 @@ namespace App\Repository; use App\Entity\Application; +use App\Entity\Teamer; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; use Doctrine\ORM\Query; use Doctrine\Persistence\ManagerRegistry; @@ -35,4 +36,19 @@ class ApplicationRepository extends ServiceEntityRepository ->getQuery() ; } + + public function getPendingForTeamerQuery(Teamer $teamer): Query + { + $qb = $this->createQueryBuilder('application'); + + return $qb + ->select('application', 'assignment', 'destination', 'job_profile') + ->innerJoin('application.assignment', 'assignment') + ->innerJoin('assignment.destination', 'destination') + ->innerJoin('assignment.jobProfile', 'job_profile') + ->where($qb->expr()->eq('application.teamer', ':teamer')) + ->setParameter('teamer', $teamer) + ->getQuery() + ; + } } diff --git a/templates/admin/application/index.html.twig b/templates/admin/application/index.html.twig index 4eab495..b646b1c 100644 --- a/templates/admin/application/index.html.twig +++ b/templates/admin/application/index.html.twig @@ -57,7 +57,9 @@ {{ application.teamer }}
| + {{ knp_pagination_sortable(pagination, 'Einsatzbeginn', 'assignment.dateFrom') }} + | ++ {{ knp_pagination_sortable(pagination, 'Einsatzende', 'assignment.dateTo') }} + | ++ {{ knp_pagination_sortable(pagination, 'Jobprofil', 'assignment.jobProfile') }} + | ++ {{ knp_pagination_sortable(pagination, 'Destination', 'destination.dateFrom') }} + | ++ {{ knp_pagination_sortable(pagination, 'Busbegleitung', 'assignment.pickup') }} + | ++ {{ knp_pagination_sortable(pagination, 'Status', 'application.status') }} + | ++ |
|---|---|---|---|---|---|---|
| + {% set dateFrom = assignment.dateFrom ? assignment.dateFrom : assignment.destination.dateFrom %} + {{ dateFrom|date('d.m.Y') }} + | ++ {% set dateTo = assignment.dateTo ? assignment.dateTo : assignment.destination.dateTo %} + {{ dateTo|date('d.m.Y') }} + | ++ {{ assignment.jobProfile.name }} + | +
+ {{ assignment.destination.product }}
+ + {{ assignment.destination.hotel }} + |
+
+ {{ assignment.pickup ? assignment.pickup|bpn_pickup_label|default('-') : '-' }}
+ + {{ assignment.pickupDate ? assignment.pickupDate|date('d.m.Y') : '' }} + |
+ + {{ ('label.application.status.' ~ application.status)|trans }} + | ++ + | +
|
+
+ Keine Daten
+
+ |
+ ||||||