From 57ab240070d22c3dd49a2f91891864ff81785323 Mon Sep 17 00:00:00 2001 From: Djery-Tom Date: Tue, 1 Mar 2022 18:28:36 +0100 Subject: [PATCH] Add endpoint to fetch agents --- app/Http/Controllers/HelperController.php | 84 ++++++++++++++++++++ app/Http/Controllers/UserGroupController.php | 20 ++++- resources/lang/en/errors.php | 1 + resources/lang/fr/errors.php | 1 + routes/web.php | 5 +- 5 files changed, 106 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/HelperController.php b/app/Http/Controllers/HelperController.php index eb05a82..f27cabd 100755 --- a/app/Http/Controllers/HelperController.php +++ b/app/Http/Controllers/HelperController.php @@ -257,4 +257,88 @@ class HelperController extends Controller Log::error($t->getMessage() . " :\n" . $t->getTraceAsString()); } } + + /** + * @OA\Post( + * path="/agents", + * summary="Rechercher un agent", + * tags={"Agents"}, + * security={{"api_key":{}}}, + * @OA\RequestBody( + * description="Corps de la requete", + * required=true, + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema( + * @OA\Property(property="dial_code", + * type="string", + * description="Dial code du pays", + * example= "+237", + * ), + * @OA\Property(property="name", + * type="string", + * example="tom", + * description="Nom de l'agent" + * ), + * @OA\Property(property="phone", + * type="string", + * example="0452366562", + * description="Numero de telephone" + * ), + * @OA\Property(property="id", + * type="integer", + * example = 12, + * description="ID de l'agent" + * ) + * ) + * ) + * ), + * @OA\Response( + * response=200, + * description="OK", + * @OA\JsonContent( + * ref="#/components/schemas/ApiResponse", + * example = { + * "status" : 200, + * "response" : "Votre requête de rattachement de votre compte bancaire a été prise en compte, vous recevrez un mail de confirmation dès lors que la banque aura validé votre code IBAN", + * "error":null + * } + * ) + * ) + * ) + */ + // Option de recherche des agents geolocalisés + public function getAgents(Request $request) + { + $this->validate($request, [ + 'name' => 'string', + 'phone' => 'string', + 'id' => 'integer', + 'dial_code' => 'required|string|min:2' + ]); + + $name = $request->input('name'); + $phone = $request->input('phone'); + $id = $request->input('id'); + $dial_code = $request->input('dial_code'); + + $perPage = current(DB::select("SELECT valeur_int FROM adminConfig WHERE cle = 'pas_chargement' LIMIT 1"))->valeur_int ?? 10; + + $query = AgentPlus::where('category', 'geolocated')->where('code_dial', $dial_code)->where('etat', 1)->distinct(); + + if (!empty($name)) { + $query = $query->where('lastname', 'like', '%' . $name . '%')->orWhere('firstname', 'like', '%' . $name . '%'); + } + + if (!empty($phone)) { + $query = $query->where('phone', 'like', '%' . $phone . '%')->orWhere('transactionNumber', 'like', '%' . $phone . '%'); + } + + if (!empty($id)) { + $query = $query->where('id', $id); + } + + $agents = $query->selectRaw('id , firstname, lastname, adresse , email , longitude , latitude , phone , transactionNumber , openHours , closeHours , solde , network, country')->paginate($perPage); + return $this->successResponse($agents); + } } diff --git a/app/Http/Controllers/UserGroupController.php b/app/Http/Controllers/UserGroupController.php index b0f3ade..1755214 100755 --- a/app/Http/Controllers/UserGroupController.php +++ b/app/Http/Controllers/UserGroupController.php @@ -257,7 +257,10 @@ class UserGroupController extends Controller 'password' => 'required', 'limite_credit' => 'required|numeric|min:0|not_in:0', ]); - $group = UsersGroup::where('code_groupe', $request->code_groupe)->firstOrFail(); + $group = UsersGroup::where('code_groupe', $request->code_groupe)->first(); + if (!isset($group)) { + return $this->errorResponse(trans('errors.users_group_not_found')); + } $user = User::findOrFail($group->id_createur); if (!$this->checkPassword($request->password, $user->encrypted_password, $user->salt)) return $this->errorResponse(trans('messages.incorrect_user_password')); @@ -419,11 +422,17 @@ ug.date_creation as date_creation_groupe , ug.createur , ug.sponsor1 , ug.sponso 'id_user' => 'required|integer|min:0|not_in:0' ]); - $group = UsersGroup::where('code_groupe', $request->code_groupe)->firstOrFail(); + $group = UsersGroup::where('code_groupe', $request->code_groupe)->first(); + if (!isset($group)) { + return $this->errorResponse(trans('errors.users_group_not_found')); + } if (!$group->actif) return $this->errorResponse(trans('errors.group_not_active')); - $sponsor = User::where('user_code', $request->code_sponsor)->firstOrFail(); + $sponsor = User::where('user_code', $request->code_sponsor)->first(); + if (isset($sponsor)) { + return $this->errorResponse(trans('errors.sponsor_not_found', ['id' => $request->code_sponsor])); + } if (!in_array($sponsor->id, [$group->id_sponsor1, $group->id_sponsor2, $group->id_sponsor3])) return $this->errorResponse(trans('errors.sponsor_code_not_match')); @@ -488,7 +497,10 @@ ug.date_creation as date_creation_groupe , ug.createur , ug.sponsor1 , ug.sponso $user = User::findOrFail($request->id_user); $country_user = $user->network->country->id; - $group = UsersGroup::where('code_groupe', $request->code_groupe)->firstOrFail(); + $group = UsersGroup::where('code_groupe', $request->code_groupe)->first(); + if (!isset($group)) { + return $this->errorResponse(trans('errors.users_group_not_found')); + } if ($group->id_createur != $request->id_user) return $this->errorResponse(trans('errors.not_group_creator')); diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php index acd942d..b79636f 100755 --- a/resources/lang/en/errors.php +++ b/resources/lang/en/errors.php @@ -84,4 +84,5 @@ Paying network : :network :country', "wallet_not_linked_to_bank_account" => "Your wallet is not linked to a bank account", "update_banking_information" => "Update your banking information", "wallet_already_linked_to_bank_account" => "Your wallet is already linked to your bank account", + "users_group_not_found" => "This group code does not exist", ]; diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php index 8583f91..5a98e65 100755 --- a/resources/lang/fr/errors.php +++ b/resources/lang/fr/errors.php @@ -84,4 +84,5 @@ Réseau payeur : :network :country', "wallet_not_linked_to_bank_account" => "Votre wallet n'est pas rattaché à un compte bancaire", "update_banking_information" => "Mettez à jour vos informations bancaires", "wallet_already_linked_to_bank_account" => "Votre wallet est déjà rattaché à votre compte bancaire", + "users_group_not_found" => "Ce code de groupe n'existe pas", ]; diff --git a/routes/web.php b/routes/web.php index b50b0e6..3db3513 100755 --- a/routes/web.php +++ b/routes/web.php @@ -128,8 +128,11 @@ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($route //Notifications $router->post('notify-new-user', 'HelperController@notifyNewUser'); - //QRCode for agents + //QRCode $router->get('qrcode/generate', 'QRCodeController@generate'); $router->get('qrcode/read', 'QRCodeController@read'); $router->get('qrcode/image', 'QRCodeController@image'); + //User + $router->post('agents', 'HelperController@getAgents'); + });