diff --git a/app/Http/Controllers/HelperController.php b/app/Http/Controllers/HelperController.php index 95bb607..a013892 100755 --- a/app/Http/Controllers/HelperController.php +++ b/app/Http/Controllers/HelperController.php @@ -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 ( 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 );'); diff --git a/app/Http/Controllers/iLinkTransactionController.php b/app/Http/Controllers/iLinkTransactionController.php index 50a0b17..a9815b6 100755 --- a/app/Http/Controllers/iLinkTransactionController.php +++ b/app/Http/Controllers/iLinkTransactionController.php @@ -137,13 +137,13 @@ class iLinkTransactionController extends Controller $transaction->part_reseau_emetteur = $frais; } $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') { $destinataire = User::where('user_code', $request->id_destinataire)->first(); if ($destinataire) { // Si c'est un wallet ilink if ($destinataire->network->country->id == $request->final_country) { $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(); } else { $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(); if ($hyperviseurPayeur->id == $hyperviseur->id) { //Si c'est le reseau payeur est aussi emetteur $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; } else { $wallet_agent_hypPayeur = WalletAgent::where('agent_id', $hyperviseurPayeur->id)->firstOrFail(); $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; $walletHyperviseurPayeur->save(); } @@ -180,16 +180,13 @@ class iLinkTransactionController extends Controller $walletUser->save(); $reseauPayeur->save(); $transaction->save(); - $this->sendMail($user->email, trans('messages.successful_transaction'), 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), + $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), '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])); - return $this->successResponse(trans('messages.successful_user_send_to_wallet_2', - ['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), - '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]); + $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')); @@ -229,14 +226,12 @@ class iLinkTransactionController extends Controller $walletUser->save(); $transaction->id_transaction = $this->getTransactionID(); $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), '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)])); - return $this->successResponse(trans('messages.successful_user_send_to_cart_2', - ['amount' => $this->toMoney($transaction->montant, $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)]); + $this->sendMail($user->email, trans('messages.successful_transaction'), $message); + return $this->successResponse($message.trans('messages.sent_by_mail')); } else { return $this->errorResponse(trans('errors.visa_api_failed'), Response::HTTP_INTERNAL_SERVER_ERROR); @@ -247,7 +242,41 @@ class iLinkTransactionController extends Controller } break; 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; case 4: //User - Envoi de wallet à banque // Non disponible @@ -544,7 +573,7 @@ class iLinkTransactionController extends Controller $walletHyperviseur->save(); $transaction->save(); $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), '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)])); @@ -572,7 +601,7 @@ class iLinkTransactionController extends Controller END 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 - 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); } @@ -588,7 +617,7 @@ class iLinkTransactionController extends Controller END 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 - 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); } @@ -652,7 +681,7 @@ class iLinkTransactionController extends Controller $data['destinataire'] = $destinataire ? $destinataire->lastname . ' ' . $destinataire->firstname : $request->id_destinataire; $data['frais'] = $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); break; case 2: //User - Envoi de wallet à carte diff --git a/app/Models/WalletIlinkTransaction.php b/app/Models/WalletIlinkTransaction.php index fa3ef52..25acd55 100644 --- a/app/Models/WalletIlinkTransaction.php +++ b/app/Models/WalletIlinkTransaction.php @@ -212,7 +212,7 @@ class WalletIlinkTransaction extends Model 'code_retrait' =>'required|size:16', ]; } - + /// User Operation rules public function send_wallet_wallet_rules(){ return [ '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', ]; } + + 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', + ]; + } } diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php index ab36625..1b028f1 100755 --- a/resources/lang/en/messages.php +++ b/resources/lang/en/messages.php @@ -45,9 +45,9 @@ Transaction information: - Fees : :fees - Tax : :tax - 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 ID : :id_transaction + - ID : :id_transaction - Amount of the transaction : :amount - Fees + Taxes : :fees - Country of departure : :init_country @@ -56,33 +56,27 @@ Transaction information : - Net amount : :net_final - Issuer account : :sender_code - Recipient account : :receiver_code', - 'successful_user_send_to_wallet_2' => 'Money sent to a wallet. -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 + 'sent_by_mail' => ' This message was sent to the sender\'s email', 'successful_user_send_to_cart' => 'Sending money to a visa card made. Transaction information : - - Transaction ID : :id_transaction + - ID : :id_transaction - Amount of the transaction : :amount - Fees : :fees - Net shipping amount : :net - Issuer account :sender_code - 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 : - - Amount of the transaction : :amount - - Fees : :fees - - Net shipping amount : :net - - Issuer account :sender_code - - Recipient\'s card number: :cart_number - -This message was sent to the sender\'s email', + - Number: :id_transaction + - Amount of the transaction: :amount + - Fees and 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 names: :receiver_name. + - Withdrawal code: :code ', ]; diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php index 324695f..e572fa2 100755 --- a/resources/lang/fr/messages.php +++ b/resources/lang/fr/messages.php @@ -45,10 +45,10 @@ Informations de la transaction : - Frais : :fees - Taxe : :tax - 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 : - - Transaction ID : :id_transaction - - Montant de la transaction : :amount + - Numéro : :id_transaction + - Montant : :amount - Frais et Taxes : :fees - Pays de départ : :init_country - Montant net : :net_init @@ -56,8 +56,20 @@ Informations de la transaction : - Montant net : :net_final - Compte émetteur : :sender_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 : + - 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 - Frais et Taxes : :fees - Pays de départ : :init_country @@ -65,22 +77,6 @@ Informations de la transaction : - Pays de destination : :final_country - Montant net : :net_final - Compte émetteur : :sender_code - - Compte destinataire : :receiver_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', + - Noms du destinataire : :receiver_name. + - Code de retrait : :code', ];