diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 8e08c8a..25250a8 100755 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -3,13 +3,14 @@ namespace App\Http\Controllers; +use App\Models\Agent; +use App\Models\AgentPlus; use App\Models\Identification; use App\Models\User; use App\Traits\ApiResponser; use App\Traits\Helper; use Illuminate\Http\Request; use Illuminate\Http\Response; -use Illuminate\Support\Facades\Date; use Illuminate\Support\Facades\File; class UserController extends Controller @@ -47,7 +48,7 @@ class UserController extends Controller $identification->status = 0; $identification->save(); - $this->sendMail($user->email, trans('messages.successful_identification'), + $this->sendMail($user->email, trans('messages.successful_identification', ['name' => $identification->lastname . ' ' . $identification->firstname]), trans('messages.successful_identification_message', ['name' => $identification->lastname . ' ' . $identification->firstname])); return $this->successResponse(trans('messages.successful_identification', ['name' => $identification->lastname . ' ' . $identification->firstname])); } @@ -238,4 +239,37 @@ class UserController extends Controller return $destination; } + // Mise a jour du mot de passe + + public function updatePassword(Request $request) + { + $this->validate($request, [ + 'phone' => 'required', + 'type' => 'required|in:user,agent', + 'oldPassword' => 'required', + 'newPassword' => 'required' + ]); + + if ($request->type == 'user') { + $user = User::where('phone', $request->phone)->firstOrFail(); + } else { + $agent_plus = AgentPlus::where('phone', $request->phone)->orWhere('transactionNumber', $request->phone)->firstOrFail(); + $user = Agent::findOrFail($agent_plus->id); + } + + if (!$this->checkPassword($request->oldPassword, $user->encrypted_password, $user->salt)) + return $this->errorResponse(trans('messages.incorrect_user_password')); + + $hash = $this->hashSSHA($request->newPassword); + $user->salt = $hash['salt']; + $user->encrypted_password = $hash['encrypted']; + $user->save(); + + $this->sendMail($user->email, trans('messages.password_update'), + trans('messages.successful_password_update') . ' ' . trans('messages.your_new_password', ['password' => $request->newPassword])); + + return $this->successResponse(trans('messages.successful_password_update')); + + } + } diff --git a/app/Http/Controllers/WalletController.php b/app/Http/Controllers/WalletController.php index 2a471a2..c3904f1 100755 --- a/app/Http/Controllers/WalletController.php +++ b/app/Http/Controllers/WalletController.php @@ -102,7 +102,7 @@ class WalletController extends Controller // Wallets users iLink public function showWalletUser($id_user){ - $wallet = collect(DB::select('SELECT wu.*, u.user_code , u.numero_carte , u.expiration_date ,n2.name as network , cc.name as country, cc.currency_code from wallets_users wu + $wallet = collect(DB::select('SELECT wu.*, u.user_code , u.numero_carte , u.expiration_date ,n2.id as id_wallet_network, n2.name as network , cc.name as country, cc.currency_code from wallets_users wu INNER JOIN users u ON u.id = wu.idUser INNER JOIN networks n1 ON n1.id = u.network_id INNER JOIN networks n2 ON n2.country_id = n1.country_id @@ -122,13 +122,13 @@ class WalletController extends Controller $demandes = DB::select("SELECT 'N' as type_historique, i.montant , i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE id_network = :id ;", ['id' => $id_network]); $savings = DB::select("SELECT 'E' as type_historique , i.montant , i.user as destinataire , i.* FROM infos_users_epargnes i WHERE id_network = :id;", ['id' => $id_network]); - $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, + $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation_fr , tit.name as operation_en , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.network_emetteur = :id ;", ['id' => $id_network]); $transactions_mapped = array_map(function ($data) { - + $data->operation = app()->isLocale('en') ? $data->operation_en : $data->operation_fr; $date = $data->date_creation; unset($data->date_creation); @@ -157,7 +157,7 @@ class WalletController extends Controller $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, - $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); + $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire, $data->operation_fr, $data->operation_en); return $data; }, $transactions); @@ -182,13 +182,13 @@ class WalletController extends Controller $demandes = DB::select("SELECT 'N' as type_historique , i.montant ,i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE codeParrain = :code ;", ['code' => $walletSup->codeMembre]); - $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, + $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation_fr , tit.name as operation_en , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.id_wallet_sup = :id ;", ['id' => $id_wallet]); $transactions_mapped = array_map(function ($data) { - + $data->operation = app()->isLocale('en') ? $data->operation_en : $data->operation_fr; $date = $data->date_creation; unset($data->date_creation); @@ -212,7 +212,7 @@ class WalletController extends Controller $data->destinataire = $data->numero_carte; $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, - $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); + $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire, $data->operation_fr, $data->operation_en); return $data; }, $transactions); @@ -236,13 +236,13 @@ class WalletController extends Controller $demandes = DB::select("SELECT 'N' as type_historique, i.montant , i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE id_network = :id ;", ['id' => $id_network]); $savings = DB::select("SELECT 'E' as type_historique , i.montant , i.user as destinataire , i.* FROM infos_users_epargnes i WHERE id_network = :id;", ['id' => $id_network]); - $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, + $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation_fr , tit.name as operation_en , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.network_emetteur = :id ;", ['id' => $id_network]); $transactions_mapped = array_map(function ($data) { - + $data->operation = app()->isLocale('en') ? $data->operation_en : $data->operation_fr; $date = $data->date_creation; unset($data->date_creation); @@ -270,7 +270,7 @@ class WalletController extends Controller } $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, - $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); + $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire, $data->operation_fr, $data->operation_en); return $data; }, $transactions); @@ -295,13 +295,13 @@ class WalletController extends Controller $demandes = DB::select("SELECT 'N' as type_historique, i.montant , i.user as destinataire , i.* FROM infos_users_demandes_credits i WHERE codeParrain = :code ;", ['code' => $walletSup->codeMembre]); - $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, + $transactions = DB::select("SELECT 'T' as type_historique, wit.id_transaction, tit.nom as operation_fr , tit.name as operation_en , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date as date_creation , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.id_wallet_sup = :id ;", ['id' => $id_wallet]); $transactions_mapped = array_map(function ($data) { - + $data->operation = app()->isLocale('en') ? $data->operation_en : $data->operation_fr; $date = $data->date_creation; unset($data->date_creation); @@ -331,7 +331,7 @@ class WalletController extends Controller $data->date_creation = $date; unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, - $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire); + $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire, $data->operation_fr, $data->operation_en); return $data; }, $transactions); @@ -348,4 +348,12 @@ class WalletController extends Controller return $this->successResponse($result); } + public function getWalletBanks($id_wallet_network) + { + $banks = DB::select("SELECT b.id as id_bank, b.nom as bank_name , bc.adresse as bank_address, c.name as country FROM networks_banks nb INNER JOIN banks_countries bc on bc.id = nb.id_bank_country INNER JOIN banks b ON b.id = bc.id_bank +INNER JOIN countries c ON bc.id_country = c.id WHERE nb.id_network = :id_network ;", ['id_network' => $id_wallet_network]); + + return $this->successResponse($banks); + } + } diff --git a/app/Http/Controllers/iLinkTransactionController.php b/app/Http/Controllers/iLinkTransactionController.php index 121d9b0..1dd10bd 100755 --- a/app/Http/Controllers/iLinkTransactionController.php +++ b/app/Http/Controllers/iLinkTransactionController.php @@ -32,6 +32,7 @@ class iLinkTransactionController extends Controller private $PAYMENT_URL = "/adyen-api/v1/transaction/payement"; private $PAYOUT_URL = "/adyen-api/v1/transaction/payout"; private $REFUND_URL = "/adyen-api/v1/transaction/refund"; + private $PAYING_NETWORK_SIMULATOR_SEND_FRAME_URL = 'http://localhost:8084/receive_payment'; /** * Create a new controller instance. @@ -153,8 +154,6 @@ class iLinkTransactionController extends Controller $transaction->part_reseau_payeur = $frais * $reseauPayeur->taux_partage / 100; $transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); $transaction->part_reseau_emetteur = $frais - $transaction->part_reseau_payeur; - $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; - $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; } else { $transaction->part_reseau_payeur = 0; $transaction->part_reseau_payeur_final_country = 0; @@ -162,6 +161,8 @@ class iLinkTransactionController extends Controller } $transaction->commission_hyp = $transaction->part_reseau_emetteur; + $transaction->id_transaction = $this->getTransactionID(); + if ($configPayeur->type == 'ilink') { $destinataire = User::where('user_code', $request->id_destinataire)->first(); if ($destinataire) { // Si c'est un wallet ilink @@ -176,6 +177,11 @@ class iLinkTransactionController extends Controller } else { return $this->errorResponse(trans('errors.wallet_not_defined')); } + + //Mise a jour des comissions et compensation + $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; + $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; + //Hyperviseur payeur $hyperviseurPayeur = AgentPlus::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail(); if ($hyperviseurPayeur->id == $hyperviseur->id) { //Si c'est le reseau payeur est aussi emetteur @@ -188,15 +194,16 @@ class iLinkTransactionController extends Controller $walletHyperviseurPayeur->save(); } } else { - //Emettre requete SSL vers wallet extene correspondant pour recharger le compte dont l'id est : -// $transaction->id_destinataire ; - // et le montant est: -// $montantDepot; + //Emettre requete SSL vers wallet extene correspondant pour recharger le compte du destinataire + // La mise à jour des comissions de compensation se fera lors du traitement de la transaction + $transaction->status_reseau_payeur = 'EN_COURS'; + $result = $this->sendFrame($this->PAYING_NETWORK_SIMULATOR_SEND_FRAME_URL, $transaction); + if ($result->getStatusCode() != 200) + return $this->errorResponse(trans('errors.unexpected_error')); } $walletHyperviseur->balance_com += $transaction->part_reseau_emetteur; $walletUser->balance -= $transaction->montant; $transaction->id_wallet_hyp = $walletHyperviseur->id; - $transaction->id_transaction = $this->getTransactionID(); $walletHyperviseur->save(); $walletUser->save(); @@ -306,8 +313,6 @@ class iLinkTransactionController extends Controller $transaction->part_reseau_payeur = $frais * $reseauPayeur->taux_partage / 100; $transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); $transaction->part_reseau_emetteur = $frais - $transaction->part_reseau_payeur; - $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; - $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; } else { $transaction->part_reseau_payeur = 0; $transaction->part_reseau_payeur_final_country = 0; @@ -317,7 +322,12 @@ class iLinkTransactionController extends Controller $transaction->commission_hyp = $transaction->part_reseau_emetteur; $transaction->commission_hyp_final_country = $this->toMoneyAmount($transaction->commission_hyp, $init_country, $request->final_country); + $transaction->id_transaction = $this->getTransactionID(); if ($configPayeur->type == 'ilink') { + //Mise a jour des comissions et compensation + $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; + $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; + //Hyperviseur payeur $hyperviseurPayeur = AgentPlus::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail(); if ($hyperviseurPayeur->id == $hyperviseur->id) { //Si c'est le reseau payeur est aussi emetteur @@ -330,10 +340,12 @@ class iLinkTransactionController extends Controller $walletHyperviseurPayeur->save(); } } else { - //Emettre requete SSL vers wallet extene correspondant pour recharger le compte dont l'id est : -// $transaction->id_destinataire ; - // et le montant est: -// $montantDepot; + //Emettre requete SSL vers wallet extene correspondant pour recharger le compte du destinataire + // La mise à jour des comissions de compensation se fera lors du traitement de la transaction + $transaction->status_reseau_payeur = 'EN_COURS'; + $result = $this->sendFrame($this->PAYING_NETWORK_SIMULATOR_SEND_FRAME_URL, $transaction); + if ($result->getStatusCode() != 200) + return $this->errorResponse(trans('errors.unexpected_error')); } $walletUser->balance -= $transaction->montant; $walletHyperviseur->balance_com += $transaction->commission_hyp; @@ -343,7 +355,7 @@ class iLinkTransactionController extends Controller $transaction->code_retrait_salt = $hash['salt']; $transaction->id_wallet_hyp = $walletHyperviseur->id; - $transaction->id_transaction = $this->getTransactionID(); + if (isset($reseauPayeur)) $reseauPayeur->save(); $walletHyperviseur->save(); @@ -919,8 +931,6 @@ class iLinkTransactionController extends Controller $transaction->part_reseau_payeur = $frais * $reseauPayeur->taux_partage / 100; $transaction->part_reseau_payeur_final_country = $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country); $transaction->part_reseau_emetteur = $frais - $transaction->part_reseau_payeur; - $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; - $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; } else { $transaction->part_reseau_payeur = 0; $transaction->part_reseau_payeur_final_country = 0; @@ -931,7 +941,12 @@ class iLinkTransactionController extends Controller $commisionSuper = floatval($transaction->part_reseau_emetteur * $config->taux_com_sup_envoi_cash / 100); $commisionHyper = floatval($transaction->part_reseau_emetteur * $config->taux_com_hyp_envoi_cash / 100); + $transaction->id_transaction = $this->getTransactionID(); if ($configPayeur->type == 'ilink') { + //Mise a jour des comissions et compensation + $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; + $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; + //Hyperviseur payeur $hyperviseurPayeur = AgentPlus::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail(); if ($hyperviseurPayeur->id == $hyperviseur->id) { //Si c'est le reseau payeur est aussi emetteur @@ -944,10 +959,12 @@ class iLinkTransactionController extends Controller $walletHyperviseurPayeur->save(); } } else { - //Emettre requete SSL vers wallet extene correspondant pour recharger le compte dont l'id est : -// $transaction->id_destinataire ; - // et le montant est: -// $montantDepot; + //Emettre requete SSL vers wallet extene correspondant pour recharger le compte du destinataire + // La mise à jour des comissions de compensation se fera lors du traitement de la transaction + $transaction->status_reseau_payeur = 'EN_COURS'; + $result = $this->sendFrame($this->PAYING_NETWORK_SIMULATOR_SEND_FRAME_URL, $transaction); + if ($result->getStatusCode() != 200) + return $this->errorResponse(trans('errors.unexpected_error')); } @@ -977,7 +994,7 @@ class iLinkTransactionController extends Controller $walletAgent->save(); $walletSuperviseur->save(); $walletHyperviseur->save(); - $transaction->id_transaction = $this->getTransactionID(); + $transaction->save(); $message = trans('messages.successful_agent_send_cash', ['sender_name' => $request->prenom_emetteur . ' ' . $request->nom_emetteur, 'receiver_name' => $request->prenom_destinataire . ' ' . $request->nom_destinataire, @@ -1003,11 +1020,12 @@ class iLinkTransactionController extends Controller $user = User::findOrFail($id_user); $wallet_user = WalletsUser::where('idUser',$user->id)->firstOrFail(); - $transactions = DB::select('SELECT id_wallet_user , operation , id_transaction ,network_destinataire, init_country , final_country, date , id , montant , frais , taxe , pays_init , pays_final, + $transactions = DB::select('SELECT id_wallet_user , operation_fr , operation_en, id_transaction ,network_destinataire, init_country , final_country, date , id , montant , frais , taxe , pays_init , pays_final, destinataire_phone , destinataire_name , nom_destinataire, prenom_destinataire, montant_net ,montant_net_final_country FROM infos_ilink_transaction WHERE id_wallet_user = :id_wallet AND type <> 12 AND type <> 14 - ORDER BY date DESC LIMIT 10;', ['id_wallet' => $wallet_user->id]); + ORDER BY date DESC LIMIT 10;', ['id_wallet' => $wallet_user->id]); foreach ($transactions as $data){ + $data->operation = app()->isLocale('en') ? $data->operation_en : $data->operation_fr; $date = $data->date; unset($data->date); @@ -1032,21 +1050,22 @@ class iLinkTransactionController extends Controller $data->final_country = $data->pays_final; $data->reseau_payeur = isset($data->network_destinataire) ? $this->getNetworkName($data->network_destinataire).' '.$data->final_country : null; $data->date = $date; - unset($data->type, $data->destinataire_name, $data->id_wallet_user,$data->network_destinataire,$data->nom_destinataire, $data->prenom_destinataire ,$data->taxe,$data->numero_carte, - $data->montant_net_final_country, $data->montant_net,$data->pays_init, $data->pays_final ,$data->id_destinataire ,$data->destinataire_phone); + unset($data->type, $data->destinataire_name, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, + $data->montant_net_final_country, $data->montant_net, $data->pays_init, $data->pays_final, $data->id_destinataire, $data->destinataire_phone, $data->operation_fr, $data->operation_en); } return $this->successResponse($transactions); } public function lastAgentTransactions($id_wallet_agent) { - $transactions = DB::select('SELECT wit.id_transaction, tit.nom as operation , wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, + $transactions = DB::select('SELECT wit.id_transaction, tit.nom as operation_fr , tit.name as operation_en, wit.montant ,wit.nom_emetteur, wit.prenom_emetteur, wit.id_wallet_user,wit.frais,wit.taxe,wit.id_destinataire, wit.nom_destinataire, wit.prenom_destinataire, wit.type , wit.id_wallet_user, wit.init_country, wit.final_country , wit.network_destinataire , wit.montant_net_final_country , wit.date , wit.id , wit.numero_carte, wit.montant_net FROM wallet_ilink_transaction wit INNER JOIN type_ilink_transaction tit ON wit.type = tit.id WHERE wit.id_wallet_ag = :id_wallet ORDER BY wit.date DESC LIMIT 10;', ['id_wallet' => $id_wallet_agent]); foreach ($transactions as $data){ + $data->operation = app()->isLocale('en') ? $data->operation_en : $data->operation_fr; $date = $data->date; unset($data->date); $wallet_user = isset($data->id_wallet_user) ? WalletsUser::findOrFail($data->id_wallet_user) : null ; @@ -1066,8 +1085,8 @@ class iLinkTransactionController extends Controller $data->final_country = $data->montant_net_final_country ? $this->getCountryName($data->final_country) : ''; $data->reseau_payeur = isset($data->network_destinataire) ? $this->getNetworkName($data->network_destinataire) . ' ' . $data->final_country : null; $data->date = $date; - unset($data->type, $data->id_wallet_user, $data->network_destinataire,$data->nom_destinataire, $data->prenom_destinataire ,$data->taxe,$data->numero_carte, - $data->montant_net_final_country, $data->montant_net,$data->nom_emetteur, $data->prenom_emetteur ,$data->id_destinataire); + unset($data->type, $data->id_wallet_user, $data->network_destinataire, $data->nom_destinataire, $data->prenom_destinataire, $data->taxe, $data->numero_carte, + $data->montant_net_final_country, $data->montant_net, $data->nom_emetteur, $data->prenom_emetteur, $data->id_destinataire, $data->operation_fr, $data->operation_en); } return $this->successResponse($transactions); } @@ -1456,4 +1475,34 @@ class iLinkTransactionController extends Controller } + // Recevoir le traitement d'une transaction venant d'un reseau payeur + public function receiveRequestProcessingResult(Request $request) + { + $this->validate($request, [ + 'id_transaction' => 'required', + 'status' => 'required|in:NON_TRAITEE,TRAITEE' + ]); + $transaction = WalletIlinkTransaction::where('id_transaction', $request->id_transaction)->firstOrFail(); + if (!in_array($transaction->type, [1, 3, 17])) + return $this->errorResponse(trans('errors.forbidden')); + + if ($transaction->status_reseau_payeur != 'EN_COURS') + return $this->errorResponse(trans('errors.request_already_processed')); + // modifier l'etat et mettre les comptes comissions et compensatios du reseau payeur + + $transaction->status_reseau_payeur = $request->status; + if ($request->status == 'TRAITEE') { + //Mise a jour des comissions et compensation + $config = ConfigWallet::where('id_network', $transaction->network_emetteur)->firstOrFail(); + $reseauPayeur = PayingNetwork::where('id_network', $transaction->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail(); + + $reseauPayeur->balance_com += $transaction->part_reseau_payeur_final_country; + $reseauPayeur->balance_compensation += $transaction->montant_net_final_country; + $reseauPayeur->save(); + } + $transaction->save(); + return $this->successResponse(trans('messages.success_treated_demand')); + + } + } diff --git a/app/Models/Agent.php b/app/Models/Agent.php new file mode 100644 index 0000000..424615a --- /dev/null +++ b/app/Models/Agent.php @@ -0,0 +1,87 @@ + 'float', + 'latitude' => 'float', + 'balance' => 'float', + 'active' => 'int', + 'town_id' => 'int', + 'number_super' => 'int', + 'number_geoBysuper' => 'int' + ]; + + protected $dates = [ + 'date_created', + 'open_hours', + 'close_hours' + ]; + + protected $hidden = [ + 'encrypted_password' + ]; + + protected $fillable = [ + 'uid', + 'firstname', + 'lastname', + 'email', + 'longitude', + 'latitude', + 'adresse', + 'balance', + 'encrypted_password', + 'salt', + 'active', + 'date_created', + 'open_hours', + 'close_hours', + 'town_id', + 'number_super', + 'number_geoBysuper' + ]; + + public function town() + { + return $this->belongsTo(Town::class); + } +} diff --git a/app/Models/WalletIlinkTransaction.php b/app/Models/WalletIlinkTransaction.php index 2fed62e..210a3b4 100644 --- a/app/Models/WalletIlinkTransaction.php +++ b/app/Models/WalletIlinkTransaction.php @@ -39,6 +39,7 @@ use Illuminate\Database\Eloquent\Model; * @property float $part_reseau_emetteur * @property float $part_reseau_payeur * @property float $part_reseau_payeur_final_country + * @property string status_reseau_payeur * @property string $numero_carte * @property Carbon $expiration_date * @property int $init_country @@ -122,22 +123,23 @@ class WalletIlinkTransaction extends Model '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', - 'numero_carte', - 'expiration_date', - 'init_country', - 'final_country', - 'commission_banque', - 'commission_ag', + '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', @@ -217,7 +219,7 @@ class WalletIlinkTransaction extends Model 'nom_destinataire'=>'required', 'prenom_destinataire'=>'required', 'type_document_destinataire'=>'required', - 'id_document_destinataire'=>'required' +// 'id_document_destinataire'=>'required' ]; } @@ -232,7 +234,7 @@ class WalletIlinkTransaction extends Model return [ 'final_country' =>'required|integer|min:0|not_in:0', 'type_document_destinataire'=>'required', - 'id_document_destinataire'=>'required', +// 'id_document_destinataire'=>'required', 'id_destinataire' =>'required_without:phone_destinataire', 'network_destinataire'=>'required|integer|min:0|not_in:0', ]; @@ -244,7 +246,7 @@ class WalletIlinkTransaction extends Model 'nom_destinataire'=>'required', 'prenom_destinataire'=>'required', 'type_document_destinataire'=>'required', - 'id_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/Traits/Helper.php b/app/Traits/Helper.php index 94d0baa..c82195d 100644 --- a/app/Traits/Helper.php +++ b/app/Traits/Helper.php @@ -17,6 +17,7 @@ use App\Models\User; use App\Models\UsersDemandesCredit; use App\Models\Wallet; use App\Models\WalletAgent; +use App\Models\WalletIlinkTransaction; use App\Models\WalletsUser; use Brick\Math\RoundingMode; use Brick\Money\Context\AutoContext; @@ -383,4 +384,42 @@ trait Helper return $title . "\n" . $message; } + + public function sendFrame($paying_network_url, WalletIlinkTransaction $transaction) + { + $client = new \GuzzleHttp\Client(); + + $trame = new \stdClass(); + $trame->ID = $transaction->id_transaction; + + if (isset($transaction->id_wallet_user)) { + $wallet_user = collect(DB::select("SELECT * FROM wallet_user WHERE id_wallet = :id", + ['id' => $transaction->id_wallet_user]))->first(); + $identification = Identification::where('id_user', $wallet_user->id)->firstOrFail(); + + $trame->id_emetteur = $wallet_user->user_code; + $trame->type_document_emetteur = $identification->identity_document; + $trame->id_document_emetteur = $identification->id_identity_document; + $trame->prenom_emetteur = $identification->firstname; + $trame->nom_emetteur = $identification->lastname; + $trame->email_emetteur = $wallet_user->email; + } else { + $trame->type_document_emetteur = $transaction->type_document_emetteur; + $trame->id_document_emetteur = $transaction->id_document_emetteur; + $trame->prenom_emetteur = $transaction->prenom_emetteur; + $trame->nom_emetteur = $transaction->nom_emetteur; + $trame->email_emetteur = $transaction->email_emetteur; + } + + + $trame->id_destinataire = $transaction->id_destinataire; + $trame->type_document_destinataire = $transaction->type_document_destinataire; + $trame->id_document_destinataire = $transaction->id_document_destinataire; + $trame->montant = $transaction->montant_net_final_country; + $trame->currency = CountriesCurrency::findOrFail($transaction->final_country)->currency_code; + + return $client->request('POST', $paying_network_url, ['json' => $trame]); + +// return $response->getBody()->getContents(); + } } diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php index 10d6fb1..3848629 100755 --- a/resources/lang/en/errors.php +++ b/resources/lang/en/errors.php @@ -66,4 +66,6 @@ Paying network : :network :country', "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", ]; diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php index e1b309d..af258b7 100755 --- a/resources/lang/en/messages.php +++ b/resources/lang/en/messages.php @@ -244,4 +244,7 @@ Savings Information : - 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", ]; diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php index da64cc4..4eac02c 100755 --- a/resources/lang/fr/errors.php +++ b/resources/lang/fr/errors.php @@ -66,4 +66,6 @@ Réseau payeur : :network :country', "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", ]; diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php index e088d0a..c4a9af3 100755 --- a/resources/lang/fr/messages.php +++ b/resources/lang/fr/messages.php @@ -246,4 +246,7 @@ Informations sur l'epargne : ", "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" ]; diff --git a/routes/web.php b/routes/web.php index d71c2e0..168f345 100755 --- a/routes/web.php +++ b/routes/web.php @@ -15,6 +15,7 @@ // return $router->app->version(); //}); // Helper routes +$router->post('update_password', 'UserController@updatePassword'); $router->get('agent_codes/{agent_code}', 'HelperController@agentCodes'); $router->get('countries', 'HelperController@countries'); $router->get('countries/{dial_code}','HelperController@country'); @@ -36,7 +37,8 @@ $router->group(['prefix' => '/transactions'] , function () use ($router){ $router->get('user/{id_wallet_user}','iLinkTransactionController@lastUserTransactions'); $router->get('agent/{id_wallet_agent}','iLinkTransactionController@lastAgentTransactions'); $router->post('check_retraits','iLinkTransactionController@getTransactionRetrait'); - $router->delete('{id_transaction}','iLinkTransactionController@cancel'); + $router->delete('{id_transaction}', 'iLinkTransactionController@cancel'); + $router->post('receive_request_processing_result', 'iLinkTransactionController@receiveRequestProcessingResult'); }); }); @@ -64,6 +66,8 @@ $router->group(['prefix' => '/wallets'] , function () use ($router){ // Wallets users iLink $router->group(['prefix' => '/users'], function () use ($router) { $router->get('{id_user}', 'WalletController@showWalletUser'); + //Liste des banques + $router->get('banks/{id_wallet_network}', 'WalletController@getWalletBanks'); }); });