walletservice/app/Http/Controllers/QRCodeController.php

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)));
}
}