+ Update users password

+ Add paying networks simulator
+ Add users banks
This commit is contained in:
Djery-Tom 2020-10-27 11:52:37 +01:00
parent 95b2ef9644
commit 042f17791f
11 changed files with 296 additions and 63 deletions

View File

@ -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'));
}
}

View File

@ -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);
}
}

View File

@ -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]);
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'));
}
}

87
app/Models/Agent.php Normal file
View File

@ -0,0 +1,87 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class Agent
*
* @property int $id
* @property string $uid
* @property string|null $firstname
* @property string|null $lastname
* @property string|null $email
* @property float|null $longitude
* @property float|null $latitude
* @property string $adresse
* @property float|null $balance
* @property string|null $encrypted_password
* @property string|null $salt
* @property int|null $active
* @property Carbon|null $date_created
* @property Carbon|null $open_hours
* @property Carbon|null $close_hours
* @property int $town_id
* @property int|null $number_super
* @property int|null $number_geoBysuper
*
* @property Town $town
*
* @package App\Models
*/
class Agent extends Model
{
protected $table = 'agents';
public $timestamps = false;
protected $casts = [
'longitude' => '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);
}
}

View File

@ -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
@ -132,6 +133,7 @@ class WalletIlinkTransaction extends Model
'part_reseau_emetteur',
'part_reseau_payeur',
'part_reseau_payeur_final_country',
'status_reseau_payeur',
'numero_carte',
'expiration_date',
'init_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',
];

View File

@ -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();
}
}

View File

@ -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",
];

View File

@ -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",
];

View File

@ -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",
];

View File

@ -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"
];

View File

@ -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');
});
});