+ Implements Swagger documentation
This commit is contained in:
parent
5cbf539346
commit
1f38606b7f
|
@ -18,7 +18,7 @@ DB_PASSWORD=vps@2017GA
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=file
|
||||||
QUEUE_CONNECTION=sync
|
QUEUE_CONNECTION=sync
|
||||||
|
|
||||||
ACCEPTED_KEYS=yhSTSSqIO1uSE1icu09edPOeSFGxIDjo
|
ACCEPTED_KEYS=yhSTSSqIO1uSE1icu09edPOeSFGxIDjo,fywRtXSwEhHncwXaqn10wa9bJU9a63r2
|
||||||
|
|
||||||
TWILIO_ACCOUNT_SID="ACacdb9c9601741af001ebbc7eca4969cd"
|
TWILIO_ACCOUNT_SID="ACacdb9c9601741af001ebbc7eca4969cd"
|
||||||
TWILIO_AUTH_TOKEN="e0e2f1176c09b3980c9ecf967187191b"
|
TWILIO_AUTH_TOKEN="e0e2f1176c09b3980c9ecf967187191b"
|
||||||
|
@ -39,4 +39,4 @@ NOTIFICATION_SERVICE_URL=localhost:8083
|
||||||
NOTIFICATION_SERVICE_KEY=RfXvPQzQRgwpzQYPnLfWpZzgx4QseHlg
|
NOTIFICATION_SERVICE_KEY=RfXvPQzQRgwpzQYPnLfWpZzgx4QseHlg
|
||||||
|
|
||||||
SWAGGER_GENERATE_ALWAYS=true
|
SWAGGER_GENERATE_ALWAYS=true
|
||||||
SWAGGER_DOCS_TOKEN=<some_strong_token>
|
SWAGGER_DOCS_TOKEN=ZfMqCAdHHrSH8ADdXreIejgjJtOwsH4K
|
||||||
|
|
|
@ -6,13 +6,15 @@ use Laravel\Lumen\Routing\Controller as BaseController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @OA\Info(
|
* @OA\Info(
|
||||||
* title="Your Awesome Modules's API",
|
* title="Wallet Service API",
|
||||||
* version="1.0.0",
|
* version="1.0.0",
|
||||||
* @OA\Contact(
|
* @OA\Contact(
|
||||||
* email="developers@module.com",
|
* email="administrateur@ilink-app.com",
|
||||||
|
* url = "https://ilink-app.com/",
|
||||||
* name="Developer Team"
|
* name="Developer Team"
|
||||||
* )
|
* )
|
||||||
* )
|
* )
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
class Controller extends BaseController
|
class Controller extends BaseController
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,35 +16,6 @@ use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
|
||||||
// We can define the User Scheme here or in our App\User model
|
|
||||||
/**
|
|
||||||
* @OA\Schema(
|
|
||||||
* schema="UserSchema",
|
|
||||||
* title="User Model",
|
|
||||||
* description="User model",
|
|
||||||
* @OA\Property(
|
|
||||||
* property="id", description="ID of the user",
|
|
||||||
* @OA\Schema(type="number", example=1)
|
|
||||||
* ),
|
|
||||||
* @OA\Property(
|
|
||||||
* property="name", description="Name of the user",
|
|
||||||
* @OA\Schema(type="string", example="User Name")
|
|
||||||
* )
|
|
||||||
* )
|
|
||||||
*/
|
|
||||||
// We can define the request parameter inside the Requests or here
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @OA\Parameter(
|
|
||||||
* parameter="get_users_request_parameter_limit",
|
|
||||||
* name="limit",
|
|
||||||
* description="Limit the number of results",
|
|
||||||
* in="query",
|
|
||||||
* @OA\Schema(
|
|
||||||
* type="number", default=10
|
|
||||||
* )
|
|
||||||
* ),
|
|
||||||
*/
|
|
||||||
class TransmittingNetworksController extends Controller
|
class TransmittingNetworksController extends Controller
|
||||||
{
|
{
|
||||||
use ApiResponser;
|
use ApiResponser;
|
||||||
|
@ -60,28 +31,7 @@ class TransmittingNetworksController extends Controller
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @OA\Get(
|
|
||||||
* path="/users",
|
|
||||||
* summary="Return the list of users",
|
|
||||||
* tags={"Hello"},
|
|
||||||
* @OA\Parameter(ref="#/components/parameters/get_users_request_parameter_limit"),
|
|
||||||
* @OA\Response(
|
|
||||||
* response=200,
|
|
||||||
* description="List of users",
|
|
||||||
* @OA\JsonContent(
|
|
||||||
* @OA\Property(
|
|
||||||
* property="data",
|
|
||||||
* description="List of users",
|
|
||||||
* @OA\Schema(
|
|
||||||
* type="array",
|
|
||||||
* @OA\Items(ref="#/components/schemas/UserSchema")
|
|
||||||
* )
|
|
||||||
* )
|
|
||||||
* )
|
|
||||||
* )
|
|
||||||
* )
|
|
||||||
*/
|
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$users = User::paginate($request->get("limit", 10));
|
$users = User::paginate($request->get("limit", 10));
|
||||||
|
|
|
@ -65,7 +65,8 @@ class WalletController extends Controller
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function array_except($array, $keys){
|
private function array_except($array, $keys)
|
||||||
|
{
|
||||||
foreach ($array as $row) {
|
foreach ($array as $row) {
|
||||||
foreach ($keys as $key) {
|
foreach ($keys as $key) {
|
||||||
unset($row->$key);
|
unset($row->$key);
|
||||||
|
@ -101,7 +102,8 @@ class WalletController extends Controller
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wallets users iLink
|
// Wallets users iLink
|
||||||
public function showWalletUser($id_user){
|
public function showWalletUser($id_user)
|
||||||
|
{
|
||||||
$wallet = collect(DB::select('SELECT wu.*, u.user_code , u.numero_carte , u.expiration_date ,n2.id as id_wallet_network, n2.name as network , cc.name as country, cc.currency_code from wallets_users wu
|
$wallet = collect(DB::select('SELECT wu.*, u.user_code , u.numero_carte , u.expiration_date ,n2.id as id_wallet_network, n2.name as network , cc.name as country, cc.currency_code from wallets_users wu
|
||||||
INNER JOIN users u ON u.id = wu.idUser
|
INNER JOIN users u ON u.id = wu.idUser
|
||||||
INNER JOIN networks n1 ON n1.id = u.network_id
|
INNER JOIN networks n1 ON n1.id = u.network_id
|
||||||
|
@ -348,6 +350,54 @@ class WalletController extends Controller
|
||||||
return $this->successResponse($result);
|
return $this->successResponse($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Get(
|
||||||
|
* path="/wallets/users/operators/{type_operator}/{id_wallet_network}",
|
||||||
|
* summary="Afficher la liste des operateurs d'un reseau",
|
||||||
|
* tags={"Liste des operateurs d'un reseau"},
|
||||||
|
* security={{"api_key":{}}},
|
||||||
|
* @OA\Parameter(
|
||||||
|
* parameter="type_operator",
|
||||||
|
* name="type_operator",
|
||||||
|
* description="Type d'operateur",
|
||||||
|
* in="path",
|
||||||
|
* required=true,
|
||||||
|
* @OA\Schema(
|
||||||
|
* type="string",
|
||||||
|
* enum={"bank", "electricity", "phone" , "tv" ,"school" , "water"},
|
||||||
|
* default="bank"
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Parameter(
|
||||||
|
* parameter="id_wallet_network",
|
||||||
|
* name="id_wallet_network",
|
||||||
|
* description="ID du reseau auquel appartient le wallet",
|
||||||
|
* in="path",
|
||||||
|
* required=true,
|
||||||
|
* @OA\Schema(
|
||||||
|
* type="integer", default=101
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="OK",
|
||||||
|
* @OA\JsonContent(
|
||||||
|
* ref="#/components/schemas/ApiResponse",
|
||||||
|
* example = {
|
||||||
|
* "status" : 200,
|
||||||
|
* "response" : {{
|
||||||
|
* "id_operator" : 1,
|
||||||
|
* "operator_name" : "ENEO",
|
||||||
|
* "operator_address" : "Bonamoussadi",
|
||||||
|
* "country": "Cameroon"
|
||||||
|
* }},
|
||||||
|
* "error":null
|
||||||
|
* }
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
|
|
||||||
public function getWalletOperators($id_wallet_network, $type_operator)
|
public function getWalletOperators($id_wallet_network, $type_operator)
|
||||||
{
|
{
|
||||||
$operators = DB::select("SELECT oc.id as id_operator, o.nom as operator_name , oc.adresse as operator_address, c.name as country FROM networks_operators nop INNER JOIN operators_countries oc ON oc.id = nop.id_operator_country INNER JOIN operators o ON o.id = oc.id_operator
|
$operators = DB::select("SELECT oc.id as id_operator, o.nom as operator_name , oc.adresse as operator_address, c.name as country FROM networks_operators nop INNER JOIN operators_countries oc ON oc.id = nop.id_operator_country INNER JOIN operators o ON o.id = oc.id_operator
|
||||||
|
|
|
@ -1145,6 +1145,76 @@ class iLinkTransactionController extends Controller
|
||||||
$this->sendMail($agent->email, trans('messages.successful_transaction'), $message);
|
$this->sendMail($agent->email, trans('messages.successful_transaction'), $message);
|
||||||
return $this->successResponse($message . trans('messages.sent_by_mail'));
|
return $this->successResponse($message . trans('messages.sent_by_mail'));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Post(
|
||||||
|
* path="/transactions/ilink",
|
||||||
|
* summary="Payer une facture chez un operateur donné",
|
||||||
|
* tags={"Paiement d'une facture chez un operateur"},
|
||||||
|
* security={{"api_key":{}}},
|
||||||
|
* @OA\RequestBody(
|
||||||
|
* description="Corps de la requete",
|
||||||
|
* required=true,
|
||||||
|
* @OA\MediaType(
|
||||||
|
* mediaType="application/json",
|
||||||
|
* @OA\Schema(
|
||||||
|
* @OA\Property(property="type",
|
||||||
|
* type="integer",
|
||||||
|
* enum = {19},
|
||||||
|
* default = 19,
|
||||||
|
* description="Type de la transaction"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="id_wallet_user",
|
||||||
|
* type="integer",
|
||||||
|
* example=9,
|
||||||
|
* description="ID du wallet de l'utilisateur"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="id_wallet_network",
|
||||||
|
* type="integer",
|
||||||
|
* example=101,
|
||||||
|
* description="ID du reseau auquel appartient le wallet"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="no_facture",
|
||||||
|
* type="string",
|
||||||
|
* description="Numero de la facture"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="type_operator",
|
||||||
|
* type="string",
|
||||||
|
* enum={"electricity", "phone" , "tv" ,"school" , "water"},
|
||||||
|
* default="electricity",
|
||||||
|
* description="Type d'operateur"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="id_operator",
|
||||||
|
* type="integer",
|
||||||
|
* example = 16,
|
||||||
|
* description="ID de l'operateur"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="montant",
|
||||||
|
* type="number",
|
||||||
|
* example = 10000,
|
||||||
|
* description="Montant de la transaction"
|
||||||
|
* ),
|
||||||
|
* @OA\Property(property="password",
|
||||||
|
* type="string",
|
||||||
|
* description="Mot de passe"
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* ),
|
||||||
|
* @OA\Response(
|
||||||
|
* response=200,
|
||||||
|
* description="OK",
|
||||||
|
* @OA\JsonContent(
|
||||||
|
* ref="#/components/schemas/ApiResponse",
|
||||||
|
* example = {
|
||||||
|
* "status" : 200,
|
||||||
|
* "response" : "Paiement d'une facture chez un operateur\nInformations de la transaction :\n - Numéro : 7S9PZO26VAQ3\n - Montant de la transaction : 100 000 FCFA\n
|
||||||
|
- Frais : 0 FCFA\n - Montant net payé: 100 000 FCFA\n - Compte émetteur : s6LD9PmCJC\n - Operateur : CDE\n - Type d'operateur : Opérateur d'eau\n - No facture : CDE1425533\n\nCe message a été envoyé dans le mail de l'émetteur",
|
||||||
|
* "error":null
|
||||||
|
* }
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
case 19: // User - Payer un operateur
|
case 19: // User - Payer un operateur
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'id_operator' => 'required|integer|min:0|not_in:0',
|
'id_operator' => 'required|integer|min:0|not_in:0',
|
||||||
|
|
|
@ -4,6 +4,27 @@ namespace App\Traits;
|
||||||
|
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
// Api Response schema
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @OA\Schema(
|
||||||
|
* schema="ApiResponse",
|
||||||
|
* title="API Response",
|
||||||
|
* description="Format d'un message de reponse",
|
||||||
|
* @OA\Property(
|
||||||
|
* property="status", description="Code de la requete",
|
||||||
|
* @OA\Schema(type="number", example=200)
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="response", description="Resultat de la requete si pas d'erreur",
|
||||||
|
* @OA\Schema(type="object", example="{name : 'Djery'}")
|
||||||
|
* ),
|
||||||
|
* @OA\Property(
|
||||||
|
* property="error", description="Message d'erreur si erreur",
|
||||||
|
* @OA\Schema(type="string", example="There is an error")
|
||||||
|
* )
|
||||||
|
* )
|
||||||
|
*/
|
||||||
trait ApiResponser
|
trait ApiResponser
|
||||||
{
|
{
|
||||||
public function successResponse($data, $code = Response::HTTP_OK)
|
public function successResponse($data, $code = Response::HTTP_OK)
|
||||||
|
|
|
@ -142,6 +142,12 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
*/
|
*/
|
||||||
|
'api_key' => [ // Unique name of security
|
||||||
|
'type' => 'apiKey', // Valid values are "basic", "apiKey" or "oauth2".
|
||||||
|
'description' => "Api Key",
|
||||||
|
'name' => 'Authorization', // The name of the header or query parameter to be used.
|
||||||
|
'in' => 'header', // The location of the API key. Valid values are "query" or "header".
|
||||||
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in New Issue