diff --git a/app/Infrastructure/Http/Controllers/VacationRequestController.php b/app/Infrastructure/Http/Controllers/VacationRequestController.php index 64dfc56..665b4e3 100644 --- a/app/Infrastructure/Http/Controllers/VacationRequestController.php +++ b/app/Infrastructure/Http/Controllers/VacationRequestController.php @@ -12,6 +12,7 @@ use Illuminate\Http\Request; use Illuminate\Http\Response as LaravelResponse; use Illuminate\Validation\ValidationException; use Inertia\Response; +use Symfony\Component\HttpFoundation\Response as SymfonyResponse; use Toby\Domain\Actions\VacationRequest\AcceptAsAdministrativeAction; use Toby\Domain\Actions\VacationRequest\AcceptAsTechnicalAction; use Toby\Domain\Actions\VacationRequest\CancelAction; @@ -23,6 +24,7 @@ use Toby\Domain\States\VacationRequest\AcceptedByTechnical; use Toby\Domain\States\VacationRequest\Cancelled; use Toby\Domain\States\VacationRequest\Rejected; use Toby\Domain\VacationRequestStatesRetriever; +use Toby\Domain\VacationTypeConfigRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever; use Toby\Eloquent\Models\User; use Toby\Eloquent\Models\VacationRequest; @@ -148,8 +150,14 @@ class VacationRequestController extends Controller /** * @throws AuthorizationException */ - public function download(VacationRequest $vacationRequest): LaravelResponse - { + public function download( + VacationRequest $vacationRequest, + VacationTypeConfigRetriever $configRetriever + ): LaravelResponse { + if (!$configRetriever->isVacation($vacationRequest->type)) { + return abort(SymfonyResponse::HTTP_NOT_FOUND); + } + $this->authorize("show", $vacationRequest); $pdf = PDF::loadView("pdf.vacation-request", [ diff --git a/app/Infrastructure/Http/Resources/VacationRequestResource.php b/app/Infrastructure/Http/Resources/VacationRequestResource.php index ddd6f4b..ddcafe7 100644 --- a/app/Infrastructure/Http/Resources/VacationRequestResource.php +++ b/app/Infrastructure/Http/Resources/VacationRequestResource.php @@ -5,10 +5,19 @@ declare(strict_types=1); namespace Toby\Infrastructure\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; +use Toby\Domain\VacationTypeConfigRetriever; class VacationRequestResource extends JsonResource { public static $wrap = null; + protected VacationTypeConfigRetriever $configRetriever; + + public function __construct($resource) + { + parent::__construct($resource); + + $this->configRetriever = app(VacationTypeConfigRetriever::class); + } public function toArray($request): array { @@ -17,6 +26,7 @@ class VacationRequestResource extends JsonResource "name" => $this->name, "user" => new SimpleUserResource($this->user), "type" => $this->type, + "isVacation" => $this->configRetriever->isVacation($this->type), "state" => $this->state, "from" => $this->from->toDisplayString(), "to" => $this->to->toDisplayString(), diff --git a/resources/js/Pages/VacationRequest/Show.vue b/resources/js/Pages/VacationRequest/Show.vue index 36ccb91..ad58a1e 100644 --- a/resources/js/Pages/VacationRequest/Show.vue +++ b/resources/js/Pages/VacationRequest/Show.vue @@ -88,7 +88,10 @@ - -
+
Załączniki