From c6ae0cb47a56bc600867fed6faa7531ac119d2ed Mon Sep 17 00:00:00 2001 From: Djery-Tom Date: Fri, 19 Jun 2020 19:33:10 +0100 Subject: [PATCH] + Fix fetchIdentification bug --- app/Http/Controllers/HelperController.php | 4 +- app/Http/Controllers/UserController.php | 5 ++- .../iLinkTransactionController.php | 42 ++++++++++++++++++- app/Models/WalletIlinkTransaction.php | 32 ++++++++++++-- app/Traits/Helper.php | 8 ++++ resources/lang/fr/messages.php | 4 +- routes/web.php | 2 +- 7 files changed, 88 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/HelperController.php b/app/Http/Controllers/HelperController.php index 832fd04..7a93dcf 100755 --- a/app/Http/Controllers/HelperController.php +++ b/app/Http/Controllers/HelperController.php @@ -20,7 +20,9 @@ class HelperController extends Controller public function countries() { - $countries = DB::select('SELECT id , name FROM countries'); + $countries = DB::select('SELECT id , name , currency_code 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); } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index a0e4ff7..dc0296b 100755 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -79,10 +79,11 @@ class UserController extends Controller return $this->successResponse(trans('messages.validated_identification')); } - public function fetchIdentification($id_user) + public function fetchIdentification($user_phone) { // return Identification::where('id_user', $id_user)->firstOrFail(); - $identification = Identification::where('id_user', $id_user)->first(); + $user = User::where('phone', $user_phone)->firstOrFail(); + $identification = Identification::where('id_user', $user->id)->first(); $data['isIdentified'] = false; $data['isIdentifiedValidated'] = false; $data['data'] = $identification; diff --git a/app/Http/Controllers/iLinkTransactionController.php b/app/Http/Controllers/iLinkTransactionController.php index 7807a57..8042c2c 100755 --- a/app/Http/Controllers/iLinkTransactionController.php +++ b/app/Http/Controllers/iLinkTransactionController.php @@ -143,7 +143,8 @@ class iLinkTransactionController extends Controller $walletUser->balance += $montantDepot; $commisionAgent = floatval($frais * $config->taux_com_ag_envoi_cash / 100); $commisionSuper = floatval($frais * $config->taux_com_sup_envoi_cash / 100); - $commisionHyper = floatval($frais * $config->taux_com_ag_envoi_cash / 100); + $commisionHyper = floatval($frais * $config->taux_com_hyp_envoi_cash / 100); + $walletAgent->balance_princ -= $transaction->montant; $walletAgent->balance_com += $commisionAgent; $transaction->commission_ag = $commisionAgent; $walletSuperviseur->balance_com += $commisionSuper; @@ -215,6 +216,9 @@ class iLinkTransactionController extends Controller $transaction->id_wallet_hyp = $walletHyperviseur->id; $transaction->frais = $frais; $transaction->date = new \DateTime(); + $walletAgent->save(); + $walletSuperviseur->save(); + $walletHyperviseur->save(); $transaction->save(); return $this->successResponse(trans('messages.successful_transaction')); @@ -223,7 +227,43 @@ class iLinkTransactionController extends Controller } break; case 17: // Agent - Envoi de cash vers cash + $this->validate($request, $transaction->cash_cash_rules()); + $frais = ($request->init_country != $request->final_country)? $this->calculateFees($plr_agent_cash_cash, $request->montant) : $this->calculateFees($plr_agent_cash_cash_national, $request->montant); + $taxe = ($request->init_country != $request->final_country) ? $this->calculateTax($taxesInternationales , $frais) : $this->calculateTax($taxesNationales ,$frais); + $montantRetrait = $request->montant - $frais - $taxe; + $commisionAgent = floatval( $frais * $config->taux_com_ag_envoi_cash / 100) ; + $commisionSuper = floatval( $frais * $config->taux_com_sup_envoi_cash / 100) ; + $commisionHyper = floatval( $frais * $config->taux_com_hyp_envoi_cash / 100); + + $transaction->montant_retrait = $montantRetrait; + $walletAgent->balance_com += $commisionAgent; + $transaction->commission_ag = $commisionAgent; + $walletSuperviseur->balance_com += $commisionSuper; + $transaction->commission_sup = $commisionSuper; + $walletHyperviseur->balance_com += $commisionHyper; + $transaction->commission_hyp = $commisionHyper; + $transaction->id_wallet_ag = $walletAgent->id; + $transaction->id_wallet_sup = $walletSuperviseur->id; + $transaction->id_wallet_hyp = $walletHyperviseur->id; + + $code_retrait = $this->random_string(); + $hash = $this->hashSSHA($code_retrait); + $transaction->encrypted_code_retrait = $hash['encrypted']; + $transaction->code_retrait_salt = $hash['salt']; + + $walletAgent->balance_princ -= $transaction->montant; + $transaction->frais = $frais; + $transaction->taxe = $taxe; + $transaction->date = new \DateTime(); + $transaction->status_retrait = 0; + $walletAgent->save(); + $walletSuperviseur->save(); + $walletHyperviseur->save(); + $transaction->save(); + $this->sendMail($request->email_emetteur, trans('messages.successful_transaction'), trans('messages.successful_send_cash',['montant'=> $montantRetrait, + 'code'=> $code_retrait])); + return $this->successResponse(trans('messages.successful_transaction')); break; case 18: // Agent - Envoi de cash vers banque // Indisponible diff --git a/app/Models/WalletIlinkTransaction.php b/app/Models/WalletIlinkTransaction.php index ba7d2bb..6cf96d1 100644 --- a/app/Models/WalletIlinkTransaction.php +++ b/app/Models/WalletIlinkTransaction.php @@ -15,7 +15,8 @@ use Illuminate\Database\Eloquent\Model; * @property int $id * @property float $montant * @property float $montant_retrait - * @property string $code_retrait + * @property string $encrypted_code_retrait + * @property string $code_retrait_salt * @property int $status_retrait * @property string $id_destinataire * @property string $type_id_destinataire @@ -26,6 +27,9 @@ use Illuminate\Database\Eloquent\Model; * @property string $prenom_destinataire * @property string $nom_emetteur * @property string $prenom_emetteur + * @property string $email_emetteur + * @property string $type_document_emetteur + * @property string $id_type_document_emetteur * @property float $frais * @property float $taxe * @property string $numero_carte @@ -86,7 +90,8 @@ class WalletIlinkTransaction extends Model protected $fillable = [ 'montant', 'montant_retrait', - 'code_retrait', + 'encrypted_code_retrait', + 'code_retrait_salt', 'status_retrait', 'id_destinataire', 'type_id_destinataire', @@ -97,6 +102,9 @@ class WalletIlinkTransaction extends Model 'prenom_destinataire', 'nom_emetteur', 'prenom_emetteur', + 'email_emetteur', + 'type_document_emetteur', + 'id_type_document_emetteur', 'frais', 'taxe', 'numero_carte', @@ -141,7 +149,7 @@ class WalletIlinkTransaction extends Model return $this->belongsTo(Network::class, 'network_destinataire'); } - // Regles de validation +// Regles de validation //Envoi de cash vers wallet iLink public function first_rules() { @@ -163,4 +171,22 @@ class WalletIlinkTransaction extends Model 'expiration_date'=>'required_if:facade,front|date_format:m/y|after_or_equal:today', ]; } + + public function cash_cash_rules() + { + return [ + 'init_country' =>'required|integer|min:0|not_in:0', + 'final_country' =>'required|integer|min:0|not_in:0', + 'nom_emetteur'=>'required', + 'prenom_emetteur'=>'required', + 'email_emetteur'=>'required', + 'type_document_emetteur'=>'required', + 'id_document_emetteur'=>'required', + 'nom_destinataire'=>'required', + 'prenom_destinataire'=>'required', + 'type_document_destinataire'=>'required', + 'id_document_destinataire'=>'required', + 'montant'=> 'required|numeric|min:0|not_in:0' + ]; + } } diff --git a/app/Traits/Helper.php b/app/Traits/Helper.php index dc72672..c885025 100644 --- a/app/Traits/Helper.php +++ b/app/Traits/Helper.php @@ -23,4 +23,12 @@ trait Helper $encrypted_password_to_check = base64_encode(sha1($password . $salt, true) . $salt); return $encrypted_password_to_check == $encrypted_password; } + + public function hashSSHA($string) { + $salt = sha1(rand()); + $salt = substr($salt, 0, 10); + $encrypted = base64_encode(sha1($string . $salt, true) . $salt); + $hash = array("salt" => $salt, "encrypted" => $encrypted); + return $hash; + } } diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php index 016f17e..f8d5682 100755 --- a/resources/lang/fr/messages.php +++ b/resources/lang/fr/messages.php @@ -28,5 +28,7 @@ Bienvenue dans la famille iLink World !!! Cordialement, Equipe iLinkWorld.', - 'successful_deposit_ilink' => 'Votre compte ilink a été rechargé d\'un montant de :montant' + 'successful_deposit_ilink' => 'Votre compte ilink a été rechargé d\'un montant de :montant', + 'successful_send_cash' => 'Vous avez envoyé une somme de :montant . + Code de retrait : :code', ]; diff --git a/routes/web.php b/routes/web.php index 12a6af0..958ce5b 100755 --- a/routes/web.php +++ b/routes/web.php @@ -54,7 +54,7 @@ $router->group(['prefix' => '/wallets'] , function () use ($router){ $router->group(['prefix' => '/identifications'] , function () use ($router){ $router->post('','UserController@identification'); $router->post('{id_identification}','UserController@validateIdentification'); - $router->get('{id_user}','UserController@fetchIdentification'); + $router->get('{user_phone}','UserController@fetchIdentification'); $router->get('verify/{user_phone}','UserController@verifyIdentification'); });