+ Update method user wallet to cart

This commit is contained in:
Djery-Tom 2020-07-01 18:54:12 +01:00
parent f208af131a
commit fd7e7fead5
7 changed files with 80 additions and 22 deletions

View File

@ -21,6 +21,7 @@ use App\Traits\Helper;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
use function DeepCopy\deep_copy;
use function GuzzleHttp\Promise\all;
class iLinkTransactionController extends Controller
@ -220,9 +221,11 @@ class iLinkTransactionController extends Controller
if ($code == 200) {
$walletUser->balance -= $transaction->montant;
//Emettre une trame SSL pour recharger le compte de la banque partenaire du montant de sa commission
$transaction->commission_banque = $frais * $config->taux_com_banque_envoi_wallet_carte_ilink / 100 ;
$walletHyperviseur->balance_com += $frais;
$transaction->commission_hyp = $frais;
$transaction->commission_hyp = $frais * $config->taux_com_hyp_envoi_wallet_carte_ilink / 100 ;
$walletHyperviseur->balance_com += $transaction->commission_hyp;
$transaction->id_wallet_hyp = $walletHyperviseur->id;
$transaction->frais = $frais;
$transaction->date = new \DateTime();
@ -334,6 +337,7 @@ class iLinkTransactionController extends Controller
if ($request->montant > $walletUser->balance) {
return $this->errorResponse(trans('errors.insufficient_balance'));
} else {
$transaction->final_country = $init_country;
$transaction->frais = $frais = $this->calculateFees($plr_user_wallet_cash_national, $request->montant);
$transaction->taxe = $taxe = $this->calculateTax($taxesNationales, $frais);
$transaction->montant_net = $montantRetrait = $transaction->montant - $frais - $taxe;
@ -357,7 +361,7 @@ class iLinkTransactionController extends Controller
$message = trans('messages.successful_user_remove_from_wallet_to_cash',
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoney($transaction->montant, $init_country), 'net' => $this->toMoney($montantRetrait, $init_country),
'fees' => $this->toMoney($frais + $taxe, $init_country), 'code' => wordwrap($code_retrait, 4, ' ', true),
'sender_code' => $user->user_code]);
'sender_code' => $user->user_code , 'init_country' => $this->getCountryName($init_country),]);
$this->sendMail($user->email, trans('messages.successful_transaction'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail'));
}
@ -475,35 +479,47 @@ class iLinkTransactionController extends Controller
$this->validate($request, $transaction->remove_cash_rules());
$agent = AgentPlus::findOrFail($network_agent->agent_id);
if ($this->checkPassword($request->password, $agent->encrypted_password, $agent->salt)) {
$transaction = WalletIlinkTransaction::find($request->id_transaction);
$transaction = WalletIlinkTransaction::where('id_transaction',$request->id_transaction)->first();
if ($transaction) {
if ($transaction->status_retrait == 0) {
if ($this->checkPassword($request->code_retrait, $transaction->encrypted_code_retrait, $transaction->code_retrait_salt)) {
if ($transaction->montant_net == $request->montant) {
$part_ag = floatval($transaction->frais * $config->taux_com_ag_retrait_cash / 100);
$part_sup = floatval($transaction->frais * $config->taux_com_sup_retrait_cash / 100);
$transactionRetrait = $transaction->replicate();
$transactionRetrait->id = null;
$transactionRetrait->id_transaction = $this->getTransactionID();
$transactionRetrait->commission_ag = floatval($transaction->frais * $config->taux_com_ag_retrait_cash / 100);
$transactionRetrait->commission_sup = floatval($transaction->frais * $config->taux_com_sup_retrait_cash / 100);
$transactionRetrait->commission_hyp = $transaction->frais - $transactionRetrait->commission_ag - $transactionRetrait->commission_sup;
$walletAgent->balance_princ += $transaction->montant_net;
$walletAgent->balance_com += $part_ag;
$walletSuperviseur->balance_com += $part_sup;
$walletHyperviseur->balance_com -= ($part_ag + $part_sup);
$transaction->status_retrait = 1;
$transaction->date_retrait = new \DateTime();
$walletAgent->balance_com += $transactionRetrait->commission_ag;
$walletSuperviseur->balance_com += $transactionRetrait->commission_sup;
$walletHyperviseur->balance_com -= ( $transactionRetrait->commission_ag + $transactionRetrait->commission_sup);
$transactionRetrait->status_retrait = $transaction->status_retrait = 1;
$transactionRetrait->date_retrait = $transaction->date_retrait = new \DateTime();
$transactionRetrait->date = new \DateTime();
$walletAgent->save();
$walletSuperviseur->save();
$walletHyperviseur->save();
$transaction->save();
return $this->successResponse(trans('messages.successful_transaction'));
$transactionRetrait->save();
$message = trans('messages.successful_agent_remove_cash',
['id_transaction' => $transactionRetrait->id_transaction, 'amount' => $this->toMoney($request->montant, $init_country),
'commission' => $this->toMoney($transactionRetrait->commission_ag, $init_country), 'code' => wordwrap($request->code_retrait, 4, ' ', true),
'id_transaction_retrait' => $transaction->id_transaction]);
$this->sendMail($agent->email, trans('messages.successful_transaction'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail'));
} else {
return $this->errorResponse('Montant de retrait incorrect');
return $this->errorResponse(trans('errors.incorrect_withdrawal_amount'));
}
} else {
return $this->errorResponse('Code de retrait invalide');
return $this->errorResponse(trans('errors.invalid_withdrawal_code'));
}
} else {
return $this->errorResponse('Retrait déjà éffectuée');
return $this->errorResponse(trans('errors.withdrawal_already_made'));
}
} else {
return $this->errorResponse('Cette transaction n\'existe pas', Response::HTTP_NOT_FOUND);
return $this->errorResponse(trans('errors.transaction_not_exist'), Response::HTTP_NOT_FOUND);
}
} else {
return $this->errorResponse(trans('messages.incorrect_user_password'));
@ -896,6 +912,28 @@ class iLinkTransactionController extends Controller
}
public function getTransactionRetrait(Request $request){
$this->validate($request, [
'id_transaction' =>'required',
]);
$transaction = WalletIlinkTransaction::select('nom_destinataire' , 'prenom_destinataire' ,'type_document_destinataire','id_document_destinataire' ,'type',
'id_wallet_user')->where('id_transaction',$request->id_transaction)->first();
if(!$transaction)
return $this->errorResponse(trans('errors.transaction_not_exist'), Response::HTTP_NOT_FOUND);
if ($transaction->status_retrait != 0)
return $this->errorResponse(trans('errors.withdrawal_already_made'));
$data = $transaction->replicate();
if($transaction->type == 9){
$data->nom_destinataire = $transaction->wallet_user->user->lastname;
$data->prenom_destinataire = $transaction->wallet_user->user->firstname;
$data->user_code = $transaction->wallet_user->user->user_code;
}
return $this->successResponse($data);
}
private function getPaliers(array $paliers, $type)
{

View File

@ -157,7 +157,7 @@ class WalletIlinkTransaction extends Model
return $this->belongsTo(Wallet::class, 'id_wallet_hyp_payeur');
}
public function wallets_user()
public function wallet_user()
{
return $this->belongsTo(WalletsUser::class, 'id_wallet_user');
}
@ -218,7 +218,7 @@ class WalletIlinkTransaction extends Model
public function remove_cash_rules(){
return [
'id_transaction' =>'required|integer|min:0|not_in:0',
'id_transaction' =>'required',
'code_retrait' =>'required|size:16',
];
}

View File

@ -13,5 +13,9 @@ return [
'insufficient_balance'=> 'The balance is insufficient to complete this transaction',
'no_ilink_network' => 'Sorry, there is no iLink World network in your country',
'wallet_country_not_match' => 'This recipient wallet code is not registered in the country :country',
'no_bank_card_attached' => 'No bank card is attached to your account'
'no_bank_card_attached' => 'No bank card is attached to your account',
'transaction_not_exist' => 'This transaction does not exist',
'withdrawal_already_made' => 'Withdrawal already made',
'invalid_withdrawal_code' => 'Invalid withdrawal code',
'incorrect_withdrawal_amount'=> 'Incorrect withdrawal amount',
];

View File

@ -85,7 +85,9 @@ Transaction information:
- Number : :id_transaction
- Amount of the transaction : :amount
- Fees and Taxes: :fees
- Country of departure: :init_country
- Net withdrawal amount : :net
- Country of destination: :init_country
- Issuer account : :sender_code
- Withdrawal code : :code',
'successful_user_remove_from_cart_to_wallet'=>'Withdrawing money from your card to your account
@ -102,7 +104,7 @@ Transaction information :
- Amount of the transaction: :amount
- Fees: :fees
- Net withdrawal amount: :net
- Issuer account : :sender_code
- User code : :sender_code
- Card number : :cart_number
- Withdrawal code : :code',
];

View File

@ -13,5 +13,9 @@ return [
'insufficient_balance'=> 'Le solde est insuffisant pour effectuer cette transaction',
'no_ilink_network' => 'Désolé , il n\'existe pas de reseau iLink World dans votre pays',
'wallet_country_not_match' => 'Ce code wallet destinataire n\'est pas enregistré dans le pays :country',
'no_bank_card_attached' => 'Aucune carte bancaire n\'est rattachée à votre compte'
'no_bank_card_attached' => 'Aucune carte bancaire n\'est rattachée à votre compte',
'transaction_not_exist' => 'Cette transaction n\'existe pas',
'withdrawal_already_made' => 'Retrait déjà éffectuée',
'invalid_withdrawal_code' => 'Code de retrait invalide',
'incorrect_withdrawal_amount'=> 'Montant de retrait incorrect',
];

View File

@ -85,7 +85,9 @@ Informations de la transaction :
- Numéro : :id_transaction
- Montant de la transaction : :amount
- Frais et Taxes: :fees
- Pays de départ : :init_country
- Montant net de retrait: :net
- Pays de destination : :init_country
- Compte émetteur : :sender_code
- Code de retrait : :code',
'successful_user_remove_from_cart_to_wallet'=>'Retrait d\'argent de votre carte vers votre compte
@ -102,7 +104,14 @@ Informations de la transaction :
- Montant de la transaction : :amount
- Frais : :fees
- Montant net de retrait: :net
- Compte émetteur : :sender_code
- Code utilisateur : :sender_code
- Numero de la carte : :cart_number
- Code de retrait : :code',
'successful_agent_remove_cash'=>'Retrait d\'argent
Informations de la transaction :
- Numéro : :id_transaction
- Montant de retrait : :amount
- Votre commission : :commission
- Numero de transaction de retrait : :id_transaction_retrait
- Code de retrait : :code'
];

View File

@ -33,6 +33,7 @@ $router->group(['prefix' => '/transactions'] , function () use ($router){
$router->post('commission','iLinkTransactionController@calculateCommission');
$router->get('user/{id_wallet_user}','iLinkTransactionController@lastUserTransactions');
$router->get('agent/{id_wallet_agent}','iLinkTransactionController@lastAgentTransactions');
$router->post('check_retraits','iLinkTransactionController@getTransactionRetrait');
});
});