/ app / Http / Controllers / EnisaController.php
EnisaController.php
 1  <?php
 2  
 3  namespace App\Http\Controllers;
 4  
 5  use App\Http\Requests\CertificationRequest;
 6  use App\Http\Requests\GetAllCertificates;
 7  use App\Http\Requests\UpdateCertificateStatusRequest;
 8  use App\Http\Resources\CertificateMetadataResource;
 9  use App\Http\Resources\CertificateResource;
10  use App\Http\Services\EnisaService;
11  use App\Models\Certificate;
12  use Illuminate\Foundation\Testing\RefreshDatabase;
13  use Illuminate\Http\Response;
14  
15  class EnisaController extends Controller
16  {
17      use RefreshDatabase;
18  
19      /**
20       * Display the specified resource.
21       *
22       * @param Certificate $certificate
23       * @return Response
24       */
25      public function show(CertificationRequest $request)
26      {
27          $request->validated();
28          $certificate = Certificate::find($request->id);
29  
30          return file_get_contents($certificate->xml_path);
31      }
32  
33      public function showMetadata(CertificationRequest $request)
34      {
35          $certificate = Certificate::find($request->id);
36          return CertificateMetadataResource::make($certificate)->additional([
37              'success' => true,
38          ]);
39      }
40  
41      public function setStatus(UpdateCertificateStatusRequest $request)
42      {
43          $certificate = Certificate::find($request->id);
44          $certificate->status = $request->status;
45          $certificate->message = $request->message;
46          $certificate->qr_code = str_replace(' ', '+', $request->qr_code);
47          $certificate->save();
48  
49          $document = EnisaService::generateCertificatePdf($certificate);
50          $certificate->pdf_path = $document->head->path;
51          $certificate->save();
52  
53          return response()->json([
54              'success' => true,
55              'message' => 'Successfully updated'
56          ]);
57      }
58  
59      public function getPdf(CertificationRequest $request)
60      {
61          $certificate = Certificate::find($request->id);
62          return response()->file($certificate->pdf_path);
63      }
64  
65      public function getAll(GetAllCertificates $request)
66      {
67          $request->validated();
68          $certificates = Certificate::query();
69          $certificates->when($request->last_ts, function ($query) use (&$request) {
70              $query->where('updated_at', '>=', $request->last_ts);
71          });
72          return CertificateResource::collection($certificates->get())->additional([
73              'success' => true,
74          ]);
75      }
76  }