+ Implements Swagger documentation
This commit is contained in:
parent
5cbf539346
commit
1f38606b7f
|
@ -18,7 +18,7 @@ DB_PASSWORD=vps@2017GA
|
|||
CACHE_DRIVER=file
|
||||
QUEUE_CONNECTION=sync
|
||||
|
||||
ACCEPTED_KEYS=yhSTSSqIO1uSE1icu09edPOeSFGxIDjo
|
||||
ACCEPTED_KEYS=yhSTSSqIO1uSE1icu09edPOeSFGxIDjo,fywRtXSwEhHncwXaqn10wa9bJU9a63r2
|
||||
|
||||
TWILIO_ACCOUNT_SID="ACacdb9c9601741af001ebbc7eca4969cd"
|
||||
TWILIO_AUTH_TOKEN="e0e2f1176c09b3980c9ecf967187191b"
|
||||
|
@ -39,4 +39,4 @@ NOTIFICATION_SERVICE_URL=localhost:8083
|
|||
NOTIFICATION_SERVICE_KEY=RfXvPQzQRgwpzQYPnLfWpZzgx4QseHlg
|
||||
|
||||
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(
|
||||
* title="Your Awesome Modules's API",
|
||||
* title="Wallet Service API",
|
||||
* version="1.0.0",
|
||||
* @OA\Contact(
|
||||
* email="developers@module.com",
|
||||
* email="administrateur@ilink-app.com",
|
||||
* url = "https://ilink-app.com/",
|
||||
* name="Developer Team"
|
||||
* )
|
||||
* )
|
||||
*
|
||||
*/
|
||||
class Controller extends BaseController
|
||||
{
|
||||
|
|
|
@ -16,35 +16,6 @@ use Illuminate\Http\Request;
|
|||
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
|
||||
{
|
||||
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)
|
||||
{
|
||||
$users = User::paginate($request->get("limit", 10));
|
||||
|
|
|
@ -36,38 +36,39 @@ class WalletController extends Controller
|
|||
|
||||
// Create wallet if is not exist
|
||||
$category = null;
|
||||
if($networks){
|
||||
if ($networks) {
|
||||
$reload = false;
|
||||
$id = $id_agent;
|
||||
foreach ($networks as $network){
|
||||
foreach ($networks as $network) {
|
||||
$category = $network->category;
|
||||
// Create wallet if is not exist
|
||||
if(!$network->id){
|
||||
if (!$network->id) {
|
||||
DB::insert('INSERT INTO wallets (id_networkAgent) VALUES (?);', [$network->id_networkAgent]);
|
||||
$reload = true;
|
||||
}
|
||||
}
|
||||
if($reload)
|
||||
if ($reload)
|
||||
return $this->activated($id);
|
||||
}
|
||||
|
||||
|
||||
// Return only single wallet if it is hypervisor or supervisor
|
||||
if(in_array( $category , ['hyper','super'])){
|
||||
if (in_array($category, ['hyper', 'super'])) {
|
||||
// Remove unnecessary fields
|
||||
$networks = $this->array_except($networks,['id_networkAgent','category']);
|
||||
$networks = $this->array_except($networks, ['id_networkAgent', 'category']);
|
||||
return $this->successResponse(collect($networks)->first());
|
||||
}else{
|
||||
} else {
|
||||
// Remove unnecessary fields
|
||||
$networks = $this->array_except($networks,['id_networkAgent','category','balance_princ','balance_com','created_date','taux_com_client_depot']);
|
||||
$networks = $this->array_except($networks, ['id_networkAgent', 'category', 'balance_princ', 'balance_com', 'created_date', 'taux_com_client_depot']);
|
||||
return $this->successResponse($networks);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function array_except($array, $keys){
|
||||
foreach ($array as $row){
|
||||
foreach($keys as $key){
|
||||
private function array_except($array, $keys)
|
||||
{
|
||||
foreach ($array as $row) {
|
||||
foreach ($keys as $key) {
|
||||
unset($row->$key);
|
||||
}
|
||||
}
|
||||
|
@ -80,20 +81,20 @@ class WalletController extends Controller
|
|||
$wallet = collect(DB::select('SELECT wa.wallet_id AS id, wa.balance_princ, wa.balance_com, wa.created_date, wa.network , cw.taux_com_client_depot, c.name AS country, cw.type,
|
||||
c.currency_code , cw.id_network FROM wallet_agent wa INNER JOIN configWallet cw ON wa.network_id = cw.id_network INNER JOIN networks n ON n.id = wa.network_id
|
||||
INNER JOIN countries_currencies c ON c.id = n.country_id
|
||||
WHERE wa.wallet_id = :id',['id' => $id_wallet]))->first();
|
||||
if($wallet)
|
||||
WHERE wa.wallet_id = :id', ['id' => $id_wallet]))->first();
|
||||
if ($wallet)
|
||||
return $this->successResponse($wallet);
|
||||
else
|
||||
return $this->errorResponse(trans('errors.model_not_found',['model'=>'wallet']),Response::HTTP_BAD_REQUEST);
|
||||
return $this->errorResponse(trans('errors.model_not_found', ['model' => 'wallet']), Response::HTTP_BAD_REQUEST);
|
||||
}
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$rules = [
|
||||
'id_networkAgent'=>'required|integer|min:1'
|
||||
'id_networkAgent' => 'required|integer|min:1'
|
||||
];
|
||||
|
||||
$this->validate($request,$rules);
|
||||
$this->validate($request, $rules);
|
||||
|
||||
DB::insert('INSERT INTO wallets (id_networkAgent) VALUES (?);', [$request->id_networkAgent]);
|
||||
return $this->successResponse(trans('messages.new_wallet_added'));
|
||||
|
@ -101,7 +102,8 @@ class WalletController extends Controller
|
|||
}
|
||||
|
||||
// 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
|
||||
INNER JOIN users u ON u.id = wu.idUser
|
||||
INNER JOIN networks n1 ON n1.id = u.network_id
|
||||
|
@ -348,6 +350,54 @@ class WalletController extends Controller
|
|||
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)
|
||||
{
|
||||
$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);
|
||||
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
|
||||
$this->validate($request, [
|
||||
'id_operator' => 'required|integer|min:0|not_in:0',
|
||||
|
|
|
@ -4,14 +4,35 @@ namespace App\Traits;
|
|||
|
||||
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
|
||||
{
|
||||
public function successResponse($data , $code = Response::HTTP_OK)
|
||||
public function successResponse($data, $code = Response::HTTP_OK)
|
||||
{
|
||||
return response($this->formatResponse($code,$data,null) , $code)->header('Content-Type', 'application/json');
|
||||
return response($this->formatResponse($code, $data, null), $code)->header('Content-Type', 'application/json');
|
||||
}
|
||||
|
||||
public function errorResponse($message , $code = Response::HTTP_BAD_REQUEST)
|
||||
public function errorResponse($message, $code = Response::HTTP_BAD_REQUEST)
|
||||
{
|
||||
return response()->json($this->formatResponse($code,null,$message), $code);
|
||||
}
|
||||
|
|
|
@ -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