nanosanteservice/app/Http/Controllers/QRCodeController.php

139 lines
4.6 KiB
PHP
Executable File

<?php
namespace App\Http\Controllers;
use App\Models\Agent;
use App\Models\AgentPlus;
use App\Models\TransfertCommissionTransaction;
use App\Models\User;
use App\Traits\ApiResponser;
use App\Traits\Helper;
use Barryvdh\DomPDF\Facade as PDF;
use Illuminate\Support\Facades\Log;
class QRCodeController extends Controller
{
use ApiResponser;
use Helper;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
//
}
//Generer le QRCode d'un utilisateur
public function generate($id_user)
{
$user = User::findOrFail($id_user);
try {
//Check if the directory already exists.
$directoryName = './qrcodes/';
if (!is_dir($directoryName)) {
mkdir($directoryName, 0755);
}
$pdf = PDF::loadView('emails.qr_code', ['lastname' => $user->lastname, 'data' => $user->id])
->setPaper('a4', 'portrait')->setWarnings(false)->save(public_path($directoryName . $user->id . '.pdf'));
// $recipients = [preg_replace("/\s+/", "", $email)]; // Supprimer les espaces dans le mail
// Mail::mailer('smtp')->raw($messageText, function ($message) use ($recipients, $title, $pdf, $notice) {
// $message->subject($title)
// ->to($recipients)
// ->attachData($pdf->output(), $title . ' - ' . $notice->id_tax_notice . ".pdf");
// });
$user->has_qr_code = 1;
$user->save();
return $this->successResponse(trans('messages.successful_transaction'));
} catch (\Throwable $t) {
Log::error('-------- Mail not sent -----------');
Log::error($t->getMessage());
return $this->errorResponse(trans('errors.unexpected_error'));
}
}
/**
* @OA\Get(
* path="/qrcode/read/{id_user}",
* summary="Lire les informations à partir de l'id de l'utilisateur obtenu en scanant le QRCode",
* tags={"QRCode"},
* security={{"api_key":{}}},
* @OA\Parameter(
* parameter="id_user",
* name="id_user",
* description="ID de l'utilisateur",
* @OA\Schema(
* type="integer"
* ),
* in="path",
* required=true
* ),
* @OA\Response(
* response=200,
* description="OK",
* @OA\JsonContent(
* ref="#/components/schemas/ApiResponse",
* example = {
* "status" : 200,
* "response" : {"id":349,"uid":"5fcb90ab7197f8.26608831",
* "firstname":null,"lastname":"Tom Di","phone":"+237690716648","email":"ddoubletom@gmail.com","user_code":"vdVtq7ym9S","numero_carte":null,
* "expiration_date":null,"adresse":"kotto","solde":0,"salt":"dbbaea33d9","validation_code":"xuty8dbq","active":1,"date_modified":"2020-12-05T14:52:43.000000Z",
* "date_created":"2020-12-05T14:52:43.000000Z","network_id":185,"group_id":null,"balance_credit":0,"balance_epargne":0,"balance_nano_health":11335000,
* "date_adhesion":null,"id_bank_country":null,"iban":null},
* "error":null
* }
* )
* )
* )
*/
//Lire les infos d'un utilisateur à partir de son id
public function read($id_user)
{
$user = User::findOrFail($id_user);
return $this->successResponse($user);
}
/**
* @OA\Get(
* path="/qrcode/image/{id_user}",
* summary="Generer l'image du QRCode d'un utilisateur à partir de son id",
* tags={"QRCode"},
* security={{"api_key":{}}},
* @OA\Parameter(
* parameter="id_user",
* name="id_user",
* description="ID de l'utilisateur",
* @OA\Schema(
* type="integer"
* ),
* in="path",
* required=true
* ),
* @OA\Response(
* response=200,
* description="OK",
* @OA\JsonContent(
* ref="#/components/schemas/ApiResponse",
* example = {
* "status" : 200,
* "response" : "image en base64",
* "error":null
* }
* )
* )
* )
*/
//Generer l'image du QRCode d'un utilisateur à partir de son id
public function image($id_user)
{
$user = User::findOrFail($id_user);
return $this->successResponse(base64_encode(\SimpleSoftwareIO\QrCode\Facades\QrCode::format('svg')
->size(300)->errorCorrection('H')
->generate($user->id)));
}
}