+ Adding swagger schemas of frames sent while doing iLink Transaction

This commit is contained in:
Djery-Tom 2020-11-30 17:12:22 +01:00
parent 9f81865b77
commit efe050f1a8
1 changed files with 327 additions and 7 deletions

View File

@ -89,8 +89,16 @@ class iLinkTransactionController extends Controller
* @OA\Response( * @OA\Response(
* response=200, * response=200,
* description="OK", * description="OK",
* @OA\JsonContent( * @OA\MediaType(
* ref="#/components/schemas/ApiResponse", * mediaType="application/json",
* @OA\Schema(
* oneOf={
* @OA\Schema(ref="#/components/schemas/user_payement_of_operator_frame"),
* @OA\Schema(ref="#/components/schemas/user_remove_from_bank_to_wallet_frame"),
* @OA\Schema(ref="#/components/schemas/user_send_from_wallet_to_bank_frame"),
* @OA\Schema(ref="#/components/schemas/agent_send_from_cash_to_bank_frame"),
* }
* ),
* examples = { * examples = {
* "user_payement_of_operator" : { * "user_payement_of_operator" : {
* "summary" : "User - Payer une facture chez un opérateur donné", * "summary" : "User - Payer une facture chez un opérateur donné",
@ -503,6 +511,78 @@ class iLinkTransactionController extends Controller
* ) * )
* ) * )
*/ */
/**
* @OA\Schema(
* schema="user_send_from_wallet_to_bank_frame",
* title = "User - Envoi de wallet à banque - Trame envoyé",
* @OA\Property(property="type",
* type="integer",
* default = 4,
* description="Type de la transaction"
* ),
* * @OA\Property(property="id_wallet_user",
* type="integer",
* example=9,
* description="ID du wallet de l'utilisateur enregistré dans la base de données"
* ),
* @OA\Property(property="network_emetteur",
* type="integer",
* example=101,
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
* ),
* @OA\Property(property="iban",
* type="string",
* example = "CM15UBAA412341234123412341233",
* description="ID bancaire de l'utilisateur"
* ),
* @OA\Property(property="id_bank",
* type="integer",
* example = 16,
* description="ID de la banque dans la base de données"
* ),
* @OA\Property(property="bank",
* type="string",
* default="UBA",
* description="Nom de la banque"
* ),
* @OA\Property(property="country",
* type="string",
* default="Cameroon",
* description="Pays où la transaction été éfféctuée"
* ),
* @OA\Property(property="montant",
* type="number",
* example = 10000,
* description="Montant de la transaction"
* ),
* @OA\Property(property="frais",
* type="number",
* example = 100,
* description="Montant des frais de la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 50,
* description="Montant des taxes de la transaction"
* ),
* @OA\Property(property="commission_hyp",
* type="number",
* example = 25,
* description="Montant de la commission de l'hyperviseur du réseau sur la transaction"
* ),
* @OA\Property(property="commission_banque",
* type="number",
* example = 25,
* description="Montant de la commission de la banque sur le réseau sur la transaction"
* ),
* @OA\Property(property="date",
* type="string",
* example = "2020-11-30T08:57:57.000000Z",
* description="Date à laquelle la transaction a été éffectuée"
* )
* )
*/
case 4: //User - Envoi de wallet à banque case 4: //User - Envoi de wallet à banque
$this->validate($request, [ $this->validate($request, [
@ -558,8 +638,8 @@ class iLinkTransactionController extends Controller
$transaction->date = new \DateTime(); $transaction->date = new \DateTime();
$transaction->bank = $user->bank->operators_country->operator->nom; $transaction->bank = $user->bank->operators_country->operator->nom;
$transaction->country = $user->bank->network->country->name; $transaction->country = $user->bank->network->country->name;
$transaction->id_bank = $request->id_bank; $transaction->id_bank = $user->id_bank_country;
$transaction->iban = $request->iban; $transaction->iban = $user->iban;
$transaction->date = $this->getCurrentTime($init_country); $transaction->date = $this->getCurrentTime($init_country);
// $walletUser->save(); // $walletUser->save();
$transaction->id_transaction = $this->getTransactionID(); $transaction->id_transaction = $this->getTransactionID();
@ -1281,6 +1361,95 @@ class iLinkTransactionController extends Controller
* ) * )
* ) * )
*/ */
/**
* @OA\Schema(
* schema="agent_send_from_cash_to_bank_frame",
* title="Agent - Envoi de cash vers banque - Trame envoyé",
* @OA\Property(property="type",
* type="integer",
* default = 18,
* description="Type de la transaction"
* ),
* @OA\Property(property="id_wallet_user",
* type="integer",
* example=9,
* description="ID du wallet de l'agent enregistré dans la base de données"
* ),
* @OA\Property(property="id_wallet_network",
* type="integer",
* example=101,
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
* ),
* @OA\Property(property="iban",
* type="string",
* description="Identifiant bancaire"
* ),
* @OA\Property(property="id_bank",
* type="integer",
* example=4,
* description="ID de la banque enregistré dans la base de données"
* ),
* @OA\Property(property="nom_emetteur",
* type="string",
* description="Noms de l'emetteur"
* ),
* @OA\Property(property="prenom_emetteur",
* type="string",
* description="Prenoms de l'emetteur"
* ),
* @OA\Property(property="email_emetteur",
* type="string",
* description="Email de l'emetteur"
* ),
* @OA\Property(property="type_document_emetteur",
* type="string",
* description="Type de document que l'emetteur a fourni pour son identification"
* ),
* @OA\Property(property="id_document_emetteur",
* type="string",
* description="ID de l'emetteur sur le document qu'il a fourni pour son identification"
* ),
* @OA\Property(property="nom_destinataire",
* type="string",
* description="Noms du destinataire"
* ),
* @OA\Property(property="prenom_destinataire",
* type="string",
* description="Prenoms du destinataire"
* ),
* @OA\Property(property="montant",
* type="number",
* example = 10000,
* description="Montant de la transaction"
* ),
* @OA\Property(property="frais",
* type="number",
* example = 100,
* description="Montant des frais de la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 50,
* description="Montant des taxes de la transaction"
* ),
* @OA\Property(property="commission_hyp",
* type="number",
* example = 25,
* description="Montant de la commission de l'hyperviseur du réseau sur la transaction"
* ),
* @OA\Property(property="commission_sup",
* type="number",
* example = 25,
* description="Montant de la commission du superviseur de l'agent du réseau sur la transaction"
* ),
* @OA\Property(property="commission_ag",
* type="number",
* example = 25,
* description="Montant de la commission de l'agent géolocalisé sur la transaction"
* ),
* )
*/
case 18: // Agent - Envoi de cash vers banque case 18: // Agent - Envoi de cash vers banque
$this->validate($request, [ $this->validate($request, [
'iban' => 'required', 'iban' => 'required',
@ -1328,6 +1497,8 @@ class iLinkTransactionController extends Controller
$transaction->commission_banque = 0; $transaction->commission_banque = 0;
$transaction->commission_hyp = 0; $transaction->commission_hyp = 0;
$transaction->commission_sup = 0;
$transaction->commission_ag = 0;
$transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_wallet_hyp = $walletHyperviseur->id;
$transaction->id_wallet_ag = $walletAgent->id; $transaction->id_wallet_ag = $walletAgent->id;
@ -1356,7 +1527,7 @@ class iLinkTransactionController extends Controller
/** /**
* @OA\Schema( * @OA\Schema(
* schema="user_payement_of_operator", * schema="user_payement_of_operator",
* title = "User - Payer un operateur", * title = "User - Payer une facture chez un operateur",
* @OA\Property(property="type", * @OA\Property(property="type",
* type="integer", * type="integer",
* enum = {19}, * enum = {19},
@ -1399,6 +1570,84 @@ class iLinkTransactionController extends Controller
* ) * )
* ) * )
*/ */
/**
* @OA\Schema(
* schema="user_payement_of_operator_frame",
* title = "User - Payer une facture chez un operateur - Trame envoyé",
*
* @OA\Property(property="id_transaction",
* type="string",
* example = "PYHL8CCZYPCM",
* description="ID de la transaction généré dans la base de données"
* ),
* @OA\Property(property="type",
* type="integer",
* default = 19,
* description="Type de la transaction"
* ),
* @OA\Property(property="id_wallet_user",
* type="integer",
* example=9,
* description="ID du wallet de l'utilisateur enregistré dans la base de données"
* ),
* @OA\Property(property="network_emetteur",
* type="integer",
* example=101,
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
* ),
* @OA\Property(property="country",
* type="string",
* example ="Cameroon",
* description="Pays où la transaction été éfféctuée"
* ),
* @OA\Property(property="no_facture",
* type="string",
* example ="ENEO1425533",
* description="Numero de la facture"
* ),
* @OA\Property(property="operator",
* type="string",
* default="ENEO",
* description="Nom de l'operateur"
* ),
* @OA\Property(property="type_operator",
* type="string",
* default="Opérateur d'électricité",
* 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="frais",
* type="number",
* example = 100,
* description="Montant des frais de la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 50,
* description="Montant des taxes de la transaction"
* ),
* @OA\Property(property="commission_hyp",
* type="number",
* example = 25,
* description="Montant de la commission de l'hyperviseur du réseau sur la transaction"
* ),
* @OA\Property(property="date",
* type="string",
* example = "2020-11-30T08:57:57.000000Z",
* description="Date à laquelle la transaction a été éffectuée"
* )
* )
*/
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',
@ -1429,7 +1678,6 @@ class iLinkTransactionController extends Controller
$transaction->taxe = $taxe = 0; $transaction->taxe = $taxe = 0;
// $walletUser->balance -= $transaction->montant; // $walletUser->balance -= $transaction->montant;
//Emettre une trame SSL pour recharger l'api de l'operateur du montant de la transaction //Emettre une trame SSL pour recharger l'api de l'operateur du montant de la transaction
$transaction->commission_banque = 0;
$transaction->commission_hyp = 0; $transaction->commission_hyp = 0;
@ -1483,6 +1731,78 @@ class iLinkTransactionController extends Controller
* ) * )
* ) * )
*/ */
/**
* @OA\Schema(
* schema="user_remove_from_bank_to_wallet_frame",
* title="User - Retrait de la banque vers le wallet - Trame envoyé ",
* @OA\Property(property="type",
* type="integer",
* default = 20,
* description="Type de la transaction"
* ),
* @OA\Property(property="id_wallet_user",
* type="integer",
* example=9,
* description="ID du wallet de l'utilisateur enregistré dans la base de données"
* ),
* @OA\Property(property="network_emetteur",
* type="integer",
* example=101,
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
* ),
* @OA\Property(property="iban",
* type="string",
* example = "CM15UBAA412341234123412341233",
* description="ID bancaire de l'utilisateur"
* ),
* @OA\Property(property="id_bank",
* type="integer",
* example = 16,
* description="ID de la banque dans la base de données"
* ),
* @OA\Property(property="bank",
* type="string",
* default="UBA",
* description="Nom de la banque"
* ),
* @OA\Property(property="country",
* type="string",
* default="Cameroon",
* description="Pays où la transaction été éfféctuée"
* ),
* @OA\Property(property="montant",
* type="number",
* example = 10000,
* description="Montant de la transaction"
* ),
* @OA\Property(property="frais",
* type="number",
* example = 100,
* description="Montant des frais de la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 50,
* description="Montant des taxes de la transaction"
* ),
* @OA\Property(property="commission_hyp",
* type="number",
* example = 25,
* description="Montant de la commission de l'hyperviseur du réseau sur la transaction"
* ),
* @OA\Property(property="commission_banque",
* type="number",
* example = 25,
* description="Montant de la commission de la banque sur le réseau sur la transaction"
* ),
* @OA\Property(property="date",
* type="string",
* example = "2020-11-30T08:57:57.000000Z",
* description="Date à laquelle la transaction a été éffectuée"
* )
* )
*/
case 20: //User - Retrait de la banque vers le wallet case 20: //User - Retrait de la banque vers le wallet
// $this->validate($request, [ // $this->validate($request, [
@ -1501,7 +1821,7 @@ class iLinkTransactionController extends Controller
return $this->errorResponse(trans('errors.wallet_not_linked_to_bank_account')); return $this->errorResponse(trans('errors.wallet_not_linked_to_bank_account'));
//Reverifier si l'operateur est toujours associé au reseau //Reverifier si l'operateur est toujours associé au reseau
$network_bank = NetworksOperator::where('id_network', $request->id_wallet_network)->where('id_operator_country', $user->id_bank_country)->first(); $network_bank = NetworksOperator::where('id_network', $transaction->network_emetteur)->where('id_operator_country', $user->id_bank_country)->first();
if (!$network_bank) if (!$network_bank)
return $this->errorResponse(trans('errors.operator_not_associated_with_network') . '. ' . trans('errors.update_banking_information')); return $this->errorResponse(trans('errors.operator_not_associated_with_network') . '. ' . trans('errors.update_banking_information'));