170 lines
5.4 KiB
PHP
Executable File
170 lines
5.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Agent;
|
|
use App\Models\User;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class QRCodeController extends Controller
|
|
{
|
|
/**
|
|
* Create a new controller instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
//
|
|
}
|
|
|
|
//Generer le QRCode d'un utilisateur
|
|
public function generate(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'user_id' => 'required|integer',
|
|
'type' => 'required|in:user,agent'
|
|
]);
|
|
$type = $request->input('type');
|
|
$user_id = $request->input('user_id');
|
|
try {
|
|
$qr_code_pdf = $this->generateQRCode($user_id, $type);
|
|
// $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");
|
|
// });
|
|
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",
|
|
* 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="query",
|
|
* required=true
|
|
* ),
|
|
* @OA\Parameter(
|
|
* parameter="type",
|
|
* name="type",
|
|
* description="Type d'utilisateur",
|
|
* @OA\Schema(
|
|
* type="string",
|
|
* enum={"user","agent"}
|
|
* ),
|
|
* in="query",
|
|
* 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(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'user_id' => 'required|integer',
|
|
'type' => 'required|in:user,agent'
|
|
]);
|
|
$type = $request->input('type');
|
|
$user_id = $request->input('user_id');
|
|
if ($type == 'user') {
|
|
$user = User::findOrFail($user_id);
|
|
} else {
|
|
$user = Agent::findOrFail($user_id);
|
|
}
|
|
return $this->successResponse($user);
|
|
}
|
|
|
|
/**
|
|
* @OA\Get(
|
|
* path="/qrcode/image",
|
|
* 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="query",
|
|
* required=true
|
|
* ),
|
|
* @OA\Parameter(
|
|
* parameter="type",
|
|
* name="type",
|
|
* description="Type d'utilisateur",
|
|
* @OA\Schema(
|
|
* type="string",
|
|
* enum={"user","agent"}
|
|
* ),
|
|
* in="query",
|
|
* 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(Request $request)
|
|
{
|
|
$this->validate($request, [
|
|
'user_id' => 'required|integer',
|
|
'type' => 'required|in:user,agent'
|
|
]);
|
|
$type = $request->input('type');
|
|
$user_id = $request->input('user_id');
|
|
if ($type == 'user') {
|
|
$user = User::findOrFail($user_id);
|
|
} else {
|
|
$user = Agent::findOrFail($user_id);
|
|
}
|
|
$data = 'type=' . $type . '&id=' . $user->id;
|
|
return $this->successResponse(base64_encode(\SimpleSoftwareIO\QrCode\Facades\QrCode::format('svg')
|
|
->size(300)->errorCorrection('H')
|
|
->generate($data)));
|
|
}
|
|
}
|