+ Update User - Envoi wallet à wallet v2

This commit is contained in:
Djery-Tom 2020-06-23 06:36:12 +01:00
parent 492444fc7f
commit fa17741c6c
7 changed files with 56 additions and 38 deletions

View File

@ -21,15 +21,15 @@ class HelperController extends Controller
public function countries()
{
$countries = DB::select('SELECT id , name , code_dial FROM countries WHERE id IN (
SELECT distinct n.country_id FROM networks n WHERE n.status = 1
)');
$countries = DB::select('SELECT id , name , code_dial FROM countries_currencies WHERE id IN (
SELECT distinct c.id FROM networks n INNER JOIN countries_currencies c ON n.country_id=c.id INNER JOIN configWallet cw ON cw.id_network = n.id WHERE status = 1
);');
return $this->successResponse($countries);
}
public function paying_networks($id_country)
{
$networks = DB::select('SELECT id , name FROM networks WHERE id IN ( SELECT distinct id_network FROM paying_networks )
$networks = DB::select('SELECT n.id , n.name , c.type FROM networks n INNER JOIN configWallet c ON c.id_network = n.id WHERE n.id IN ( SELECT distinct id_network FROM paying_networks )
AND status = 1 AND country_id = :id;',['id'=>$id_country]);
return $this->successResponse($networks);
}

View File

@ -116,41 +116,54 @@ class iLinkTransactionController extends Controller
$transaction->frais = $frais = ($request->init_country != $request->final_country) ? $this->calculateFees($plr_user_wallet_wallet, $request->montant) : $this->calculateFees($plr_user_wallet_wallet_national, $request->montant);
$transaction->taxe = $taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$transaction->montant_depot = $montantDepot = $transaction->montant - $frais - $taxe;
$reseauPayeur = PayingNetwork::where('id_network',$request->network_destinataire)->where('id_configWallet',$config->id)->first();
if($reseauPayeur){ //Si le reseau existe chez iLink
$transaction->part_reseau_payeur = $frais* $reseauPayeur->taux_partage / 100;
$configPayeur = ConfigWallet::where('id_network', $request->network_destinataire)->firstOrFail();
$reseauPayeur = PayingNetwork::where('id_network', $request->network_destinataire)->where('id_configWallet', $config->id)->firstOrFail();
if($request->init_country != $request->final_country){
$transaction->part_reseau_payeur = $frais * $reseauPayeur->taux_partage / 100;
$transaction->part_reseau_emetteur = $frais - $transaction->part_reseau_payeur;
$walletHyperviseur->balance_com += $transaction->part_reseau_emetteur;
$reseauPayeur->balance_com += $transaction->part_reseau_payeur;
$reseauPayeur->save();
}else{
// Emettre requete SSL vers le reseau correspondant
$transaction->part_reseau_payeur = 0;
$transaction->part_reseau_emetteur = $frais;
}
if(isset($request->phone_destinataire)){
$destinataire = User::where('phone', $request->phone_destinataire)->first();
if($destinataire)
$transaction->id_destinataire = $destinataire->user_code;
else
return $this->errorResponse(trans('errors.user_phone_not_exist'));
}elseif (isset($request->id_destinataire)){
$transaction->commission_hyp = $transaction->part_reseau_emetteur;
$reseauPayeur->balance_com += $transaction->part_reseau_payeur;
if ($configPayeur->type == 'ilink') {
$walletHyperviseur->balance_com += $transaction->part_reseau_emetteur;
$destinataire = User::where('user_code', $request->id_destinataire)->first();
}
if($destinataire){ // Si c'est un wallet ilink
$walletDestinataire = WalletsUser::where('idUser',$destinataire->id)->firstOrFail();
if($destinataire) { // Si c'est un wallet ilink
$walletDestinataire = WalletsUser::where('idUser', $destinataire->id)->firstOrFail();
$walletDestinataire->balance += $montantDepot;
$walletDestinataire->save();
}else{
//Emettre requete SSL vers wallet extene correspondant pour recharger le compte
return $this->errorResponse(trans('errors.external_wallet_not_defined'));
} else {
return $this->errorResponse(trans('errors.wallet_not_defined'));
}
$walletUser->balance -= $transaction->montant;
//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
$walletHyperviseur->balance_com += $transaction->part_reseau_payeur;
$reseauPayeur->balance_com += $transaction->part_reseau_emetteur;
}else{
$wallet_agent_hypPayeur = WalletAgent::where('agent_id', $hyperviseurPayeur->id)->firstOrFail();
$walletHyperviseurPayeur = Wallet::findOrFail($wallet_agent_hypPayeur->wallet_id);
$walletHyperviseurPayeur->balance_com += $transaction->part_reseau_payeur;
$walletHyperviseurPayeur->save();
}
$walletHyperviseur->save();
$walletUser->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;
}
$reseauPayeur->save();
$transaction->save();
$this->sendMail($user->email, trans('messages.successful_transaction'), trans('messages.successful_user_send_to_wallet',
['id_transaction' => $transaction->id, 'amount' => $this->toMoney($transaction->montant, $request->init_country), 'net_init' => $this->toMoney($montantDepot, $request->init_country),
'net_final' => $this->convertMoney($montantDepot, $request->init_country, $request->final_country), 'fees' => $this->toMoney($frais, $request->init_country), 'tax' => $this->toMoney($taxe, $request->init_country),
'user_code' => $transaction->id_destinataire]));
'net_final' => $this->convertMoney($montantDepot, $request->init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $request->init_country),
'init_country'=>$this->getCountryName($request->init_country) , 'final_country'=>$this->getCountryName($request->final_country),
'sender_code' => $user->user_code, 'receiver_code' => $transaction->id_destinataire]));
return $this->successResponse(trans('messages.successful_transaction'));
} else {
return $this->errorResponse(trans('messages.incorrect_user_password'));

View File

@ -215,7 +215,6 @@ class WalletIlinkTransaction extends Model
'type_document_destinataire'=>'required',
'id_document_destinataire'=>'required',
'id_destinataire' =>'required_without:phone_destinataire',
'phone_destinataire'=>'required_without:id_destinataire',
'network_destinataire'=>'required|integer|min:0|not_in:0',
];
}

View File

@ -42,6 +42,10 @@ trait Helper
return $hash;
}
public function getCountryName($id_country){
return Country::findOrFail($id_country)->name;
}
public function toMoney($amount, $id_country)
{
$country = Country::findOrFail($id_country);

View File

@ -9,5 +9,5 @@ return [
'visa_api_failed'=> 'Request to API visa failed',
'failed_transaction' => 'Failed transaction',
'user_phone_not_exist' => 'This customer number does not exist',
'external_wallet_not_defined' => 'This code does not correspond to an iLink wallet and no external wallet is defined'
'wallet_not_defined' => 'This code does not correspond to an iLink wallet'
];

View File

@ -9,5 +9,5 @@ return [
'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',
'external_wallet_not_defined' => 'Ce code ne correspond pas à un wallet iLink et aucun wallet externe n\'est defini'
'wallet_not_defined' => 'Ce code ne correspond pas à un wallet iLink'
];

View File

@ -49,9 +49,11 @@ Informations de la transaction :
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant de la transaction : :amount
- Pays de départ : :init_country
- Montant net du pays de départ : :net_init
- Pays de destination : :final_country
- Montant net du pays de destination : :net_final
- Frais : :fees
- Taxe : :tax
- Code wallet du destinataire : :code',
- Frais et Taxe : :fees
- Numero du wallet émetteur : :sender_code
- Numero du wallet destinataire : :receiver_code',
];