From ee958746eb4f26f79920e49352b22bf1e03c863c Mon Sep 17 00:00:00 2001 From: Djery-Tom Date: Sat, 28 Nov 2020 09:19:44 +0100 Subject: [PATCH] + EmitTransaction route for Transmitting Networks --- app/Http/Controllers/Controller.php | 15 - .../TransmittingNetworksController.php | 442 +++++++++++++++++ app/Models/ConfigWallet.php | 181 +++++++ app/Models/Country.php | 80 +++ app/Models/Network.php | 64 +++ app/Models/NetworksAgent.php | 62 +++ app/Models/TransmittedIlinkTransaction.php | 71 +++ app/Models/TransmittingNetwork.php | 53 ++ app/Models/User.php | 123 ++++- app/Models/Wallet.php | 60 +++ app/Models/WalletAgent.php | 67 +++ app/Models/WalletIlinkTransaction.php | 262 ++++++++++ app/Models/WalletTransaction.php | 118 +++++ app/Models/WalletsUser.php | 55 +++ bootstrap/app.php | 1 + composer.json | 2 + composer.lock | 456 +++++++++++++++++- resources/lang/en/errors.php | 80 +++ resources/lang/en/messages.php | 310 ++++++++++++ resources/lang/fr/errors.php | 80 ++- resources/lang/fr/messages.php | 311 ++++++++++++ routes/web.php | 8 +- 22 files changed, 2861 insertions(+), 40 deletions(-) create mode 100755 app/Http/Controllers/TransmittingNetworksController.php create mode 100755 app/Models/ConfigWallet.php create mode 100755 app/Models/Country.php create mode 100755 app/Models/Network.php create mode 100755 app/Models/NetworksAgent.php create mode 100644 app/Models/TransmittedIlinkTransaction.php create mode 100644 app/Models/TransmittingNetwork.php mode change 100644 => 100755 app/Models/User.php create mode 100755 app/Models/Wallet.php create mode 100644 app/Models/WalletAgent.php create mode 100644 app/Models/WalletIlinkTransaction.php create mode 100755 app/Models/WalletTransaction.php create mode 100644 app/Models/WalletsUser.php diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index c00368d..68210f5 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -17,21 +17,6 @@ use Laravel\Lumen\Routing\Controller as BaseController; * */ -/** - * @OA\Get( - * path="/", - * summary="Afficher la version de lumen", - * tags={"Lumen"}, - * security={{"api_key":{}}}, - * @OA\Response( - * response=200, - * description="OK", - * @OA\JsonContent( - * example = "Lumen xx.xx.xx" - * ) - * ) - * ) - */ class Controller extends BaseController { // diff --git a/app/Http/Controllers/TransmittingNetworksController.php b/app/Http/Controllers/TransmittingNetworksController.php new file mode 100755 index 0000000..df6c3a2 --- /dev/null +++ b/app/Http/Controllers/TransmittingNetworksController.php @@ -0,0 +1,442 @@ +get("limit", 10)); + return ["data" => $users]; + } + + /** + * @OA\Post( + * path="/emitTransaction", + * summary="Emettre une transaction vers le backend de iLink APP", + * tags={"Transaction vers le backend de iLink APP"}, + * security={{"api_key":{}}}, + * @OA\RequestBody( + * description="Corps de la requete", + * required=true, + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema( + * oneOf={ + * @OA\Schema(ref="#/components/schemas/destination_channel_is_wallet"), + * @OA\Schema(ref="#/components/schemas/destination_channel_is_cash"), + * } + * ), + * examples = { + * "destination_channel_is_wallet" : { + * "summary" : "Transaction ayant pour canal de destination le wallet d'un utilisateur simple", + * "value" : {"type":1,"id_transaction_network_emetteur":"T123456789","network_emetteur":61,"network_destinataire":101,"nom_emetteur":"Djery","prenom_emetteur":"Tom","email_emetteur":"ddietchi@ilink-app.com","type_document_emetteur":"passport","id_document_emetteur":"12345","id_emetteur":"KKKKKKK","id_destinataire":"s6LD9PmCJC","montant_commission":5000,"montant":50000,"frais":100,"taxe":50,"part_reseau_emetteur":2000,"part_reseau_payeur":1500} + * }, + * "destination_channel_is_cash" : { + * "summary" : "Transaction ayant pour canal de destination l'argent en cash", + * "value": {"type":17,"id_transaction_network_emetteur":"T123456789","network_emetteur":61,"network_destinataire":101,"nom_emetteur":"Djery","prenom_emetteur":"Tom","email_emetteur":"ddietchi@ilink-app.com","type_document_emetteur":"passport","id_document_emetteur":"12345","id_emetteur":"sBhk1kl25","nom_destinataire":"Manga NSONGO","prenom_destinataire":"Jacques","type_document_destinataire":"cni","id_document_destinataire":"12345697","email_destinataire":"Jmangansongo.cfao@yahoo.fr","montant_commission":5000,"montant":50000,"code_retrait":"A123B123C123D123","frais":100,"taxe":50,"part_reseau_emetteur":2000,"part_reseau_payeur":1500} + * }, + * } + * ) + * ), + * @OA\Response( + * response=200, + * description="OK", + * @OA\JsonContent( + * ref="#/components/schemas/ApiResponse", + * examples = { + * "destination_channel_is_wallet" : { + * "summary" : "Transaction ayant pour canal de destination le wallet d'un utilisateur simple", + * "value" : { + * "status" : 200, + * "response" : "Demande traitée avec succès", + * "error":null + * } + * }, + * "destination_channel_is_cash" : { + * "summary" : "Transaction ayant pour canal de destination l'argent en cash", + * "value" : { + * "status" : 200, + * "response" : "Demande traitée avec succès", + * "error":null + * } + * }, + * } + * ) + * ) + * ) + */ + + // Perment aux reseaux emetteurs d'emettre des transactions vers le walletService interne + public function emitPayment(Request $request) + { + $this->validate($request, [ + 'type' => 'required|integer|in:1,17', // Les types de transactions possibles à recevoir [1,3,17] + 'montant' => 'required|numeric|min:0|not_in:0', + 'frais' => 'required|numeric|min:0|not_in:0', + 'taxe' => 'required|numeric|min:0|not_in:0', + 'part_reseau_emetteur' => 'required|numeric|min:0|not_in:0', + 'part_reseau_payeur' => 'required|numeric|min:0|not_in:0', + 'montant_commission' => 'required|numeric|min:0|not_in:0', + 'network_emetteur' => 'required|numeric|min:0|not_in:0', + 'network_destinataire' => 'required|numeric|min:0|not_in:0', + 'id_transaction_network_emetteur' => 'required', + ]); + + $configRecipient = ConfigWallet::where('id_network', $request->network_destinataire)->first(); + $configTransmitter = ConfigWallet::where('id_network', $request->network_emetteur)->first(); + + if (!$configRecipient) + return $this->errorResponse(trans('errors.recipient_network_not_configured')); + + if ($configRecipient->type != 'ilink') + return $this->errorResponse(trans('errors.recipient_network_not_authorized')); + + if (!$configTransmitter) + return $this->errorResponse(trans('errors.transmitter_network_not_configured')); + + if ($configTransmitter->type != 'autre') + return $this->errorResponse(trans('errors.transmitter_network_not_authorized')); + + $transmittingNetwork = TransmittingNetwork::where('id_network', $request->network_emetteur)->where('id_configWallet', $configRecipient->id)->first(); + if (!$transmittingNetwork) + return $this->errorResponse(trans('errors.transmitter_network_not_recognized')); + + + $transaction = new WalletIlinkTransaction(); + $transaction->fill($request->all()); + $transaction->id_transaction = $this->getTransactionID(); + $transaction->from_network_emetteur = true; + + //Hyperviseur destinataire + $hyperviseurDestinataire = WalletAgent::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail(); + $walletHyper = Wallet::findOrFail($hyperviseurDestinataire->wallet_id); + $transaction->id_wallet_hyp = $walletHyper->id; + $finalNetwork = Network::findOrFail($request->network_destinataire); + $transaction->final_country = $finalNetwork->country->id; + $initNetwork = Network::findOrFail($request->network_emetteur); + $transaction->init_country = $initNetwork->country->id; + $transaction->montant_net = $transaction->montant_net_final_country = $request->montant; + $transaction->part_reseau_payeur_final_country = $transaction->part_reseau_payeur; + $transaction->status_reseau_payeur = 'EN_COURS'; + + switch ($request->type) { + /** + * @OA\Schema( + * schema="destination_channel_is_wallet", + * title="Transaction ayant pour canal de destination le wallet d'un utilisateur simple", + * @OA\Property(property="type", + * type="integer", + * enum = {1}, + * default = 1, + * description="Type de la transaction : Cette valeur est statique" + * ), + * @OA\Property(property="id_transaction_network_emetteur", + * type="string", + * example="T123456789", + * description="ID de la transaction chez le réseau émetteur" + * ), + * @OA\Property(property="network_emetteur", + * type="integer", + * example=61, + * description="ID du reseau émetteur enregistré dans la base de données de iLink World" + * ), + * @OA\Property(property="network_destinataire", + * type="integer", + * example=101, + * description="ID du reseau destinataire enregistré dans la base de données" + * ), + * @OA\Property(property="id_emetteur", + * type="string", + * description="ID de l'émetteur dans la base de données du réseau émetteur de iLink World" + * ), + * @OA\Property(property="nom_emetteur", + * type="string", + * description="Noms de l'émetteur" + * ), + * @OA\Property(property="prenom_emetteur", + * type="string", + * description="Prenoms de l'émetteur" + * ), + * @OA\Property(property="email_emetteur", + * type="string", + * description="Email de l'émetteur" + * ), + * @OA\Property(property="type_document_emetteur", + * type="string", + * description="Type de document que l'émetteur a fourni pour son identification" + * ), + * @OA\Property(property="id_document_emetteur", + * type="string", + * description="ID de l'émetteur sur le document qu'il a fourni pour son identification" + * ), + * @OA\Property(property="id_destinataire", + * type="string", + * description="ID du destinataire enregistré dans la base de données de iLink World" + * ), + * @OA\Property(property="montant", + * type="number", + * example = 10000, + * description="Montant de la transaction" + * ), + * @OA\Property(property="montant_commission", + * type="number", + * example = 500, + * description="Montant de la commission sur la transaction" + * ), + * @OA\Property(property="frais", + * type="number", + * example = 200, + * description="Montant des frais sur la transaction" + * ), + * @OA\Property(property="taxe", + * type="number", + * example = 100, + * description="Montant de la taxe sur la transaction" + * ), + * @OA\Property(property="part_reseau_emetteur", + * type="number", + * example = 700, + * description="Montant de la part du réseau émétteur sur la transaction" + * ), + * @OA\Property(property="part_reseau_payeur", + * type="number", + * example = 500, + * description="Montant de la part du réseau payeur sur la transaction" + * ), + * ) + */ + case 1: + $this->validate($request, [ + 'id_destinataire' => 'required', + 'nom_emetteur' => 'required', + 'prenom_emetteur' => 'required', + 'email_emetteur' => 'required', + 'type_document_emetteur' => 'required', + 'id_document_emetteur' => 'required', + 'id_emetteur' => 'required', + ]); + + $destinataire = User::where('user_code', $request->id_destinataire)->first(); + if ($destinataire) { // Si c'est un wallet ilink + if ($destinataire->network->country->id == $finalNetwork->country->id) { + $walletDestinataire = WalletsUser::where('idUser', $destinataire->id)->firstOrFail(); + $walletDestinataire->balance += $request->montant; + $transaction->id_wallet_user = $walletDestinataire->id; + $walletDestinataire->save(); + } else { + return $this->errorResponse(trans('errors.wallet_country_not_match', ['country' => $finalNetwork->country->name])); + } + } else { + return $this->errorResponse(trans('errors.wallet_not_defined')); + } + + + $walletHyper->balance_com += $request->montant_commission; + $walletHyper->save(); + + $transmittingNetwork->balance_compensation += $request->montant; + $transmittingNetwork->balance_com += $request->montant_commission; + $transmittingNetwork->save(); + + $transaction->commission_hyp = $transaction->commission_hyp_final_country = $request->montant_commission; + $transaction->status_reseau_payeur = 'TRAITEE'; + $transaction->date = $this->getCurrentTimeByCountryCode($initNetwork->country->code_country); + $transaction->save(); + + $message = trans('messages.wallet_incoming_payment_message', + ['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoneyWithNetwork($request->montant, $request->id), + 'sender_name' => $request->nom_emetteur . ' ' . $request->prenom_emetteur, 'init_country' => $initNetwork->country->name, 'sender_code' => $request->id_emetteur, + 'final_country' => $finalNetwork->country->name, 'network' => $initNetwork->name, 'receiver_code' => $request->id_destinataire]); + + $this->sendMail($destinataire->email, trans('messages.wallet_incoming_payment'), $message); + return $this->successResponse(trans('messages.success_treated_demand')); + + /** + * @OA\Schema( + * schema="destination_channel_is_cash", + * title="Transaction ayant pour canal de destination l'argent en cash", + * @OA\Property(property="type", + * type="integer", + * enum = {17}, + * default = 17, + * description="Type de la transaction : Cette valeur est statique" + * ), + * @OA\Property(property="id_transaction_network_emetteur", + * type="string", + * example="T123456789", + * description="ID de la transaction chez le réseau émetteur" + * ), + * @OA\Property(property="network_emetteur", + * type="integer", + * example=61, + * description="ID du reseau émetteur enregistré dans la base de données de iLink World" + * ), + * @OA\Property(property="network_destinataire", + * type="integer", + * example=101, + * description="ID du reseau destinataire enregistré dans la base de données" + * ), + * @OA\Property(property="id_emetteur", + * type="string", + * description="ID de l'émetteur dans la base de données du réseau émetteur de iLink World" + * ), + * @OA\Property(property="nom_emetteur", + * type="string", + * description="Noms de l'émetteur" + * ), + * @OA\Property(property="prenom_emetteur", + * type="string", + * description="Prenoms de l'émetteur" + * ), + * @OA\Property(property="email_emetteur", + * type="string", + * description="Email de l'émetteur" + * ), + * @OA\Property(property="type_document_emetteur", + * type="string", + * description="Type de document que l'émetteur a fourni pour son identification" + * ), + * @OA\Property(property="id_document_emetteur", + * type="string", + * description="ID de l'émetteur 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="email_destinataire", + * type="string", + * description="Email du destinataire" + * ), + * @OA\Property(property="type_document_destinataire", + * type="string", + * description="Type de document que le destinataire fournira pour son identification" + * ), + * @OA\Property(property="id_document_destinataire", + * type="string", + * description="ID du destinataire sur le document qu'il fournira pour son identification" + * ), + * @OA\Property(property="montant", + * type="number", + * example = 10000, + * description="Montant de la transaction" + * ), + * @OA\Property(property="montant_commission", + * type="number", + * example = 500, + * description="Montant de la commission sur la transaction" + * ), + * @OA\Property(property="code_retrait", + * type="string", + * example ="A123B123C123D123", + * description="Code retrait (de 16 caracteres) qui sera utilisé lors du retrait de l'argent en cash" + * ), + * @OA\Property(property="frais", + * type="number", + * example = 200, + * description="Montant des frais sur la transaction" + * ), + * @OA\Property(property="taxe", + * type="number", + * example = 100, + * description="Montant de la taxe sur la transaction" + * ), + * @OA\Property(property="part_reseau_emetteur", + * type="number", + * example = 700, + * description="Montant de la part du réseau émétteur sur la transaction" + * ), + * @OA\Property(property="part_reseau_payeur", + * type="number", + * example = 500, + * description="Montant de la part du réseau payeur sur la transaction" + * ), + * ) + */ + case 17: + $this->validate($request, [ + 'id_emetteur' => 'required', + 'nom_emetteur' => 'required', + 'prenom_emetteur' => 'required', + 'type_document_emetteur' => 'required', + 'id_document_emetteur' => 'required', + 'email_emetteur' => 'required', + 'nom_destinataire' => 'required', + 'prenom_destinataire' => 'required', + 'type_document_destinataire' => 'required', + 'id_document_destinataire' => 'required', + 'email_destinataire' => 'required', + 'code_retrait' => 'required|size:16' + ]); + + $hash = $this->hashSSHA($request->code_retrait); + $transaction->encrypted_code_retrait = $hash['encrypted']; + $transaction->code_retrait_salt = $hash['salt']; + $transaction->status_retrait = false; + + $transaction->commission_ag = floatval($request->montant_commission * $configRecipient->taux_com_ag_envoi_cash / 100); + $transaction->commission_sup = floatval($request->montant_commission * $configRecipient->taux_com_sup_envoi_cash / 100); + $transaction->commission_hyp = $transaction->commission_hyp_final_country = floatval($request->montant_commission * $configRecipient->taux_com_hyp_envoi_cash / 100); + $transaction->date = $this->getCurrentTimeByCountryCode($initNetwork->country->code_country); + $transaction->save(); + + $message = trans('messages.cash_incoming_payment_message', + ['amount' => $this->toMoneyWithNetwork($request->montant, $request->id), 'id_transaction' => $transaction->id_transaction, + 'sender_name' => $request->nom_emetteur . ' ' . $request->prenom_emetteur, 'receiver_name' => $request->nom_destinataire . ' ' . $request->prenom_destinataire, + 'code' => wordwrap($request->code_retrait, 4, ' ', true), 'init_country' => $initNetwork->country->name, + 'final_country' => $finalNetwork->country->name, 'network' => $initNetwork->name]); + + $this->sendMail($request->email_destinataire, trans('messages.cash_incoming_payment'), $message); + return $this->successResponse(trans('messages.success_treated_demand')); + break; + case 18: + return $this->successResponse(trans('messages.success_treated_demand')); + break; + } + } + + private function getTransactionID() + { + do { + $code = $this->generateTransactionCode(); + $result = collect(DB::select('SELECT * FROM wallet_ilink_transaction WHERE id_transaction = :code', ['code' => $code])); + $codeCorrect = sizeof($result) < 0; + } while ($codeCorrect); + return $code; + } + + +} diff --git a/app/Models/ConfigWallet.php b/app/Models/ConfigWallet.php new file mode 100755 index 0000000..bcb5e8a --- /dev/null +++ b/app/Models/ConfigWallet.php @@ -0,0 +1,181 @@ + 'float', + 'taux_com_client_depot' => 'float', + 'taux_com_ag_retrait' => 'float', + 'taux_com_ag_depot' => 'float', + 'taux_com_sup_depot' => 'float', + 'taux_com_sup_retrait' => 'float', + 'part_banque_retrait' => 'float', + 'part_banque_depot' => 'float', + 'frais_min_banque_depot' => 'float', + 'id_network' => 'int', + 'taux_com_user_wallet_carte' => 'float', + 'taux_com_user_carte_wallet' => 'float', + 'taux_com_user_carte_cash' => 'float', + 'taux_com_wallet_ag_envoi_cash_carte' => 'float', + 'taux_com_wallet_ag_carte_cash' => 'float', + 'taux_com_wallet_ag_depot_carte' => 'float', + 'taux_com_ag_envoi_cash' => 'float', + 'taux_com_sup_envoi_cash' => 'float', + 'taux_com_hyp_envoi_cash' => 'float', + 'taux_com_ag_retrait_cash' => 'float', + 'taux_com_sup_retrait_cash' => 'float', + 'taux_com_hyp_retrait_cash' => 'float', + 'taux_com_ag_depot_cash_carte' => 'float', + 'taux_com_sup_depot_cash_carte' => 'float', + 'taux_com_hyp_depot_cash_carte' => 'float', + 'taux_com_banque_depot_cash_carte' => 'float', + 'taux_com_ag_retrait_carte_cash' => 'float', + 'taux_com_sup_retrait_carte_cash' => 'float', + 'taux_com_hyp_retrait_carte_cash' => 'float', + 'taux_com_banque_retrait_carte_cash' => 'float', + 'taux_com_hyp_retrait_carte_cash_ilink' => 'float', + 'taux_com_banque_retrait_carte_cash_ilink' => 'float', + 'taux_com_hyp_envoi_wallet_carte_ilink' => 'float', + 'taux_com_banque_envoi_wallet_carte_ilink' => 'float', + 'has_nano_credit' => 'int', + 'limite_credit_min' => 'float', + 'limite_credit_max' => 'float', + 'taux_com_ag_nano_credit'=> 'float', + 'taux_com_sup_nano_credit'=> 'float', + 'taux_com_hyp_nano_credit'=> 'float', + ]; + + protected $fillable = [ + 'taux_com_client_retrait', + 'taux_com_client_depot', + 'taux_com_ag_retrait', + 'taux_com_ag_depot', + 'taux_com_sup_depot', + 'taux_com_sup_retrait', + 'part_banque_retrait', + 'part_banque_depot', + 'frais_min_banque_depot', + 'id_network', + 'taux_com_user_wallet_carte', + 'taux_com_user_carte_wallet', + 'taux_com_user_carte_cash', + 'taux_com_wallet_ag_envoi_cash_carte', + 'taux_com_wallet_ag_carte_cash', + 'taux_com_wallet_ag_depot_carte', + 'taux_com_ag_envoi_cash', + 'taux_com_sup_envoi_cash', + 'taux_com_hyp_envoi_cash', + 'taux_com_ag_retrait_cash', + 'taux_com_sup_retrait_cash', + 'taux_com_hyp_retrait_cash', + 'taux_com_ag_depot_cash_carte', + 'taux_com_sup_depot_cash_carte', + 'taux_com_hyp_depot_cash_carte', + 'taux_com_banque_depot_cash_carte', + 'taux_com_ag_retrait_carte_cash', + 'taux_com_sup_retrait_carte_cash', + 'taux_com_hyp_retrait_carte_cash', + 'taux_com_banque_retrait_carte_cash', + 'taux_com_hyp_retrait_carte_cash_ilink', + 'taux_com_banque_retrait_carte_cash_ilink', + 'taux_com_hyp_envoi_wallet_carte_ilink', + 'taux_com_banque_envoi_wallet_carte_ilink', + 'type', + 'has_nano_credit', + 'limite_credit_min', + 'limite_credit_max', + 'taux_com_ag_nano_credit', + 'taux_com_sup_nano_credit', + 'taux_com_hyp_nano_credit' + ]; + + public function network() + { + return $this->belongsTo(Network::class, 'id_network'); + } + + public function paliers_config_wallets() + { + return $this->hasMany(PaliersConfigWallet::class, 'idConfig'); + } + + public function paliers_config_nano_credits() + { + return $this->hasMany(PaliersConfigNanoCredit::class, 'idConfig'); + } + + public function paying_networks() + { + return $this->hasMany(PayingNetwork::class, 'id_configWallet'); + } + + public function taxes() + { + return $this->hasMany(Tax::class, 'idConfig'); + } +} diff --git a/app/Models/Country.php b/app/Models/Country.php new file mode 100755 index 0000000..9ea8a80 --- /dev/null +++ b/app/Models/Country.php @@ -0,0 +1,80 @@ + 'float', + 'latitude' => 'float', + 'idCurrency' => 'int' + ]; + + protected $fillable = [ + 'code_dial', + 'name', + 'code_country', + 'longitude', + 'latitude', + 'idCurrency' + ]; + + public function currency() + { + return $this->belongsTo(Currency::class, 'idCurrency'); + } + + public function admins() + { + return $this->hasMany(Admin::class, 'country'); + } + + public function config_games() + { + return $this->hasMany(ConfigGame::class, 'id_pays'); + } + + public function identifications() + { + return $this->hasMany(Identification::class); + } + + public function wallet_ilink_transactions() + { + return $this->hasMany(WalletIlinkTransaction::class, 'final_country'); + } + + public function regulation() + { + return $this->belongsTo(Regulation::class, 'id_country'); + } +} diff --git a/app/Models/Network.php b/app/Models/Network.php new file mode 100755 index 0000000..2a4798c --- /dev/null +++ b/app/Models/Network.php @@ -0,0 +1,64 @@ + 'int', + 'id_networkAgent' => 'int', + 'status' => 'int' + ]; + + protected $fillable = [ + 'country_id', + 'name', + 'id_networkAgent', + 'status' + ]; + + public function config_wallets() + { + return $this->hasMany(ConfigWallet::class, 'id_network'); + } + + public function identifications() + { + return $this->hasMany(Identification::class, 'idNetwork'); + } + + public function wallets_password() + { + return $this->hasOne(WalletsPassword::class); + } + + public function country() + { + return $this->belongsTo(Country::class, 'country_id'); + } +} diff --git a/app/Models/NetworksAgent.php b/app/Models/NetworksAgent.php new file mode 100755 index 0000000..a873a67 --- /dev/null +++ b/app/Models/NetworksAgent.php @@ -0,0 +1,62 @@ + 'int', + 'agent_id' => 'int', + 'solde' => 'float', + 'etat' => 'int', + 'codeGenerer_id' => 'int' + ]; + + protected $fillable = [ + 'network_id', + 'agent_id', + 'solde', + 'etat', + 'codeGenerer_id', + 'phone', + 'transactionNumber', + 'validation_code' + ]; + + public function wallets() + { + return $this->hasMany(Wallet::class, 'id_networkAgent'); + } + + public function network() + { + return $this->belongsTo(Network::class, 'network_id'); + } +} diff --git a/app/Models/TransmittedIlinkTransaction.php b/app/Models/TransmittedIlinkTransaction.php new file mode 100644 index 0000000..8083f19 --- /dev/null +++ b/app/Models/TransmittedIlinkTransaction.php @@ -0,0 +1,71 @@ + 'int', + 'network_emetteur' => 'int', + 'montant' => 'float', + 'montant_commission' => 'float', + 'type' => 'int' + ]; + + protected $fillable = [ + 'id_transaction', + 'id_transaction_network_emetteur', + 'network_destinataire', + 'network_emetteur', + 'montant', + 'montant_commission', + 'id_destinataire', + 'nom_destinataire', + 'prenom_destinataire', + 'type_document_destinataire', + 'id_document_destinataire', + 'email_destinataire', + 'id_emetteur', + 'nom_emetteur', + 'prenom_emetteur', + 'type_document_emetteur', + 'id_document_emetteur', + 'email_emetteur', + 'type' + ]; +} diff --git a/app/Models/TransmittingNetwork.php b/app/Models/TransmittingNetwork.php new file mode 100644 index 0000000..c092b76 --- /dev/null +++ b/app/Models/TransmittingNetwork.php @@ -0,0 +1,53 @@ + 'int', + 'balance_compensation' => 'float', + 'balance_com' => 'float', + 'id_configWallet' => 'int' + ]; + + protected $fillable = [ + 'id_network', + 'balance_compensation', + 'balance_com', + 'id_configWallet' + ]; + + public function network() + { + return $this->belongsTo(Network::class, 'id_network'); + } + + public function config_wallet() + { + return $this->belongsTo(ConfigWallet::class, 'id_configWallet'); + } +} diff --git a/app/Models/User.php b/app/Models/User.php old mode 100644 new mode 100755 index e8c48fc..9b53b10 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -1,33 +1,116 @@ 'float', + 'active' => 'int', + 'network_id' => 'int', + 'group_id' => 'int', + 'balance_credit' => 'float', + 'balance_epargne' => 'float', + 'id_bank_country' => 'int' + ]; + + protected $dates = [ + 'expiration_date', + 'date_modified', + 'date_created', + 'date_adhesion' ]; - /** - * The attributes excluded from the model's JSON form. - * - * @var array - */ protected $hidden = [ - 'password', + 'encrypted_password' ]; + + protected $fillable = [ + 'uid', + 'firstname', + 'lastname', + 'phone', + 'email', + 'user_code', + 'numero_carte', + 'expiration_date', + 'adresse', + 'solde', + 'encrypted_password', + 'salt', + 'validation_code', + 'active', + 'date_modified', + 'date_created', + 'group_id', + 'balance_credit', + 'balance_epargne', + 'date_adhesion', + 'id_bank_country', + 'iban' + ]; + + public function identifications() + { + return $this->hasMany(Identification::class, 'id_user'); + } + + public function wallets_users() + { + return $this->hasMany(WalletsUser::class, 'idUser'); + } + + public function network() + { + return $this->belongsTo(Network::class, 'network_id'); + } + + public function bank() + { + return $this->belongsTo(NetworksOperator::class, 'id_bank_country', 'id_operator_country'); + } } diff --git a/app/Models/Wallet.php b/app/Models/Wallet.php new file mode 100755 index 0000000..c7447a4 --- /dev/null +++ b/app/Models/Wallet.php @@ -0,0 +1,60 @@ + 'float', + 'balance_com' => 'float', + 'id_networkAgent' => 'int' + ]; + + protected $dates = [ + 'created_date' + ]; + + protected $fillable = [ + 'balance_princ', + 'balance_com', + 'id_networkAgent', + 'created_date' + ]; + + public function networks_agent() + { + return $this->belongsTo(NetworksAgent::class, 'id_networkAgent'); + } + + public function wallet_transactions() + { + return $this->hasMany(WalletTransaction::class, 'id_wallet'); + } + + +} diff --git a/app/Models/WalletAgent.php b/app/Models/WalletAgent.php new file mode 100644 index 0000000..c33b6cf --- /dev/null +++ b/app/Models/WalletAgent.php @@ -0,0 +1,67 @@ + 'int', + 'balance_princ' => 'float', + 'balance_com' => 'float', + 'networks_agent_id' => 'int', + 'agent_id' => 'int', + 'network_id' => 'int' + ]; + + protected $dates = [ + 'created_date' + ]; + + protected $fillable = [ + 'wallet_id', + 'balance_princ', + 'balance_com', + 'created_date', + 'networks_agent_id', + 'agent_id', + 'lastname', + 'codeMembre', + 'codeParrain', + 'category', + 'network_id', + 'network', + 'currency_code', + 'transactionNumber' + ]; +} diff --git a/app/Models/WalletIlinkTransaction.php b/app/Models/WalletIlinkTransaction.php new file mode 100644 index 0000000..7c3769e --- /dev/null +++ b/app/Models/WalletIlinkTransaction.php @@ -0,0 +1,262 @@ + 'float', + 'montant_net_final_country' => 'float', + 'montant_net' => 'float', + 'status_retrait' => 'int', + 'network_destinataire' => 'int', + 'network_emetteur' => 'int', + 'frais' => 'float', + 'taxe' => 'float', + 'part_reseau_emetteur' => 'float', + 'part_reseau_payeur' => 'float', + 'part_reseau_payeur_final_country' => 'float', + 'init_country' => 'int', + 'final_country' => 'int', + 'commission_banque' => 'float', + 'commission_ag' => 'float', + 'commission_sup' => 'float', + 'commission_hyp' => 'float', + 'commission_hyp_final_country' => 'float', + 'id_wallet_user' => 'int', + 'id_wallet_ag' => 'int', + 'id_wallet_sup' => 'int', + 'id_wallet_hyp' => 'int', + 'id_wallet_hyp_payeur' => 'int', + 'canceled' => 'int', + 'type' => 'int', + 'from_network_emetteur' => 'bool', + 'montant_commission' => 'float' + ]; + + protected $dates = [ + 'date_retrait', + 'expiration_date', + 'date' + ]; + + protected $fillable = [ + 'id_transaction', + 'montant', + 'montant_net_final_country', + 'montant_net', + 'encrypted_code_retrait', + 'code_retrait_salt', + 'status_retrait', + 'date_retrait', + 'id_destinataire', + 'type_id_destinataire', + 'network_destinataire', + 'type_document_destinataire', + 'id_document_destinataire', + 'nom_destinataire', + 'prenom_destinataire', + 'nom_emetteur', + 'prenom_emetteur', + 'email_emetteur', + 'network_emetteur', + 'type_document_emetteur', + 'id_document_emetteur', + 'frais', + 'taxe', + 'part_reseau_emetteur', + 'part_reseau_payeur', + 'part_reseau_payeur_final_country', + 'status_reseau_payeur', + 'numero_carte', + 'expiration_date', + 'init_country', + 'final_country', + 'commission_banque', + 'commission_ag', + 'commission_sup', + 'commission_hyp', + 'commission_hyp_final_country', + 'id_wallet_user', + 'id_wallet_ag', + 'id_wallet_sup', + 'id_wallet_hyp', + 'id_wallet_hyp_payeur', + 'canceled', + 'type', + 'date', + 'pspReference', + 'from_network_emetteur', + 'id_transaction_network_emetteur', + 'montant_commission' + ]; + + public function country() + { + return $this->belongsTo(Country::class, 'final_country'); + } + + public function wallet() + { + return $this->belongsTo(Wallet::class, 'id_wallet_hyp_payeur'); + } + + public function wallet_user() + { + return $this->belongsTo(WalletsUser::class, 'id_wallet_user'); + } + + public function type_ilink_transaction() + { + return $this->belongsTo(TypeIlinkTransaction::class, 'type'); + } + + public function network() + { + return $this->belongsTo(Network::class, 'network_emetteur'); + } + + // Regles de validation + //Envoi de cash vers wallet iLink + public function cash_wallet_rules() + { + return [ + 'user_code'=>'required', +// 'init_country' =>'required|integer|min:0|not_in:0', +// 'final_country' =>'required|integer|min:0|not_in:0', + ]; + } + + public function card_rules() + { + return [ + 'numero_carte'=>'required', + 'cvv'=>'required|size:3', + 'expiration_date'=>'required|date_format:m/y|after_or_equal:today', + ]; + } + + public function user_card_rules() + { + return [ + 'cvv'=>'required|size:3', + ]; + } + + public function cash_cash_rules() + { + return [ + 'final_country' =>'required|integer|min:0|not_in:0', + 'network_destinataire' => 'required|integer|min:0|not_in:0', + 'nom_emetteur'=>'required', + 'prenom_emetteur'=>'required', + 'type_document_emetteur'=>'required', + 'id_document_emetteur'=>'required', + 'email_emetteur' => 'required', + 'nom_destinataire'=>'required', + 'prenom_destinataire'=>'required', + 'type_document_destinataire'=>'required', +// 'id_document_destinataire'=>'required' + ]; + } + + public function remove_cash_rules(){ + return [ + 'id_transaction' =>'required', + 'code_retrait' =>'required|size:16', + ]; + } + /// User Operation rules + public function send_wallet_wallet_rules(){ + return [ + 'final_country' =>'required|integer|min:0|not_in:0', + 'type_document_destinataire'=>'required', +// 'id_document_destinataire'=>'required', + 'id_destinataire' =>'required_without:phone_destinataire', + 'network_destinataire'=>'required|integer|min:0|not_in:0', + ]; + } + + public function send_wallet_cash_rules(){ + return [ + 'final_country' =>'required|integer|min:0|not_in:0', + 'nom_destinataire'=>'required', + 'prenom_destinataire'=>'required', + 'type_document_destinataire'=>'required', +// 'id_document_destinataire'=>'required', + 'id_destinataire' =>'required_without:phone_destinataire', + 'network_destinataire'=>'required|integer|min:0|not_in:0', + ]; + } +} diff --git a/app/Models/WalletTransaction.php b/app/Models/WalletTransaction.php new file mode 100755 index 0000000..7393499 --- /dev/null +++ b/app/Models/WalletTransaction.php @@ -0,0 +1,118 @@ + 'float', + 'commission_banque' => 'float', + 'commission_ag' => 'float', + 'commission_sup' => 'float', + 'commission_hyp' => 'float', + 'id_wallet' => 'int', + 'id_wallet_sup' => 'int', + 'id_wallet_hyp' => 'int' + ]; + + protected $dates = [ + 'date', + 'expiration_date' + ]; + + protected $fillable = [ + 'montant', + 'numCarte', + 'expiration_date', + 'commission_banque', + 'commission_ag', + 'commission_sup', + 'commission_hyp', + 'type', + 'date', + 'statut', + 'result', + 'id_wallet', + 'id_wallet_sup', + 'id_wallet_hyp', + 'canceled' + ]; + + public function wallet() + { + return $this->belongsTo(Wallet::class, 'id_wallet'); + } + + public function wallet_sup() + { + return $this->belongsTo(Wallet::class, 'id_wallet_sup'); + } + + public function wallet_hyp() + { + return $this->belongsTo(Wallet::class, 'id_wallet_hyp'); + } + +// public function getTaxeAttribute($value) +// { +// return ucfirst($value); +// } +// +// public function setTaxeAttribute($value) +// { +// $this->attributes['taxe'] = (int) $value; +// } + + public function rules() + { + //Verifier si ce sont les infos de la face avant ou arriere de la carte qui sont envoyés + // front -> Face avant : Numero de carte , cvv , etc... + // back -> Face arriere : Numero de serie + return [ + 'facade'=>'required|in:front,back', + 'montant'=> 'required|numeric|min:0|not_in:0', + 'numCarte'=>'required', + 'cvv'=>'required_if:facade,front|size:3', + 'expiration_date'=>'required_if:facade,front|date_format:m/y|after_or_equal:today', + 'type' =>'required|in:credit,debit', + 'id_wallet' => 'required|integer|min:0|not_in:0' + ]; + } +} diff --git a/app/Models/WalletsUser.php b/app/Models/WalletsUser.php new file mode 100644 index 0000000..7cce251 --- /dev/null +++ b/app/Models/WalletsUser.php @@ -0,0 +1,55 @@ + 'float', + 'idUser' => 'int' + ]; + + protected $dates = [ + 'createdAt' + ]; + + protected $fillable = [ + 'balance', + 'createdAt', + 'idUser' + ]; + + public function user() + { + return $this->belongsTo(User::class, 'idUser'); + } + + public function wallet_ilink_transactions() + { + return $this->hasMany(WalletIlinkTransaction::class, 'id_wallet_user'); + } +} diff --git a/bootstrap/app.php b/bootstrap/app.php index 5ac6f5f..25307d6 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -103,6 +103,7 @@ $app->register(\SwaggerLume\ServiceProvider::class); // $app->register(App\Providers\AppServiceProvider::class); // $app->register(App\Providers\AuthServiceProvider::class); // $app->register(App\Providers\EventServiceProvider::class); +$app->register(Illuminate\Mail\MailServiceProvider::class); /* |-------------------------------------------------------------------------- diff --git a/composer.json b/composer.json index 2aec81f..7e43f87 100644 --- a/composer.json +++ b/composer.json @@ -6,8 +6,10 @@ "type": "project", "require": { "php": "^7.3|^8.0", + "brick/money": "^0.5.0", "darkaonline/swagger-lume": "^8.0", "guzzlehttp/guzzle": "^7.0", + "illuminate/mail": "^8.16", "laravel/lumen-framework": "^8.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 3186748..9175e5b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "2bf434fab805ca0f44c1fb23c59a2a0d", + "content-hash": "9599e5f2b66f8e3833e37809500a54a7", "packages": [ { "name": "brick/math", @@ -58,6 +58,58 @@ ], "time": "2020-08-18T23:57:15+00:00" }, + { + "name": "brick/money", + "version": "0.5.0", + "source": { + "type": "git", + "url": "https://github.com/brick/money.git", + "reference": "f922b357dc56f78c398c6cd055fbaa75eaffdbeb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/money/zipball/f922b357dc56f78c398c6cd055fbaa75eaffdbeb", + "reference": "f922b357dc56f78c398c6cd055fbaa75eaffdbeb", + "shasum": "" + }, + "require": { + "brick/math": "~0.7.3 || ~0.8.0 || ~0.9.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "brick/varexporter": "~0.2.1", + "ext-dom": "*", + "ext-pdo": "*", + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15" + }, + "suggest": { + "ext-intl": "Required to format Money objects" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Money\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Money and currency library", + "keywords": [ + "brick", + "currency", + "money" + ], + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/brick/money", + "type": "tidelift" + } + ], + "time": "2020-08-19T22:52:38+00:00" + }, { "name": "darkaonline/swagger-lume", "version": "8.0", @@ -1612,6 +1664,63 @@ "homepage": "https://laravel.com", "time": "2020-10-27T15:20:30+00:00" }, + { + "name": "illuminate/mail", + "version": "v8.16.1", + "source": { + "type": "git", + "url": "https://github.com/illuminate/mail.git", + "reference": "19f31086c33c355036cb6f0cabff32701583a16f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/mail/zipball/19f31086c33c355036cb6f0cabff32701583a16f", + "reference": "19f31086c33c355036cb6f0cabff32701583a16f", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/collections": "^8.0", + "illuminate/container": "^8.0", + "illuminate/contracts": "^8.0", + "illuminate/macroable": "^8.0", + "illuminate/support": "^8.0", + "league/commonmark": "^1.3", + "php": "^7.3|^8.0", + "psr/log": "^1.0", + "swiftmailer/swiftmailer": "^6.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2" + }, + "suggest": { + "aws/aws-sdk-php": "Required to use the SES mail driver (^3.155).", + "guzzlehttp/guzzle": "Required to use the Mailgun mail driver (^6.5.5|^7.0.1).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Mail\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Mail package.", + "homepage": "https://laravel.com", + "time": "2020-11-21T14:40:38+00:00" + }, { "name": "illuminate/pagination", "version": "v8.16.1", @@ -2177,6 +2286,101 @@ ], "time": "2020-11-17T16:42:41+00:00" }, + { + "name": "league/commonmark", + "version": "1.5.7", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/11df9b36fd4f1d2b727a73bf14931d81373b9a54", + "reference": "11df9b36fd4f1d2b727a73bf14931d81373b9a54", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "scrutinizer/ocular": "1.7.*" + }, + "require-dev": { + "cebe/markdown": "~1.0", + "commonmark/commonmark.js": "0.29.2", + "erusev/parsedown": "~1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "~1.4", + "mikehaertl/php-shellcommand": "^1.4", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", + "scrutinizer/ocular": "^1.5", + "symfony/finder": "^4.2" + }, + "bin": [ + "bin/commonmark" + ], + "type": "library", + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "funding": [ + { + "url": "https://enjoy.gitstore.app/repositories/thephpleague/commonmark", + "type": "custom" + }, + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://www.patreon.com/colinodell", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2020-10-31T13:49:32+00:00" + }, { "name": "monolog/monolog", "version": "2.1.1", @@ -3071,6 +3275,68 @@ ], "time": "2020-11-26T21:19:40+00:00" }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.2.3", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "shasum": "" + }, + "require": { + "egulias/email-validator": "~2.0", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses", + "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.2-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Corbyn" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", + "keywords": [ + "email", + "mail", + "mailer" + ], + "time": "2019-11-12T09:31:26+00:00" + }, { "name": "symfony/console", "version": "v5.1.8", @@ -3159,6 +3425,68 @@ ], "time": "2020-10-24T12:01:57+00:00" }, + { + "name": "symfony/css-selector", + "version": "v5.1.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0", + "reference": "6cbebda22ffc0d4bb8fea0c1311c2ca54c4c8fa0", + "shasum": "" + }, + "require": { + "php": ">=7.2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-24T12:01:57+00:00" + }, { "name": "symfony/deprecation-contracts", "version": "v2.2.0", @@ -3908,6 +4236,83 @@ ], "time": "2020-10-23T14:02:19+00:00" }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "c536646fdb4f29104dd26effc2fdcb9a5b085024" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c536646fdb4f29104dd26effc2fdcb9a5b085024", + "reference": "c536646fdb4f29104dd26effc2fdcb9a5b085024", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.20-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-23T14:02:19+00:00" + }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.20.0", @@ -4991,6 +5396,55 @@ ], "time": "2020-10-24T12:03:25+00:00" }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.3", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b43b05cf43c1b6d849478965062b6ef73e223bb5", + "reference": "b43b05cf43c1b6d849478965062b6ef73e223bb5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "time": "2020-07-13T06:12:54+00:00" + }, { "name": "vlucas/phpdotenv", "version": "v5.2.0", diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php index 3d602ab..acd942d 100755 --- a/resources/lang/en/errors.php +++ b/resources/lang/en/errors.php @@ -4,4 +4,84 @@ return [ 'unexpected_error' => 'Unexpected error. Try later', 'validation_error' => 'The field :field has :validation', 'service_unavailable' => 'Service unavailable', + 'invalid_cvv' => 'Invalid CVV', + 'compression_failed' => 'Image compression failed!', + 'identification_carried_out' => 'Identification already carried out', + 'visa_api_failed' => 'Request to API visa failed', + 'failed_transaction' => 'Failed transaction', + 'user_phone_not_exist' => 'This customer number does not exist', + 'wallet_not_defined' => 'This recipient wallet code does not exist', + 'insufficient_balance' => 'The balance is insufficient to complete this transaction', + 'no_ilink_network' => 'Sorry, there is no iLink World network in your country', + 'wallet_country_not_match' => 'This recipient wallet code is not registered in the country :country', + 'no_bank_card_attached' => 'No bank card is attached to your account', + 'transaction_not_exist' => 'This transaction does not exist', + 'withdrawal_already_made' => 'Withdrawal already made', + 'invalid_withdrawal_code' => 'Invalid withdrawal code', + 'incorrect_withdrawal_amount' => 'Incorrect withdrawal amount', + 'operation_cannot_performed_in_country' => 'This operation cannot be performed in this country', + 'withdrawal_network_unauthorized' => 'This withdrawal cannot be made in this network. +Paying network : :network :country', + 'user_identification_required' => 'User identification is required to continue the operation', + 'validation_user_identification_required' => 'Validation of user identification is required to continue the operation', + 'incorrect_net_amount' => 'Net amount is less than zero', + 'agent_unauthorized' => 'This agent cannot make this withdrawal', + 'sponsor_identification_required' => 'Sponsor :id identification is required to continue the operation', + 'validation_sponsor_identification_required' => 'Validation of sponsor :id identification is required to continue the operation', + 'not_group_sponsor' => 'You are not a sponsor of this group', + 'group_already_active' => 'This group is already active', + 'sponsor_belongs_to_group' => 'Sponsor :id already belongs to a group', + 'treated_group_demand' => 'Group validation request already processed', + 'group_credit_limit_must_be_between' => 'The credit limit must be between :min_limit and :max_limit', + 'sponsor_not_registered_in_same_country' => 'Sponsor :id is not registered in your country', + 'sponsor_not_found' => 'This sponsor :id code does not exist', + 'nano_credit_not_available' => 'Nano credit is not available in your country', + 'user_belongs_to_group' => 'You already belong to a group', + 'group_not_active' => 'This group is not active. Talk to your sponsor', + 'identification_required' => 'Your identification is required for this operation', + 'validation_identification_required' => 'Your identification must be validated in one of our points of sale', + 'belongs_to_group' => 'You already belong to a group', + 'not_registered_in_same_country' => 'You are not registered in the same country', + 'not_group_creator' => 'You are not the creator of this group', + 'cannot_be_sponsor' => 'You cannot be a sponsor of your group', + 'sponsors_must_be_unique' => "Each of the 3 sponsors must be unique", + 'not_belongs_to_any_group' => 'You do not belong to any group', + 'your_group_not_active' => "Your group is not active. Talk to your sponsor", + 'your_group_not_valid' => "Your group is not valid. Talk to your sponsor", + 'nano_credit_amount_must_be_between_the_group_limit' => "The amount of credit requested must be between :min_limit and :max_limit", + "nano_credit_not_found" => "This nano credit request does not exist", + "nano_credit_not_individual" => "This nano credit request is not individual", + "last_nano_credit_not_refunded" => "Your last nano credit request was not refunded", + "nano_credit_already_refunded" => "Repayment of credit already made", + "sponsor_code_not_match" => "This sponsor code does not match to this group", + "user_already_member_of_group" => "This user is already a member of a group", + "not_authorized_to_process_request" => "You are not authorized to process this request", + "savings_already_broken" => "Savings already broken", + "group_not_allow_to_borrow" => "The group is not allowed to borrow", + "borrowing_capacity_exceeded" => "The borrowing capacity is exceeded", + "savings_not_found" => "This savings does not exist", + "regulations_limits_amount_transaction" => "You can make a transaction of :amount .", + "national_daily_regulations_limits_reached" => "You have reached your national daily limit.", + "national_weekly_regulations_limits_reached" => "You have reached your national weekly limit.", + "national_monthly_regulations_limits_reached" => "You have reached your national monthly limit.", + "international_daily_regulations_limits_reached" => "You have reached your international daily limit.", + "international_weekly_regulations_limits_reached" => "You have reached your international weekly limit.", + "international_monthly_regulations_limits_reached" => "You have reached your international monthly limit.", + "forbidden" => 'Forbidden', + "request_already_processed" => "This request has already been processed", + "recipient_network_not_configured" => "This recipient network is not configured in our system", + "recipient_network_not_authorized" => "This recipient network is not authorized to receive transactions in our system", + "bank_not_associated_with_network" => "This bank is not associated with your network", + "transmitter_network_not_configured" => "This transmitter network is not configured in our system", + "transmitter_network_not_authorized" => "This sender network is not authorized to receive transactions in our system", + "transmitter_network_not_recognized" => 'This network is not recognized as being a sender network of the recipient network', + "invalid_iban" => "The IBAN code is invalid", + "country_not_match_iban" => "The IBAN code does not correspond to the country of this bank", + "bank_not_match_iban" => "The IBAN code does not correspond to this bank", + "not_banking_operator" => "This operator is not a banking operator", + "operator_not_associated_with_network" => "This operator is not associated with your network", + "not_matching_operator" => "This operator is not a :type_operator", + "wallet_not_linked_to_bank_account" => "Your wallet is not linked to a bank account", + "update_banking_information" => "Update your banking information", + "wallet_already_linked_to_bank_account" => "Your wallet is already linked to your bank account", ]; diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php index bee73cf..8c8b197 100755 --- a/resources/lang/en/messages.php +++ b/resources/lang/en/messages.php @@ -1,4 +1,314 @@ 'Commission balance is empty', + 'treated_demand' => 'Credit request already processed', + 'canceled_demand' => 'Canceled credit request', + 'princ_balance_inf_to_demand_amount' => 'Your main balance is less than the amount of the request, do you want to change the amount ?', + 'new_wallet_added' => 'New wallet added', + 'success_treated_demand' => 'Request successfully processed', + 'canceled_credit_request' => 'Canceled credit request', + 'canceled_transaction' => 'Canceled transaction', + 'successful_transaction' => 'Successful transaction', + 'incorrect_user_password' => 'Incorrect user password', + 'successful_identification'=>'User :name has been successfully identified.', + 'user_identificated' => 'User already identificated', + 'user_not_identificated' => 'User is not identificated', + 'validated_identification'=>'Validated identification', + 'identification_already_validated'=>'Identification already validated', + 'successful_card_attachment' => 'Attachment of your card made', + 'successful_identification_message' => 'Hi :name, +Your identification has been taken into account. Contact an iLink World agent with your ID to validate your identity. + +Regards, +iLinkWorld team.', + 'validated_identification_message' => 'Your identification is confirmed! + +You can now use all iLink World services. +Welcome to the iLink World family !!! + +Regards, +ILinkWorld team.', + 'successful_agent_deposit_wallet_ilink' => 'Depositing money to an iLink World account +Transaction information : + - Transaction ID : :id_transaction + - Amount : :amount + - Fees and Taxes : :fees + - Country of departure : :init_country + - Net amount : :net_init + - Country of destination : :final_country + - Net amount : :net_final + - Recipient account : :user_code', + 'successful_agent_deposit_other_wallet' => 'Depositing money to a different network account +Transaction information : + - Transaction ID : :id_transaction + - Amount : :amount + - Fees and Taxes : :fees + - Country of departure : :init_country + - Issuer names : :sender_name + - Net amount : :net_init + - Country of destination : :final_country + - Paying network : :network :final_country + - Recipient names : :receiver_name + - Net amount : :net_final + - Recipient account : :receiver_code', + 'successful_agent_send_cash'=>'Money sent +Transaction information: + - Transaction ID : :id_transaction + - Amount : :amount + - Fees and Taxes : :fees + - Country of departure : :init_country + - Issuer names : :sender_name + - Net amount : :net_init + - Country of destination : :final_country + - Paying network : :network :final_country + - Recipient names : :receiver_name + - Net amount : :net_final + - Withdrawal code : :code', + 'successful_user_send_to_wallet' => 'Sending money account to account. +Transaction information : + - ID : :id_transaction + - Amount of the transaction : :amount + - Fees + Taxes : :fees + - Country of departure : :init_country + - Issuer account : :sender_code + - Net amount : :net_init + - Country of destination : :final_country + - Paying network : :network :final_country + - Recipient account : :receiver_code + - Net amount : :net_final', + 'sent_by_mail' => ' + +This message was sent to the sender\'s email', + 'successful_user_send_to_cart' => 'Sending money to a visa card made. +Transaction information : + - ID : :id_transaction + - Amount of the transaction : :amount + - Fees : :fees + - Net shipping amount : :net + - Issuer account :sender_code + - Card number: :cart_number', + 'successful_user_send_to_cash' => 'Sending money from account to cash +Transaction information : + - Number: :id_transaction + - Amount of the transaction: :amount + - Fees and Taxes: :fees + - Country of departure: :init_country + - Issuer account: :sender_code + - Issuer names : :sender_name + - Net amount: :net_init + - Country of destination: :final_country + - Paying network : :network :final_country + - Recipient names: :receiver_name + - Net amount: :net_final + - Withdrawal code: :code ', + 'successful_user_remove_from_wallet_to_cash'=>'Personal money withdrawal +Transaction information: + - Number : :id_transaction + - Amount of the transaction : :amount + - Fees and Taxes: :fees + - Country of departure: :init_country + - Net withdrawal amount : :net + - Country of destination: :init_country + - Issuer account : :sender_code + - Withdrawal code : :code', + 'successful_user_remove_from_cart_to_wallet'=>'Withdrawing money from your card to your account +Transaction information: + - Number : :id_transaction + - Amount of the transaction : :amount + - Fees : :fees + - Total withdrawal amount : :total + - Recipient account : :sender_code + - Card number : :cart_number', + 'successful_user_remove_from_cart_to_cash' => 'Withdrawing money from your card to cash +Transaction information : + - Number: :id_transaction + - Amount of the transaction: :amount + - Fees: :fees + - Country of departure: :init_country + - Total withdrawal amount: :total + - Country of destination: :init_country + - User code : :sender_code + - Card number : :cart_number + - Withdrawal code : :code', + 'successful_agent_remove_cash' => 'Withdrawal of money from a geolocated agent +Transaction information : + - Number : :id_transaction + - Country of departure : :init_country + - Issuer names : :sender_name + - Country of destination : :final_country + - Recipient names: :receiver_name + - Withdrawal amount : :amount + - Withdrawal transaction number : :id_transaction_retrait + - Withdrawal code : :code', + + 'successful_user_group_created' => 'The group was created successfully. Awaiting validation from the 3 sponsors to activate it', + 'successful_group_validation' => 'Group validation successful. Only :count validation remaining|Group validation successful. Only :count validations remaining', + 'successful_identification_modification' => 'Successful identification modification', + 'successful_identification_modification_message' => 'Hi :name, + +Your new identification has been taken into account. Contact an iLink World agent with your ID to validate your identity. + +Regards, +iLinkWorld team.', + 'successful_user_group_modificated' => 'The group has been modified successfully. Awaiting validation from new sponsors to activate it', + 'successful_group_membership_request' => "Your membership request has been sent to the sponsor", + 'successful_user_group_deleted' => 'The group will be deleted after validation of the 3 sponsors', + 'successful_group_deleting' => 'Group deletion accepted. More than :count delete validation remaining | Group delete accepted. More than :count remaining delete validations', + 'successful_refused_group_validation' => 'Group validation refused', + 'successful_refused_group_deleting' => 'Group deletion refused', + 'successful_user_group_nano_credit_demand' => "Nanocredit application +Request Information: + - Request number: :id_demand + - Type of deposit: Group + - Credit amount: :amount + - Interests : :fees + - Taxes : :tax + - Net amount received: :net + - Duration (in months) : :duration + - Redemption date: :date + +NB: The reimbursement process is automatic on the due date if the reimbursement is not initiated", + 'successful_nano_credit_demand' => 'Successful nano credit application', + 'successful_user_individual_nano_credit_demand' => "Nanocredit application +Request Information: + - Request number: :id_demand + - Type of deposit: Individual + - Credit amount: :amount + - Interests : :fees + - Taxes : :tax + - Net amount to be collected: :net + - Duration (in months) : :duration + +Go to a geolocated agent who agrees to back you up by validating your credit request", + 'successful_guarantee_user_individual_nano_credit_demand' => "Guaranteed nanocredit request +Request Information: + - Request number: :id_demand + - Type of deposit: Individual + - Credit amount: :amount + - Interests : :fees + - Taxes : :tax + - Net amount received: :net + - Duration (in months) : :duration + - Redemption date: :date + - Agent names: :agent_name + - Agent code: :code_agent", + 'successful_guarantee_agent_individual_nano_credit_demand' => "Guaranteed nanocredit request +Request Information: + - Request number: :id_demand + - Type of deposit: Individual + - Credit amount: :amount + - Interests : :fees + - Taxes : :tax + - Net amount received: :net + - Duration (in months) : :duration + - Redemption date: :date + - Client names: :user_name + - Client code: :code_user + +NB: The reimbursement process is automatic on the due date if the reimbursement is not initiated", + 'successful_guarantee_nano_credit_demand' => 'Guaranteed nanocredit request', + 'successful_nano_credit_refunded' => 'Nano credit repayment made', + 'successful_nano_credit_partially_refunded' => 'Partially completed nano credit repayment', + 'failed_nano_credit_refunded' => 'Repayment of failed nano credit', + 'successful_nano_credit_demand_refunded' => "Nano credit refunded +Request Information: + - Request number: :id_demand + - Amount of credit repaid : :amount + - Interests : :fees + - Taxes : :tax + - Capital : :net", + 'successful_accepted_group_membership_request' => "Membership request accepted", + 'successful_canceled_group_membership_request' => "Membership request refused", + 'successful_nano_credit_sent_to_hypervisor' => "Your request has been sent to your network hypervisor. You will receive the credit only after validation", + 'successful_accepted_nano_credit_request' => "Nano credit request accepted", + 'successful_canceled_nano_credit_request' => "Nano credit request refused", + "successful_saving" => "Successful savings", + "successful_blocked_saving_details" => " +Savings Information : + - Savings number : :id_saving + - Type : :type + - Amount at cassation : :amount + - Interests : :fees + - Taxes : :tax + - Net amount saved : :net + - Duration (in months) : :duration + - End date : :date", + "successful_simple_saving_details" => " +Savings Information : + - Savings number : :id_saving + - Type : :type + - Amount at cassation : :amount + - Interests : :fees + - Taxes : :tax + - Net amount saved : :net", + "successful_broken_saving" => "Broken savings", + "reload_your_account" => "The repayment of nano credit failed for insufficient balance, please recharge your account", + "successful_password_update" => "Your password has been updated successfully.", + "your_new_password" => "Your new password is: password.", + "password_update" => "Update your password", + "wallet_incoming_payment" => "Payment entering your wallet", + "wallet_incoming_payment_message" => " +You have received a payment entering your wallet +Transaction Information: + - Number: :id_transaction + - Amount: :amount + - Country of departure: :init_country + - Transmitter network: :network: final_country + - Issuer account: :sender_code + - Name of the sender: :sender_name + - Country of destination: :final_country + - Recipient account: :receiver_code", + "cash_incoming_payment" => "Incoming payment in cash.", + "cash_incoming_payment_message" => "You have received a cash payment. +Transaction Information: + - Transaction ID: :id_transaction + - Amount: :amount + - Country of departure: :init_country + - Transmitter network: :network: final_country + - Name of the sender: :sender_name + - Country of destination: :final_country + - Recipient's names: :receiver_name + - Collection code: :code", + 'successful_user_send_to_bank' => 'Sending money from your account to the bank +Transaction Information: + - Number: :id_transaction + - Amount of the transaction: :amount + - Fees: :fees + - Net shipping amount:: net + - Issuer account: :sender_code + - Bank : :bank :country + - IBAN: :iban', + 'successful_user_payment_of_operator' => "Payment of an invoice to an operator +Transaction Information: + - Number : :id_transaction + - Amount of the transaction : :amount + - Fees : :fees + - Net amount paid : :net + - Issuer account : :sender_code + - Operator : :operator + - Type of operator : :type_operator + - Invoice number : :invoice_number", + 'successful_bank_account_attachment' => 'Connection of your bank account completed', + 'successful_user_remove_from_bank_to_wallet' => 'Withdrawal from the bank to the wallet +Transaction Information: + - Number: :id_transaction + - Amount of the transaction: :amount + - Fees: :fees + - Net shipping amount:: net + - Issuer account: :sender_code + - Bank : :bank :country + - IBAN: :iban', + 'successful_agent_send_from_cash_to_bank' => "Send money in cash to the bank +Transaction Information: + - Number : :id_transaction + - Amount of the transaction : :amount + - Fees : :fees + - Net shipping amount : :net + - Agent account : :sender_code + - Name of the sender : :sender_name + - Recipient's names : :receiver_name + - IBAN of the recipient : :iban + - Bank : :bank :country", + 'successful_bank_account_attachment_taken' => 'Your request to link your bank account has been taken into account, you will receive a confirmation email as soon as the bank has validated your IBAN code', ]; diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php index 4d3ba72..8583f91 100755 --- a/resources/lang/fr/errors.php +++ b/resources/lang/fr/errors.php @@ -5,5 +5,83 @@ return [ 'validation_error' => 'Le champ :field a :validation', 'service_unavailable' => 'Service non disponible', 'invalid_cvv' => 'CVV invalide', - + 'compression_failed' => 'Échec de la compression d\'image', + 'identification_carried_out' => 'Identification déjà éffectuée', + 'visa_api_failed' => 'La requete vers l\'api visa a échouée', + 'failed_transaction' => 'Transaction échouée', + 'user_phone_not_exist' => 'Ce numéro client n\'existe pas', + 'wallet_not_defined' => 'Ce code wallet destinataire n\'existe pas', + 'insufficient_balance' => 'Le solde est insuffisant pour effectuer cette transaction', + 'no_ilink_network' => 'Désolé , il n\'existe pas de reseau iLink World dans votre pays', + 'wallet_country_not_match' => 'Ce code wallet destinataire n\'est pas enregistré dans le pays :country', + 'no_bank_card_attached' => 'Aucune carte bancaire n\'est rattachée à votre compte', + 'transaction_not_exist' => 'Cette transaction n\'existe pas', + 'withdrawal_already_made' => 'Retrait déjà éffectué', + 'invalid_withdrawal_code' => 'Code de retrait invalide', + 'incorrect_withdrawal_amount' => 'Montant de retrait incorrect', + 'operation_cannot_performed_in_country' => 'Cette operation ne peut pas etre effectuée dans ce pays', + 'withdrawal_network_unauthorized' => 'Ce retrait ne peut etre effectué dans ce reseau. +Réseau payeur : :network :country', + 'user_identification_required' => 'L\'identification de l\'utilisateur est requise pour continuer l\'operation', + 'validation_user_identification_required' => 'La validation de l\'identification de l\'utilisateur est requise pour continuer l\'operation', + 'incorrect_net_amount' => 'Le montant net est inférieur à zéro', + 'agent_unauthorized' => 'Cet agent ne peut pas effectuer ce retrait', + 'sponsor_identification_required' => 'L\'identification du sponsor :id est requise pour continuer l\'operation', + 'validation_sponsor_identification_required' => 'La validation de l\'identification du sponsor :id est requise pour continuer l\'operation', + 'not_group_sponsor' => 'Vous n\'êtes pas un sponsor de ce groupe', + 'group_already_active' => 'Ce groupe est déjà actif', + 'sponsor_belongs_to_group' => 'Sponsor :id appartient déjà à un groupe', + 'treated_group_demand' => 'Demande de validation de groupe déjà traitée', + 'group_credit_limit_must_be_between' => 'La limite de crédit doit être comprise entre :min_limit et :max_limit', + 'sponsor_not_registered_in_same_country' => 'Sponsor :id n\'est pas enregistré dans votre pays', + 'sponsor_not_found' => 'Ce code sponsor :id n\'existe pas', + 'nano_credit_not_available' => 'Le nano credit n\'est pas disponible dans votre pays', + 'user_belongs_to_group' => 'Vous appartenez déjà à un groupe', + 'group_not_active' => 'Ce groupe est n\'est pas actif. Adressez-vous à votre sponsor', + 'identification_required' => 'Votre identification est requise pour cette opération', + 'validation_identification_required' => 'Votre identification doit être validée dans un de nos points de vente', + 'belongs_to_group' => 'Vous appartenez déjà à un groupe', + 'not_registered_in_same_country' => 'Vous n\'êtes pas enregistré dans le meme pays', + 'not_group_creator' => 'Vous n\'êtes pas le createur de ce groupe', + 'cannot_be_sponsor' => 'Vous ne pouvez pas être sponsor de votre groupe', + 'sponsors_must_be_unique' => "Chacun des 3 sponsors doit etre unique", + 'not_belongs_to_any_group' => "Vous n'appartennez à aucun groupe", + 'your_group_not_active' => "Votre groupe n'est pas actif. Adressez-vous à votre sponsor", + 'your_group_not_valid' => "Votre groupe n'est pas valide. Adressez-vous à votre sponsor", + 'nano_credit_amount_must_be_between_the_group_limit' => "Le montant du crédit demandé doit être compris entre :min_limit et :max_limit", + "nano_credit_not_found" => "Cette demande de nano crédit n'existe pas", + "nano_credit_not_individual" => "Cette demande de nano crédit n'est pas individuelle", + "last_nano_credit_not_refunded" => "Votre derniere demande de nano crédit n'a pas été remboursée", + "nano_credit_already_refunded" => "Remboursement de crédit deja effectué", + "sponsor_code_not_match" => "Ce code sponsor ne correspond pas à ce groupe", + "user_already_member_of_group" => "Cet utilisateur est déjà membre d'un groupe", + "not_authorized_to_process_request" => "Vous n'êtes pas autorisé à traiter cette requête", + "savings_already_broken" => "Épargne déjà cassée", + "group_not_allow_to_borrow" => "Le groupe n'a pas le droit d'emprunter", + "borrowing_capacity_exceeded" => "La capacité d'emprunt est dépassée", + "savings_not_found" => "Cette épargne n'existe pas", + "regulations_limits_amount_transaction" => "Vous pouvez effectuer une transaction de :amount .", + "national_daily_regulations_limits_reached" => "Vous avez atteint votre limite journalière nationale.", + "national_weekly_regulations_limits_reached" => "Vous avez atteint votre limite hebdomadaire nationale.", + "national_monthly_regulations_limits_reached" => "Vous avez atteint votre limite mensuelle nationale.", + "international_daily_regulations_limits_reached" => "Vous avez atteint votre limite journalière internationale.", + "international_weekly_regulations_limits_reached" => "Vous avez atteint votre limite hebdomadaire internationale.", + "international_monthly_regulations_limits_reached" => "Vous avez atteint votre limite mensuelle internationale.", + "forbidden" => "Interdit d'access", + "request_already_processed" => "Cette requete a déja ete traitée", + "recipient_network_not_configured" => "Ce reseau destinataire n'est pas configuré dans notre systeme", + "recipient_network_not_authorized" => "Ce reseau destinataire n'est pas autorise à recevoir des transactions dans notre systeme", + "bank_not_associated_with_network" => "Cette banque n'est pas associée à votre réseau", + "transmitter_network_not_configured" => "Ce reseau emetteur n'est pas configuré dans notre systeme", + "transmitter_network_not_authorized" => "Ce reseau emetteur n'est pas autorisé à recevoir des transactions dans notre systeme", + "transmitter_network_not_recognized" => "Ce réseau n'est pas reconnu comme etant un réseau emetteur du reseau destinataire", + "invalid_iban" => "Le code IBAN est invalide", + "country_not_match_iban" => "Le code IBAN ne correspond pas au pays cette banque", + "bank_not_match_iban" => "Le code IBAN ne correspond à cette banque", + "not_banking_operator" => "Cet opérateur n'est pas un opérateur bancaire", + "operator_not_associated_with_network" => "Cette operateur n'est pas associé à votre réseau", + "not_matching_operator" => "Cet opérateur n'est pas un :type_operator", + "wallet_not_linked_to_bank_account" => "Votre wallet n'est pas rattaché à un compte bancaire", + "update_banking_information" => "Mettez à jour vos informations bancaires", + "wallet_already_linked_to_bank_account" => "Votre wallet est déjà rattaché à votre compte bancaire", ]; diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php index bee73cf..798a146 100755 --- a/resources/lang/fr/messages.php +++ b/resources/lang/fr/messages.php @@ -1,4 +1,315 @@ 'Solde de commission est vide', + 'treated_demand' => 'Demande de crédit deja traitée', + 'canceled_demand' => 'Demande de credit annulée', + 'princ_balance_inf_to_demand_amount' => 'Votre solde principal est inférieur au montant de la demande, voulez vous modifier le montant ?', + 'new_wallet_added' => 'Nouveau wallet ajouté', + 'success_treated_demand' => 'Demande traitée avec succès', + 'canceled_credit_request' => 'Demande de crédit annulée', + 'canceled_transaction' => 'Transaction annulée', + 'successful_transaction' => 'Transaction réussie', + 'incorrect_user_password' => 'Mot de passe utilisateur incorrect', + 'successful_identification' => 'L\'utilisateur :name a été identifié avec succes', + 'validated_identification' => 'Identification validée', + 'user_identificated' => 'Utilisateur déjà identifié', + 'user_not_identificated' => 'Utilisateur non identifié', + 'identification_already_validated' => 'Identification deja validée', + 'successful_card_attachment' => 'Rattachement de votre carte effectuée', + 'successful_identification_message' => 'Salut :name, +Votre identification a été prise en compte . Rapprochez vous auprès d\'un agent iLink World muni de votre pièce d\'identité pour faire valider de votre identité. + +Cordialement, +Equipe iLinkWorld.', + 'validated_identification_message' => 'Votre identification est confirmée ! + +Vous pouvez desormais utiliser tous les services de iLink World. +Bienvenue dans la famille iLink World !!! + +Cordialement, +Equipe iLinkWorld.', + 'successful_agent_deposit_wallet_ilink' => 'Dépot d\'argent vers un compte iLink World +Informations de la transaction : + - Transaction ID : :id_transaction + - Montant : :amount + - Frais et Taxes : :fees + - Pays de départ : :init_country + - Montant net : :net_init + - Pays de destination : :final_country + - Montant net : :net_final + - Compte destinataire : :user_code', + 'successful_agent_deposit_other_wallet' => 'Dépot d\'argent vers un compte autre réseau +Informations de la transaction : + - Transaction ID : :id_transaction + - Montant : :amount + - Frais et Taxes : :fees + - Pays de départ : :init_country + - Noms de l\'emetteur : :sender_name + - Montant net : :net_init + - Pays de destination : :final_country + - Réseau payeur : :network :final_country + - Noms du destinataire : :receiver_name + - Montant net : :net_final + - Compte destinataire : :receiver_code', + 'successful_agent_send_cash' => 'Envoi d\'argent effectué +Informations de la transaction : + - Transaction ID : :id_transaction + - Montant : :amount + - Frais et Taxes : :fees + - Pays de départ : :init_country + - Noms de l\'emetteur : :sender_name + - Montant net : :net_init + - Pays de destination : :final_country + - Réseau payeur : :network :final_country + - Noms du destinataire : :receiver_name + - Montant net : :net_final + - Code de retrait : :code', + 'successful_user_send_to_wallet' => 'Envoi d\'argent compte à compte +Informations de la transaction : + - Numéro : :id_transaction + - Montant : :amount + - Frais et Taxes : :fees + - Pays de départ : :init_country + - Compte émetteur : :sender_code + - Montant net : :net_init + - Pays de destination : :final_country + - Réseau payeur : :network :final_country + - Compte destinataire : :receiver_code + - Montant net : :net_final', + 'sent_by_mail' => ' + +Ce message a été envoyé dans le mail de l\'émetteur', + 'successful_user_send_to_cart' => 'Envoi d\'argent de votre compte vers votre carte visa +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Montant net d\'envoi: :net + - Compte émetteur : :sender_code + - N︒ carte destinataire : :cart_number', + 'successful_user_send_to_cash' => 'Envoi d\'argent compte à cash +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais et Taxes : :fees + - Pays de départ : :init_country + - Compte émetteur : :sender_code + - Noms de l\'emetteur : :sender_name + - Montant net : :net_init + - Pays de destination : :final_country + - Réseau payeur : :network :final_country + - Noms du destinataire : :receiver_name + - Montant net : :net_final + - Code de retrait : :code', + 'successful_user_remove_from_wallet_to_cash'=>'Retrait d\'argent personnel +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais et Taxes: :fees + - Pays de départ : :init_country + - Montant net de retrait: :net + - Pays de destination : :init_country + - Compte émetteur : :sender_code + - Code de retrait : :code', + 'successful_user_remove_from_cart_to_wallet'=>'Retrait d\'argent de votre carte vers votre compte +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Montant total de retrait: :total + - Compte destinataire : :sender_code + - Numero de la carte : :cart_number', + 'successful_user_remove_from_cart_to_cash' => 'Retrait d\'argent de votre carte vers cash +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Pays de départ : :init_country + - Montant total de retrait: :total + - Pays de destination : :final_country + - Code utilisateur : :sender_code + - Numero de la carte : :cart_number + - Code de retrait : :code', + 'successful_agent_remove_cash' => 'Retrait d\'argent chez un agent géolocalisé +Informations de la transaction : + - Numéro : :id_transaction + - Pays de départ : :init_country + - Noms de l\'emetteur : :sender_name + - Pays de destination : :final_country + - Noms du destinataire : :receiver_name + - Montant de retrait : :amount + - Numero de transaction de retrait : :id_transaction_retrait + - Code de retrait : :code', + + 'successful_user_group_created' => 'Le groupe a été crée avec succes. En attente de validation des 3 sponsors pour l\'activer', + 'successful_group_validation' => 'Validation du groupe réussie. Plus que :count validation restante|Validation du groupe réussie. Plus que :count validations restantes', + 'successful_identification_modification' => 'Modification de l\'identification réussie', + 'successful_identification_modification_message' => 'Salut :name, + +Votre nouvelle identification a bien été bien prise en compte. Rapprochez vous auprès d\'un agent iLink World muni de votre pièce d\'identité pour faire valider de votre identité. + +Cordialement, +Equipe iLinkWorld.', + 'successful_user_group_modificated' => 'Le groupe a été modifié avec succes. En attente de validation des nouveaux sponsors pour l\'activer', + 'successful_group_membership_request' => "Votre demande d'adhésion a été envoyé au sponsor", + 'successful_user_group_deleted' => 'Le groupe sera supprimé après validation des 3 sponsors', + 'successful_group_deleting' => 'Suppression du groupe acceptée. Plus que :count validation de suppression restante|Suppression du groupe acceptée. Plus que :count validations de suppression restantes', + 'successful_refused_group_validation' => 'Validation du groupe refusée', + 'successful_refused_group_deleting' => 'Suppression du groupe refusée', + 'successful_user_group_nano_credit_demand' => "Demande de nano crédit +Informations de la demande : + - Numéro de la demande : :id_demand + - Type de caution : Groupe + - Montant du crédit : :amount + - Intérêts : :fees + - Taxes : :tax + - Montant net percu: :net + - Duréé (en mois) : :duration + - Date de remboursement : :date + +NB: Le processus de remboursement est automatique à la date d'échéance si le remboursement n'est pas initié", + 'successful_nano_credit_demand' => 'Demande de nano crédit réussie', + 'successful_user_individual_nano_credit_demand' => "Demande de nano crédit +Informations de la demande : + - Numéro de la demande : :id_demand + - Type de caution : Individuel + - Montant du crédit : :amount + - Intérêts : :fees + - Taxes : :tax + - Montant net à percevoir : :net + - Duréé (en mois) : :duration + +Rendez vous chez un agent geolocalisé qui accepte de vous cautionner en validant votre demande de crédit", + 'successful_guarantee_user_individual_nano_credit_demand' => "Demande de nano crédit cautionnée +Informations de la demande : + - Numéro de la demande : :id_demand + - Type de caution : Individuel + - Montant du crédit : :amount + - Intérêts : :fees + - Taxes : :tax + - Montant net percu : :net + - Duréé (en mois) : :duration + - Date de remboursement : :date + - Noms de l'agent : :agent_name + - Code de l'agent : :code_agent", + 'successful_guarantee_agent_individual_nano_credit_demand' => "Demande de nano crédit cautionnée +Informations de la demande : + - Numéro de la demande : :id_demand + - Type de caution : Individuel + - Montant du crédit : :amount + - Intérêts : :fees + - Taxes : :tax + - Montant net à percevoir : :net + - Duréé (en mois) : :duration + - Date de remboursement : :date + - Noms du client : :user_name + - Code du client : :code_user + +NB: Le processus de remboursement est automatique à la date d'échéance si le remboursement n'est pas initié", + 'successful_guarantee_nano_credit_demand' => 'Demande de nano crédit cautionnée', + 'successful_nano_credit_refunded' => 'Remboursement de nano crédit effectué', + 'successful_nano_credit_partially_refunded' => 'Remboursement de nano crédit partiellement effectué', + 'failed_nano_credit_refunded' => 'Remboursement de nano crédit échoué', + 'successful_nano_credit_demand_refunded' => "Nano crédit remboursé +Informations sur la demande : + - Numéro de la demande : :id_demand + - Montant du crédit remboursé : :amount + - Intérêts : :fees + - Taxes : :tax + - Capital : :net", + 'successful_accepted_group_membership_request' => "Demande d'adhésion acceptée", + 'successful_canceled_group_membership_request' => "Demande d'adhésion refusée", + 'successful_nano_credit_sent_to_hypervisor' => "Votre demande a été envoyé à l'hyperviseur de votre reseau. Vous recevrez le credit seulement après validation", + 'successful_accepted_nano_credit_request' => "Demande de nano credit acceptée", + 'successful_canceled_nano_credit_request' => "Demande de nano credit refusée", + "successful_saving" => "Epargne réussie", + "successful_blocked_saving_details" => " +Informations sur l'epargne : + - Numéro de l'epargne : :id_saving + - Type : :type + - Montant lors de la cassation : :amount + - Intérêts : :fees + - Taxes : :tax + - Montant net epargné : :net + - Duréé (en mois) : :duration + - Date de fin : :date +", + "successful_simple_saving_details" => " +Informations sur l'epargne : + - Numéro de l'epargne : :id_saving + - Type : :type + - Montant lors de la cassation : :amount + - Intérêts : :fees + - Taxes : :tax + - Montant net epargné : :net +", + "successful_broken_saving" => "Epargne cassée", + "reload_your_account" => "Le remboursement de nano credit a echoué pour solde insuffisant, veuillez recharger votre compte.", + "successful_password_update" => "Votre mot de passe a été mis à jour avec succès.", + "your_new_password" => "Votre nouveau mot de passe est :password.", + "password_update" => "Mise à jour de votre mot de passe", + "wallet_incoming_payment" => "Paiement entrant dans votre portefeuille", + "wallet_incoming_payment_message" => "Vous avez recu un paiement entrant dans votre portefeuille +Informations de la transaction : + - Numéro : :id_transaction + - Montant : :amount + - Pays de départ : :init_country + - Réseau emetteur : :network :final_country + - Compte émetteur : :sender_code + - Noms de l'emetteur : :sender_name + - Pays de destination : :final_country + - Compte destinataire : :receiver_code", + "cash_incoming_payment" => "Paiement entrant en cash.", + "cash_incoming_payment_message" => "Vous avez recu un paiement en cash. +Informations de la transaction : + - Transaction ID : :id_transaction + - Montant : :amount + - Pays de départ : :init_country + - Réseau emetteur : :network :final_country + - Noms de l'emetteur : :sender_name + - Pays de destination : :final_country + - Noms du destinataire : :receiver_name + - Code de retrait : :code", + 'successful_user_send_to_bank' => 'Envoi d\'argent de votre compte vers la banque +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Montant net d\'envoi: :net + - Compte émetteur : :sender_code + - Banque : :bank :country + - IBAN : :iban', + 'successful_user_payment_of_operator' => "Paiement d'une facture chez un operateur +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Montant net payé: :net + - Compte émetteur : :sender_code + - Operateur : :operator + - Type d'operateur : :type_operator + - No facture : :no_facture", + 'successful_bank_account_attachment' => 'Rattachement de votre compte bancaire effectué', + 'successful_user_remove_from_bank_to_wallet' => "Retrait de la banque vers le wallet +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Montant net d\'envoi: :net + - Compte émetteur : :sender_code + - Banque : :bank :country + - IBAN : :iban", + 'successful_agent_send_from_cash_to_bank' => "Envoi d'argent en cash vers la banque +Informations de la transaction : + - Numéro : :id_transaction + - Montant de la transaction : :amount + - Frais : :fees + - Montant net d'envoi: :net + - Compte de l'agent : :sender_code + - Noms de l'emetteur : :sender_name + - Noms du destinataire : :receiver_name + - IBAN du destinataire : :iban + - Banque : :bank :country", + 'successful_bank_account_attachment_taken' => 'Votre requête de rattachement de votre compte bancaire a été prise en compte, vous recevrez un mail de confirmation dès lors que la banque aura validé votre code IBAN.', ]; diff --git a/routes/web.php b/routes/web.php index 5a91bcf..17bb420 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,8 +14,10 @@ */ $router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($router) { - $router->get('/', function () use ($router) { - return $router->app->version(); - }); +// $router->get('/', function () use ($router) { +// return $router->app->version(); +// }); + + $router->post('emitTransaction', 'TransmittingNetworksController@emitPayment'); });