diff --git a/app/Http/Controllers/iLinkTransactionController.php b/app/Http/Controllers/iLinkTransactionController.php index 81dcf99..ca6c3d5 100755 --- a/app/Http/Controllers/iLinkTransactionController.php +++ b/app/Http/Controllers/iLinkTransactionController.php @@ -63,22 +63,26 @@ class iLinkTransactionController extends Controller * } * ), * examples = { - * "user_payement_of_operator" : { - * "summary" : "User - Payer une facture chez un opérateur donné", - * "value" : {"type":19,"id_wallet_user":9,"id_wallet_network":101,"no_facture":"CDE1425533","type_operator":"water","id_operator":6,"montant":100000,"password":"1234"} - * }, - * "user_remove_from_bank_to_wallet" : { - * "summary" : "User - Retrait du compte bancaire rattaché vers le wallet de l'utilisateur", - * "value": {"type":20,"id_wallet_user":1,"montant":100000,"password":"1234"} - * }, - * "user_send_from_wallet_to_bank" : { - * "summary" : "User - Envoi de wallet à banque", - * "value": {"type":4,"id_wallet_user":9,"id_wallet_network":101,"montant":100000,"password":"1234"} - * }, - * "agent_send_from_cash_to_bank" : { - * "summary" : "Agent - Envoi de cash vers banque", - * "value" : {"type":18,"id_wallet_agent":9716,"id_wallet_network":101,"iban":"CM15UBAA412341234123412341233","id_bank":4,"nom_emetteur":"Djery","prenom_emetteur":"Tom","email_emetteur":"ddietchi@ilink-app.com","type_document_emetteur":"passport","id_document_emetteur":"12345","nom_destinataire":"Brice","prenom_destinataire":"zele","montant":100000,"password":"1234"} - * }, + * @OA\Examples( + * example = "user_payement_of_operator", + * summary = "User - Payer une facture chez un opérateur donné", + * value = {"type":19,"id_wallet_user":9,"id_wallet_network":101,"no_facture":"CDE1425533","type_operator":"water","id_operator":6,"montant":100000,"password":"1234"} + * ), + * @OA\Examples( + * example = "user_remove_from_bank_to_wallet", + * summary = "User - Retrait du compte bancaire rattaché vers le wallet de l'utilisateur", + * value = {"type":20,"id_wallet_user":1,"montant":100000,"password":"1234"} + * ), + * @OA\Examples( + * example = "user_send_from_wallet_to_bank", + * summary = "User - Envoi de wallet à banque", + * value = {"type":4,"id_wallet_user":9,"id_wallet_network":101,"montant":100000,"password":"1234"} + * ), + * @OA\Examples( + * example = "agent_send_from_cash_to_bank", + * summary = "Agent - Envoi de cash vers banque", + * value = {"type":18,"id_wallet_agent":9716,"id_wallet_network":101,"iban":"CM15UBAA412341234123412341233","id_bank":4,"nom_emetteur":"Djery","prenom_emetteur":"Tom","email_emetteur":"ddietchi@ilink-app.com","type_document_emetteur":"passport","id_document_emetteur":"12345","nom_destinataire":"Brice","prenom_destinataire":"zele","montant":100000,"password":"1234"} + * ) * } * ) * ), @@ -91,42 +95,46 @@ class iLinkTransactionController extends Controller * ref="#/components/schemas/ApiResponse", * ), * examples = { - * "user_payement_of_operator" : { - * "summary" : "User - Payer une facture chez un opérateur donné", - * "value" : { + * @OA\Examples( + * example = "user_payement_of_operator" , + * summary = "User - Payer une facture chez un opérateur donné", + * value = { * "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 * } - * }, - * "user_remove_from_bank_to_wallet" : { - * "summary" : "User - Retrait du compte bancaire rattaché vers le wallet de l'utilisateur", - * "value" : { + * ), + * @OA\Examples( + * example = "user_remove_from_bank_to_wallet", + * summary = "User - Retrait du compte bancaire rattaché vers le wallet de l'utilisateur", + * value = { * "status" : 200, * "response" : "Retrait de la banque vers le wallet\nInformations de la transaction :\n - Numéro : 2XWQD7ZD9E7R\n - Montant de la transaction : 100 000 FCFA\n - Frais : 0 FCFA\n - Montant net d\\'envoi: 100 000 FCFA\n - Compte émetteur : BZdsWkdfl\n - Banque : UBA Cameroon\n - IBAN : \n\nCe message a été envoyé dans le mail de l'émetteur", * "error":null * } - * }, - * "user_send_from_wallet_to_bank" : { - * "summary" : "User - Envoi de wallet à banque", - * "value" : { + * ), + * @OA\Examples( + * example = "user_send_from_wallet_to_bank", + * summary = "User - Envoi de wallet à banque", + * value = { * "status" : 200, * "response" : "Envoi d'argent de votre compte vers la banque\nInformations de la transaction :\n - Numéro : NA69C5RTBY7B\n - Montant de la transaction : 100 000 FCFA\n - Frais : 0 FCFA\n - Montant net d'envoi: 100 000 FCFA\n - Compte émetteur : s6LD9PmCJC\n - Banque : UBA Cameroon\n - IBAN : \n\nCe message a été envoyé dans le mail de l'émetteur", * "error":null * } - * }, - * "agent_send_from_cash_to_bank" : { - * "summary" : "Agent - Envoi de cash vers banque", - * "value" : { + * ), + * @OA\Examples( + * example = "agent_send_from_cash_to_bank" , + * summary = "Agent - Envoi de cash vers banque", + * value = { * "status" : 200, * "response" : "Envoi d'argent en cash vers la banque\nInformations de la transaction :\n - Numéro : E58K8ZFPB5AN\n - Montant de la transaction : 100 000 FCFA\n - Frais : 0 FCFA\n - Montant net d'envoi: 100 000 FCFA\n - Compte de l'agent : 38LEDBostp\n - Noms de l'emetteur : Tom Djery\n - Noms du destinataire : zele Brice\n - IBAN du destinataire : CM15UBAA412341234123412341233\n - Banque : UBA Cameroon\n\nCe message a été envoyé dans le mail de l'émetteur", * "error":null * } - * }, + * ), * } * ) * ) @@ -563,7 +571,7 @@ class iLinkTransactionController extends Controller // $transaction->save(); Log::info('-------------------------- User - Envoi de wallet à banque ------------------------------------'); - Log::info($transaction->toArray()); + Log::info(json_encode($transaction)); Log::info('------------------------------------------------------------------------------------------------'); $message = trans('messages.successful_user_send_to_bank', @@ -1346,7 +1354,7 @@ class iLinkTransactionController extends Controller // $transaction->save(); Log::info('-------------------------- Agent - Envoi de cash vers banque ------------------------------------'); - Log::info($transaction->toArray()); + Log::info(json_encode($transaction)); Log::info('------------------------------------------------------------------------------------------------'); $message = trans('messages.successful_agent_send_from_cash_to_bank', @@ -1449,7 +1457,7 @@ class iLinkTransactionController extends Controller // $transaction->save(); Log::info('-------------------------- User - Payer une facture chez un operateur ------------------------------------'); - Log::info($transaction->toArray()); + Log::info(json_encode($transaction)); Log::info('------------------------------------------------------------------------------------------------'); $message = trans('messages.successful_user_payment_of_operator', @@ -1544,7 +1552,7 @@ class iLinkTransactionController extends Controller // $transaction->save(); Log::info('-------------------------- User - Retrait de la banque vers le wallet ------------------------------------'); - Log::info($transaction->toArray()); + Log::info(json_encode($transaction)); Log::info('------------------------------------------------------------------------------------------------'); $message = trans('messages.successful_user_remove_from_bank_to_wallet', @@ -1856,6 +1864,7 @@ class iLinkTransactionController extends Controller private function calculateFees(array $paliers, $montant) { $size = sizeof($paliers); + $fees = 0; if ($size > 0) { $min = $paliers[0]->min; $max = $paliers[$size - 1]->max; @@ -1868,15 +1877,22 @@ class iLinkTransactionController extends Controller } if ($palier) { - return (($palier->min + $palier->max) / 2 * $palier->taux / 100); + $fees = (($palier->min + $palier->max) / 2 * $palier->taux / 100); } else { - if ($montant < $min) - return $min * $paliers[0]->taux / 100; - else if ($montant > $max) - return $max * $paliers[$size - 1]->taux / 100; + if ($montant < $min) { + $palier = $paliers[0]; + $fees = $min * $palier->taux / 100; + } else if ($montant > $max) { + $palier = $paliers[$size - 1]; + $fees = $max * $palier->taux / 100; + } + } + + if (!empty($palier->plafond) && ($fees > $palier->plafond)) { + $fees = $palier->plafond; } } - return 0; + return $fees; } diff --git a/app/Models/PaliersConfigWallet.php b/app/Models/PaliersConfigWallet.php index 388bf30..56fce50 100644 --- a/app/Models/PaliersConfigWallet.php +++ b/app/Models/PaliersConfigWallet.php @@ -10,14 +10,15 @@ use Illuminate\Database\Eloquent\Model; /** * Class PaliersConfigWallet - * + * * @property int $id * @property string $type * @property float $min * @property float $max * @property float $taux + * @property float $plafond * @property int $idConfig - * + * * @property ConfigWallet $config_wallet * * @package App\Models @@ -28,19 +29,21 @@ class PaliersConfigWallet extends Model public $timestamps = false; protected $casts = [ - 'min' => 'float', - 'max' => 'float', - 'taux' => 'float', - 'idConfig' => 'int' - ]; + 'min' => 'float', + 'max' => 'float', + 'taux' => 'float', + 'plafond' => 'float', + 'idConfig' => 'int' + ]; protected $fillable = [ - 'type', - 'min', - 'max', - 'taux', - 'idConfig' - ]; + 'type', + 'min', + 'max', + 'taux', + 'plafond', + 'idConfig' + ]; public function config_wallet() { diff --git a/composer.json b/composer.json index 7db0bbd..e2e07fc 100755 --- a/composer.json +++ b/composer.json @@ -15,7 +15,8 @@ "laravel/lumen-framework": "^8.0", "maatwebsite/excel": "^3.1", "simplesoftwareio/simple-qrcode": "^4.2", - "twilio/sdk": "^6.28" + "twilio/sdk": "^6.28", + "ext-json": "*" }, "require-dev": { "fzaninotto/faker": "^1.9.1", diff --git a/database/migrations/2022_04_14_143451_add_plafond_to_paliers_config_wallet.php b/database/migrations/2022_04_14_143451_add_plafond_to_paliers_config_wallet.php new file mode 100644 index 0000000..fd8a07d --- /dev/null +++ b/database/migrations/2022_04_14_143451_add_plafond_to_paliers_config_wallet.php @@ -0,0 +1,32 @@ +decimal('plafond', 10, 2)->nullable()->after('taux'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('paliersConfigWallet', function (Blueprint $table) { + $table->dropColumn('plafond'); + }); + } +}