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 }