diff --git a/app/Http/Controllers/iLinkTransactionController.php b/app/Http/Controllers/iLinkTransactionController.php index 3de81bd..e7e05f5 100755 --- a/app/Http/Controllers/iLinkTransactionController.php +++ b/app/Http/Controllers/iLinkTransactionController.php @@ -89,8 +89,16 @@ class iLinkTransactionController extends Controller * @OA\Response( * response=200, * description="OK", - * @OA\JsonContent( - * ref="#/components/schemas/ApiResponse", + * @OA\MediaType( + * 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 = { * "user_payement_of_operator" : { * "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 $this->validate($request, [ @@ -558,8 +638,8 @@ class iLinkTransactionController extends Controller $transaction->date = new \DateTime(); $transaction->bank = $user->bank->operators_country->operator->nom; $transaction->country = $user->bank->network->country->name; - $transaction->id_bank = $request->id_bank; - $transaction->iban = $request->iban; + $transaction->id_bank = $user->id_bank_country; + $transaction->iban = $user->iban; $transaction->date = $this->getCurrentTime($init_country); // $walletUser->save(); $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 $this->validate($request, [ 'iban' => 'required', @@ -1328,6 +1497,8 @@ class iLinkTransactionController extends Controller $transaction->commission_banque = 0; $transaction->commission_hyp = 0; + $transaction->commission_sup = 0; + $transaction->commission_ag = 0; $transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->id_wallet_ag = $walletAgent->id; @@ -1356,7 +1527,7 @@ class iLinkTransactionController extends Controller /** * @OA\Schema( * schema="user_payement_of_operator", - * title = "User - Payer un operateur", + * title = "User - Payer une facture chez un operateur", * @OA\Property(property="type", * type="integer", * 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 $this->validate($request, [ 'id_operator' => 'required|integer|min:0|not_in:0', @@ -1429,7 +1678,6 @@ class iLinkTransactionController extends Controller $transaction->taxe = $taxe = 0; // $walletUser->balance -= $transaction->montant; //Emettre une trame SSL pour recharger l'api de l'operateur du montant de la transaction - $transaction->commission_banque = 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 // $this->validate($request, [ @@ -1501,7 +1821,7 @@ class iLinkTransactionController extends Controller return $this->errorResponse(trans('errors.wallet_not_linked_to_bank_account')); //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) return $this->errorResponse(trans('errors.operator_not_associated_with_network') . '. ' . trans('errors.update_banking_information'));