+ Add User - Envoi wallet à cash

This commit is contained in:
Djery-Tom 2020-06-27 16:04:28 +01:00
parent 41b8afdad5
commit 522cd8bafa
5 changed files with 100 additions and 67 deletions

View File

@ -23,8 +23,10 @@ class HelperController extends Controller
// //
} }
public function countries() public function countries($id_wallet_user)
{ {
$walletUser = WalletsUser::findOrFail($id_wallet_user);
$init_country = $walletUser->user->network->country->id;
$countries = DB::select('SELECT id , name , code_dial , code_country FROM countries_currencies WHERE id IN ( $countries = DB::select('SELECT id , name , code_dial , code_country 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 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
);'); );');

View File

@ -137,13 +137,13 @@ class iLinkTransactionController extends Controller
$transaction->part_reseau_emetteur = $frais; $transaction->part_reseau_emetteur = $frais;
} }
$transaction->commission_hyp = $transaction->part_reseau_emetteur; $transaction->commission_hyp = $transaction->part_reseau_emetteur;
$reseauPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_payeur,$init_country,$request->final_country); $reseauPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country);
if ($configPayeur->type == 'ilink') { if ($configPayeur->type == 'ilink') {
$destinataire = User::where('user_code', $request->id_destinataire)->first(); $destinataire = User::where('user_code', $request->id_destinataire)->first();
if ($destinataire) { // Si c'est un wallet ilink if ($destinataire) { // Si c'est un wallet ilink
if ($destinataire->network->country->id == $request->final_country) { if ($destinataire->network->country->id == $request->final_country) {
$walletDestinataire = WalletsUser::where('idUser', $destinataire->id)->firstOrFail(); $walletDestinataire = WalletsUser::where('idUser', $destinataire->id)->firstOrFail();
$walletDestinataire->balance += $this->toMoneyAmount($montantDepot,$init_country,$request->final_country); $walletDestinataire->balance += $this->toMoneyAmount($montantDepot, $init_country, $request->final_country);
$walletDestinataire->save(); $walletDestinataire->save();
} else { } else {
$country = Country::findOrFail($request->final_country); $country = Country::findOrFail($request->final_country);
@ -156,12 +156,12 @@ class iLinkTransactionController extends Controller
$hyperviseurPayeur = AgentPlus::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail(); $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 if ($hyperviseurPayeur->id == $hyperviseur->id) { //Si c'est le reseau payeur est aussi emetteur
$walletHyperviseur->balance_com += $transaction->part_reseau_payeur; $walletHyperviseur->balance_com += $transaction->part_reseau_payeur;
$reseauPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_emetteur,$init_country,$request->final_country); $reseauPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_emetteur, $init_country, $request->final_country);
$transaction->id_wallet_hyp_payeur = $walletHyperviseur->id; $transaction->id_wallet_hyp_payeur = $walletHyperviseur->id;
} else { } else {
$wallet_agent_hypPayeur = WalletAgent::where('agent_id', $hyperviseurPayeur->id)->firstOrFail(); $wallet_agent_hypPayeur = WalletAgent::where('agent_id', $hyperviseurPayeur->id)->firstOrFail();
$walletHyperviseurPayeur = Wallet::findOrFail($wallet_agent_hypPayeur->wallet_id); $walletHyperviseurPayeur = Wallet::findOrFail($wallet_agent_hypPayeur->wallet_id);
$walletHyperviseurPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_payeur,$init_country,$request->final_country); $walletHyperviseurPayeur->balance_com += $this->toMoneyAmount($transaction->part_reseau_payeur, $init_country, $request->final_country);
$transaction->id_wallet_hyp_payeur = $walletHyperviseurPayeur->id; $transaction->id_wallet_hyp_payeur = $walletHyperviseurPayeur->id;
$walletHyperviseurPayeur->save(); $walletHyperviseurPayeur->save();
} }
@ -180,16 +180,13 @@ class iLinkTransactionController extends Controller
$walletUser->save(); $walletUser->save();
$reseauPayeur->save(); $reseauPayeur->save();
$transaction->save(); $transaction->save();
$this->sendMail($user->email, trans('messages.successful_transaction'), trans('messages.successful_user_send_to_wallet', $message = trans('messages.successful_user_send_to_wallet',
['id_transaction' => $transaction->id_transaction , 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantDepot, $init_country), ['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantDepot, $init_country),
'net_final' => $this->toMoneyWithCurrency($montantDepot, $init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country), 'net_final' => $this->toMoneyWithCurrency($montantDepot, $init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country),
'init_country' => $this->getCountryName($init_country), 'final_country' => $this->getCountryName($request->final_country), 'init_country' => $this->getCountryName($init_country), 'final_country' => $this->getCountryName($request->final_country),
'sender_code' => $user->user_code, 'receiver_code' => $transaction->id_destinataire])); 'sender_code' => $user->user_code, 'receiver_code' => $transaction->id_destinataire]);
return $this->successResponse(trans('messages.successful_user_send_to_wallet_2', $this->sendMail($user->email, trans('messages.successful_transaction'), $message);
['amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantDepot, $init_country), return $this->successResponse($message.trans('messages.sent_by_mail'));
'net_final' => $this->toMoneyWithCurrency($montantDepot, $init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country),
'init_country' => $this->getCountryName($init_country), 'final_country' => $this->getCountryName($request->final_country),
'sender_code' => $user->user_code, 'receiver_code' => $transaction->id_destinataire]));
} }
} else { } else {
return $this->errorResponse(trans('messages.incorrect_user_password')); return $this->errorResponse(trans('messages.incorrect_user_password'));
@ -229,14 +226,12 @@ class iLinkTransactionController extends Controller
$walletUser->save(); $walletUser->save();
$transaction->id_transaction = $this->getTransactionID(); $transaction->id_transaction = $this->getTransactionID();
$transaction->save(); $transaction->save();
$this->sendMail($user->email, trans('messages.successful_transaction'), trans('messages.successful_user_send_to_cart', $message = trans('messages.successful_user_send_to_cart',
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), ['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country),
'net' => $this->toMoney($montantDepot, $init_country), 'fees' => $this->toMoney($frais, $init_country), 'net' => $this->toMoney($montantDepot, $init_country), 'fees' => $this->toMoney($frais, $init_country),
'sender_code' => $user->user_code, 'cart_number' => wordwrap($request->numero_carte, 4, ' ', true)])); 'sender_code' => $user->user_code, 'cart_number' => wordwrap($request->numero_carte, 4, ' ', true)]);
return $this->successResponse(trans('messages.successful_user_send_to_cart_2', $this->sendMail($user->email, trans('messages.successful_transaction'), $message);
['amount' => $this->toMoney($transaction->montant, $init_country), return $this->successResponse($message.trans('messages.sent_by_mail'));
'net' => $this->toMoney($montantDepot, $init_country), 'fees' => $this->toMoney($frais, $init_country),
'sender_code' => $user->user_code, 'cart_number' => wordwrap($request->numero_carte, 4, ' ', true)]));
} else { } else {
return $this->errorResponse(trans('errors.visa_api_failed'), Response::HTTP_INTERNAL_SERVER_ERROR); return $this->errorResponse(trans('errors.visa_api_failed'), Response::HTTP_INTERNAL_SERVER_ERROR);
@ -247,7 +242,41 @@ class iLinkTransactionController extends Controller
} }
break; break;
case 3: //User - Envoi de wallet à cash case 3: //User - Envoi de wallet à cash
$this->validate($request, $transaction->send_wallet_cash_rules());
$user = $walletUser->user;
if ($this->checkPassword($request->password, $user->encrypted_password, $user->salt)) {
if ($request->montant > $walletUser->balance) {
return $this->errorResponse(trans('errors.insufficient_balance'));
} else {
$transaction->frais = $frais = ($init_country != $request->final_country) ? $this->calculateFees($plr_user_wallet_cash, $request->montant) : $this->calculateFees($plr_user_wallet_cash_national, $request->montant);
$transaction->taxe = $taxe = ($init_country != $request->final_country) ? $this->calculateTax($taxesInternationales, $frais) : $this->calculateTax($taxesNationales, $frais);
$transaction->montant_retrait = $montantRetrait = $transaction->montant - $frais - $taxe;
$walletUser->balance -= $transaction->montant;
$transaction->commission_hyp = $frais;
$walletHyperviseur->balance_com += $frais;
$code_retrait = $this->random_string();
$hash = $this->hashSSHA($code_retrait);
$transaction->encrypted_code_retrait = $hash['encrypted'];
$transaction->code_retrait_salt = $hash['salt'];
$transaction->id_wallet_hyp = $walletHyperviseur->id;
$transaction->id_transaction = $this->getTransactionID();
$walletHyperviseur->save();
$walletUser->save();
$transaction->save();
$message = trans('messages.successful_user_send_to_cash',
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net_init' => $this->toMoney($montantRetrait, $init_country),
'net_final' => $this->toMoneyWithCurrency($montantRetrait, $init_country, $request->final_country), 'fees' => $this->toMoney($frais + $taxe, $init_country),
'init_country' => $this->getCountryName($init_country), 'final_country' => $this->getCountryName($request->final_country),'code' => wordwrap($code_retrait, 4, ' ', true),
'sender_code' => $user->user_code, 'receiver_code' => $transaction->id_destinataire,'receiver_name' => $request->prenom_destinataire . ' ' . $request->nom_destinataire]);
$this->sendMail($user->email, trans('messages.successful_transaction'),$message );
return $this->successResponse($message.trans('messages.sent_by_mail'));
}
} else {
return $this->errorResponse(trans('messages.incorrect_user_password'));
}
break; break;
case 4: //User - Envoi de wallet à banque case 4: //User - Envoi de wallet à banque
// Non disponible // Non disponible
@ -544,7 +573,7 @@ class iLinkTransactionController extends Controller
$walletHyperviseur->save(); $walletHyperviseur->save();
$transaction->save(); $transaction->save();
$this->sendMail($request->email_emetteur, trans('messages.successful_transaction'), trans('messages.successful_send_cash', $this->sendMail($request->email_emetteur, trans('messages.successful_transaction'), trans('messages.successful_send_cash',
['sender_name' => $request->prenom_emetteur . ' ' . $request->nom_emetteur, 'receiver_name' => $request->prenom_destinataire . ' ' . $request->prenom_destinataire, ['sender_name' => $request->prenom_emetteur . ' ' . $request->nom_emetteur, 'receiver_name' => $request->prenom_destinataire . ' ' . $request->nom_destinataire,
'id_transaction' => $transaction->id, 'amount' => $this->toMoney($transaction->montant, $request->init_country), 'net_init' => $this->toMoney($montantRetrait, $request->init_country), 'id_transaction' => $transaction->id, 'amount' => $this->toMoney($transaction->montant, $request->init_country), 'net_init' => $this->toMoney($montantRetrait, $request->init_country),
'net_final' => $this->toMoneyWithCurrency($montantRetrait, $request->init_country, $request->final_country), 'fees' => $this->toMoney($frais, $request->init_country), 'tax' => $this->toMoney($taxe, $request->init_country), 'net_final' => $this->toMoneyWithCurrency($montantRetrait, $request->init_country, $request->final_country), 'fees' => $this->toMoney($frais, $request->init_country), 'tax' => $this->toMoney($taxe, $request->init_country),
'code' => wordwrap($code_retrait, 4, ' ', true)])); 'code' => wordwrap($code_retrait, 4, ' ', true)]));
@ -572,7 +601,7 @@ class iLinkTransactionController extends Controller
END END
END AS destinataire , wit.date , wit.id FROM wallet_ilink_transaction wit END AS destinataire , wit.date , wit.id FROM wallet_ilink_transaction wit
INNER JOIN type_ilink_transaction tit ON wit.type = tit.id LEFT JOIN users u ON u.user_code = wit.id_destinataire WHERE wit.id_wallet_user = :id_wallet INNER JOIN type_ilink_transaction tit ON wit.type = tit.id LEFT JOIN users u ON u.user_code = wit.id_destinataire WHERE wit.id_wallet_user = :id_wallet
ORDER BY wit.date DESC LIMIT 10;',['id_wallet'=>$id_wallet_user]); ORDER BY wit.date DESC LIMIT 10;', ['id_wallet' => $id_wallet_user]);
return $this->successResponse($transactions); return $this->successResponse($transactions);
} }
@ -588,7 +617,7 @@ class iLinkTransactionController extends Controller
END END
END AS destinataire , wit.date , wit.id FROM wallet_ilink_transaction wit END AS destinataire , wit.date , wit.id FROM wallet_ilink_transaction wit
INNER JOIN type_ilink_transaction tit ON wit.type = tit.id LEFT JOIN users u ON u.user_code = wit.id_destinataire WHERE wit.id_wallet_ag = :id_wallet INNER JOIN type_ilink_transaction tit ON wit.type = tit.id LEFT JOIN users u ON u.user_code = wit.id_destinataire WHERE wit.id_wallet_ag = :id_wallet
ORDER BY wit.date DESC LIMIT 10;',['id_wallet'=>$id_wallet_agent]); ORDER BY wit.date DESC LIMIT 10;', ['id_wallet' => $id_wallet_agent]);
return $this->successResponse($transactions); return $this->successResponse($transactions);
} }
@ -652,7 +681,7 @@ class iLinkTransactionController extends Controller
$data['destinataire'] = $destinataire ? $destinataire->lastname . ' ' . $destinataire->firstname : $request->id_destinataire; $data['destinataire'] = $destinataire ? $destinataire->lastname . ' ' . $destinataire->firstname : $request->id_destinataire;
$data['frais'] = $frais + $taxe; $data['frais'] = $frais + $taxe;
$data['montant_net_init'] = $request->montant - $frais - $taxe; $data['montant_net_init'] = $request->montant - $frais - $taxe;
$data['montant_net_final'] = $this->toMoneyWithCurrency($data['montant_net_init'], $init_country ,$request->final_country ); $data['montant_net_final'] = $this->toMoneyWithCurrency($data['montant_net_init'], $init_country, $request->final_country);
return $this->successResponse($data); return $this->successResponse($data);
break; break;
case 2: //User - Envoi de wallet à carte case 2: //User - Envoi de wallet à carte

View File

@ -212,7 +212,7 @@ class WalletIlinkTransaction extends Model
'code_retrait' =>'required|size:16', 'code_retrait' =>'required|size:16',
]; ];
} }
/// User Operation rules
public function send_wallet_wallet_rules(){ public function send_wallet_wallet_rules(){
return [ return [
'final_country' =>'required|integer|min:0|not_in:0', 'final_country' =>'required|integer|min:0|not_in:0',
@ -222,4 +222,16 @@ class WalletIlinkTransaction extends Model
'network_destinataire'=>'required|integer|min:0|not_in:0', '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',
];
}
} }

View File

@ -45,9 +45,9 @@ Transaction information:
- Fees : :fees - Fees : :fees
- Tax : :tax - Tax : :tax
- Withdrawal code : :code', - Withdrawal code : :code',
'successful_user_send_to_wallet' => 'Money sent to a wallet. 'successful_user_send_to_wallet' => 'Sending money account to account.
Transaction information : Transaction information :
- Transaction ID : :id_transaction - ID : :id_transaction
- Amount of the transaction : :amount - Amount of the transaction : :amount
- Fees + Taxes : :fees - Fees + Taxes : :fees
- Country of departure : :init_country - Country of departure : :init_country
@ -56,33 +56,27 @@ Transaction information :
- Net amount : :net_final - Net amount : :net_final
- Issuer account : :sender_code - Issuer account : :sender_code
- Recipient account : :receiver_code', - Recipient account : :receiver_code',
'successful_user_send_to_wallet_2' => 'Money sent to a wallet. 'sent_by_mail' => '
Transaction information :
- Amount of the transaction : :amount
- Fees + Taxes : :fees
- Country of departure: :init_country
- Net amount : :net_init
- Country of destination : :final_country
- Net amount : :net_final
- Issuer account : :sender_code
- Recipient account : :receiver_code
This message was sent to the sender\'s email', This message was sent to the sender\'s email',
'successful_user_send_to_cart' => 'Sending money to a visa card made. 'successful_user_send_to_cart' => 'Sending money to a visa card made.
Transaction information : Transaction information :
- Transaction ID : :id_transaction - ID : :id_transaction
- Amount of the transaction : :amount - Amount of the transaction : :amount
- Fees : :fees - Fees : :fees
- Net shipping amount : :net - Net shipping amount : :net
- Issuer account :sender_code - Issuer account :sender_code
- Recipient\'s card number: :cart_number', - Recipient\'s card number: :cart_number',
'successful_user_send_to_cart_2' => 'Sending money to a visa card made. 'successful_user_send_to_cash' => 'Sending money from account to cash
Transaction information : Transaction information :
- Amount of the transaction : :amount - Number: :id_transaction
- Fees : :fees - Amount of the transaction: :amount
- Net shipping amount : :net - Fees and Taxes: :fees
- Issuer account :sender_code - Country of departure: :init_country
- Recipient\'s card number: :cart_number - Net amount: :net_init
- Country of destination: :final_country
This message was sent to the sender\'s email', - Net amount: :net_final
- Issuer account: :sender_code
- Recipient names: :receiver_name.
- Withdrawal code: :code ',
]; ];

View File

@ -45,10 +45,10 @@ Informations de la transaction :
- Frais : :fees - Frais : :fees
- Taxe : :tax - Taxe : :tax
- Code de retrait : :code', - Code de retrait : :code',
'successful_user_send_to_wallet' => 'Envoi d\'argent vers un wallet effectué. 'successful_user_send_to_wallet' => 'Envoi d\'argent compte à compte.
Informations de la transaction : Informations de la transaction :
- Transaction ID : :id_transaction - Numéro : :id_transaction
- Montant de la transaction : :amount - Montant : :amount
- Frais et Taxes : :fees - Frais et Taxes : :fees
- Pays de départ : :init_country - Pays de départ : :init_country
- Montant net : :net_init - Montant net : :net_init
@ -56,8 +56,20 @@ Informations de la transaction :
- Montant net : :net_final - Montant net : :net_final
- Compte émetteur : :sender_code - Compte émetteur : :sender_code
- Compte destinataire : :receiver_code', - Compte destinataire : :receiver_code',
'successful_user_send_to_wallet_2' => 'Envoi d\'argent vers un wallet effectué. 'sent_by_mail' => '
Ce message a été envoyé dans le mail de l\'émetteur',
'successful_user_send_to_cart' => 'Envoi d\'argent vers une carte visa effectué.
Informations de la transaction : Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d\'envoi: :net
- Compte émetteur : :sender_code
- Numero de la carte du 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 - Montant de la transaction : :amount
- Frais et Taxes : :fees - Frais et Taxes : :fees
- Pays de départ : :init_country - Pays de départ : :init_country
@ -65,22 +77,6 @@ Informations de la transaction :
- Pays de destination : :final_country - Pays de destination : :final_country
- Montant net : :net_final - Montant net : :net_final
- Compte émetteur : :sender_code - Compte émetteur : :sender_code
- Compte destinataire : :receiver_code - Noms du destinataire : :receiver_name.
- Code de retrait : :code',
Ce message a été envoyé dans le mail de l\'émetteur',
'successful_user_send_to_cart' => 'Envoi d\'argent vers une carte visa effectué.
Informations de la transaction :
- Transaction ID : :id_transaction
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d\'envoi: :net
- Compte émetteur : :sender_code
- Numero de la carte du destinataire : :cart_number',
'successful_user_send_to_cart_2' => 'Envoi d\'argent vers une carte visa effectué.
Informations de la transaction :
- Montant de la transaction : :amount
- Frais : :fees
- Montant net d\'envoi: :net
- Numero du wallet émetteur : :sender_code
- Numero de la carte du destinataire : :cart_number',
]; ];