From d99f782062402abe5b2bf5992074d30e69161f01 Mon Sep 17 00:00:00 2001 From: DJERY-TOM Date: Wed, 9 Sep 2020 08:30:15 +0100 Subject: [PATCH] Savings history and Sharing rates on nano crdit refunding --- app/Http/Controllers/NanoCreditController.php | 66 ++++++++++++++----- app/Models/ConfigWallet.php | 13 +++- resources/lang/en/messages.php | 7 ++ resources/lang/fr/messages.php | 9 ++- routes/web.php | 3 +- 5 files changed, 79 insertions(+), 19 deletions(-) diff --git a/app/Http/Controllers/NanoCreditController.php b/app/Http/Controllers/NanoCreditController.php index dec565b..b9b1084 100755 --- a/app/Http/Controllers/NanoCreditController.php +++ b/app/Http/Controllers/NanoCreditController.php @@ -160,8 +160,8 @@ class NanoCreditController extends Controller $message = trans('messages.successful_user_group_nano_credit_demand', ['id_demand' => $demande_credit->id_demande, 'amount' => $this->toMoney($montant_total, $init_country), 'duration' => $demande_credit->duree_mois, - 'net' => $this->toMoney($demande_credit->montant, $init_country), 'fees' => $this->toMoney($demande_credit->interet + $demande_credit->taxe, $init_country), - 'date' => $demande_credit->date_remboursement_prevu]); + 'net' => $this->toMoney($demande_credit->montant, $init_country), 'fees' => $this->toMoney($demande_credit->interet , $init_country), + 'date' => $demande_credit->date_remboursement_prevu , 'tax' => $this->toMoney($demande_credit->taxe, $init_country)]); $this->sendMail($user->email, trans('messages.successful_nano_credit_demand'), $message); return $this->successResponse($message . trans('messages.sent_by_mail')); } @@ -181,7 +181,8 @@ class NanoCreditController extends Controller $message = trans('messages.successful_user_individual_nano_credit_demand', ['id_demand' => $demande_credit->id_demande, 'amount' => $this->toMoney($montant_total, $init_country), 'net' => $this->toMoney($demande_credit->montant, $init_country), 'duration' => $demande_credit->duree_mois, - 'fees' => $this->toMoney($demande_credit->interet + $demande_credit->taxe, $init_country),]); + 'fees' => $this->toMoney($demande_credit->interet, $init_country), + 'tax' => $this->toMoney($demande_credit->taxe, $init_country)]); $this->sendMail($user->email, trans('messages.successful_nano_credit_demand'), $message); return $this->successResponse($message . trans('messages.sent_by_mail')); } @@ -194,6 +195,12 @@ class NanoCreditController extends Controller return $this->successResponse($demandes); } + public function getSavingsDemands($id_user) + { + $savings = DB::select('SELECT * FROM infos_users_epargnes WHERE id_user = :id;', ['id' => $id_user]); + return $this->successResponse($savings); + } + // Cautionner une demande de credit public function guaranteeCredit(Request $request) { @@ -257,12 +264,14 @@ class NanoCreditController extends Controller $user_message = trans('messages.successful_guarantee_user_individual_nano_credit_demand', ['id_demand' => $demande_credit->id_demande, 'amount' => $this->toMoney($montant_total, $agent_country), 'duration' => $demande_credit->duree_mois, - 'net' => $this->toMoney($demande_credit->montant, $agent_country), 'fees' => $this->toMoney($demande_credit->interet + $demande_credit->taxe, $agent_country), + 'net' => $this->toMoney($demande_credit->montant, $agent_country), 'fees' => $this->toMoney($demande_credit->interet, $agent_country), + 'tax' => $this->toMoney($demande_credit->taxe, $agent_country), 'date' => $demande_credit->date_remboursement_prevu, 'agent_name' => $agent->lastname . ' ' . $agent->firstname, 'code_agent' => $agent->code_membre]); $agent_message = trans('messages.successful_guarantee_agent_individual_nano_credit_demand', ['id_demand' => $demande_credit->id_demande, 'amount' => $this->toMoney($montant_total, $agent_country), 'duration' => $demande_credit->duree_mois, - 'net' => $this->toMoney($demande_credit->montant, $agent_country), 'fees' => $this->toMoney($demande_credit->interet + $demande_credit->taxe, $agent_country), + 'net' => $this->toMoney($demande_credit->montant, $agent_country), 'fees' => $this->toMoney($demande_credit->interet, $agent_country), + 'tax' => $this->toMoney($demande_credit->taxe, $agent_country), 'date' => $demande_credit->date_remboursement_prevu, 'user_name' => $user->lastname . ' ' . $user->firstname, 'code_user' => $user->user_code]); $this->sendMail($user->email, trans('messages.successful_guarantee_nano_credit_demand'), $user_message); @@ -302,11 +311,30 @@ class NanoCreditController extends Controller $demande_credit->etat = 'REMBOURSE'; if ($demande_credit->type_caution == 'individuel') { - $walletAgent = Wallet::findOrFail($demande_credit->id_wallet_agent); - // Repartition des interet entre agents -// $walletHyper->balance_com += $demande_credit->interet; + + $walletAgent = Wallet::findOrFail($demande_credit->id_wallet_agent); + $network_agent = NetworksAgent::findOrFail($walletAgent->id_networkAgent); + + $config = ConfigWallet::where('id_network', $network_agent->network_id)->firstOrFail(); + + // Recuperation des wallets hyperviseur et superviseur + $codeGenerer = CodeGenerer::findOrFail($network_agent->codeGenerer_id); + $superviseur = AgentPlus::where('code_membre', $codeGenerer->code_parrain)->firstOrFail(); + $hyperviseur = AgentPlus::where('code_membre', $superviseur->code_parrain)->firstOrFail(); + + $wallet_agent_sup = WalletAgent::where('agent_id', $superviseur->id)->firstOrFail(); + $wallet_agent_hyp = WalletAgent::where('agent_id', $hyperviseur->id)->firstOrFail(); + $walletSuperviseur = Wallet::findOrFail($wallet_agent_sup->wallet_id); + $walletHyperviseur = Wallet::findOrFail($wallet_agent_hyp->wallet_id); + + $walletAgent->balance_com += floatval($demande_credit->interet * $config->taux_com_ag_nano_credit /100 ) ; + $walletSuperviseur->balance_com += floatval($demande_credit->interet * $config->taux_com_sup_nano_credit /100) ; + $walletHyperviseur->balance_com += floatval($demande_credit->interet * $config->taux_com_hyp_nano_credit /100 ) ; + $walletAgent->save(); + $walletSuperviseur->save(); + $walletHyperviseur->save(); } if ($demande_credit->type_caution == 'groupe') { @@ -328,7 +356,8 @@ class NanoCreditController extends Controller $message = trans('messages.successful_nano_credit_demand_refunded', ['id_demand' => $demande_credit->id_demande, 'amount' => $this->toMoney($montant_total, $init_country), 'duration' => $demande_credit->duree_mois, - 'net' => $this->toMoney($demande_credit->montant, $init_country), 'fees' => $this->toMoney($demande_credit->interet + $demande_credit->taxe, $init_country), + 'net' => $this->toMoney($demande_credit->montant, $init_country), 'fees' => $this->toMoney($demande_credit->interet, $init_country), + 'tax' => $this->toMoney($demande_credit->taxe, $init_country), 'caution' => $demande_credit->type_caution == 'groupe' ? 'Groupe' : 'Individuel']); $this->sendMail($user->email, trans('messages.successful_nano_credit_refunded'), $message); return $this->successResponse($message . trans('messages.sent_by_mail')); @@ -349,10 +378,15 @@ class NanoCreditController extends Controller } // Recuperer les durees en mois - public function getDurations($id_user) + public function getDurations(Request $request) { - $user = User::findOrFail($id_user); + $this->validate($request , [ + 'type' => 'required|in:nano_credit,epargne', + 'id_user' => 'required|integer|min:0|not_in:0', + ]); + + $user = User::findOrFail($request->id_user); $init_country = $user->network->country->id; $result = ConfigWallet::join('networks', 'networks.id', '=', 'configWallet.id_network') @@ -368,8 +402,8 @@ class NanoCreditController extends Controller if (!$config->has_nano_credit) return $this->errorResponse(trans('errors.nano_credit_not_available')); - $paliers = array_values(array_filter($config->paliers_config_nano_credits->all(), function ($taux) { - return $taux->type == 'nano_credit'; + $paliers = array_values(array_filter($config->paliers_config_nano_credits->all(), function ($taux) use ($request) { + return $taux->type == $request->type; })); $mois = array_map(function ($palier) { @@ -459,7 +493,8 @@ class NanoCreditController extends Controller $message = trans('messages.successful_saving') . trans($request->type == 'blocked' ? 'messages.successful_blocked_saving_details' : 'messages.successful_simple_saving_details', ['id_saving' => $saving->id_epargne, 'amount' => $this->toMoney($montant_total, $init_country), 'type' => $saving->type, - 'net' => $this->toMoney($saving->montant, $init_country), 'fees' => $this->toMoney($saving->interet - $saving->taxe, $init_country), + 'net' => $this->toMoney($saving->montant, $init_country), 'fees' => $this->toMoney($saving->interet, $init_country), + 'tax' => $this->toMoney($saving->taxe, $init_country), 'date' => $saving->date_fin, 'duration' => $saving->duree_mois]); $this->sendMail($user->email, trans('messages.successful_saving'), $message); return $this->successResponse($message . trans('messages.sent_by_mail')); @@ -503,7 +538,8 @@ class NanoCreditController extends Controller $message = trans('messages.successful_broken_saving') . trans($saving->type == 'BLOQUE' ? 'messages.successful_blocked_saving_details' : 'messages.successful_simple_saving_details', ['id_saving' => $saving->id_epargne, 'amount' => $this->toMoney($montant_total, $init_country), 'type' => $saving->type, - 'net' => $this->toMoney($saving->montant, $init_country), 'fees' => $this->toMoney($saving->interet - $saving->taxe, $init_country), + 'net' => $this->toMoney($saving->montant, $init_country), 'fees' => $this->toMoney($saving->interet, $init_country), + 'tax' => $this->toMoney($saving->taxe, $init_country), 'date' => $saving->date_fin, 'duration' => $saving->duree_mois]); $this->sendMail($user->email, trans('messages.successful_broken_saving'), $message); diff --git a/app/Models/ConfigWallet.php b/app/Models/ConfigWallet.php index 17eade1..bcb5e8a 100755 --- a/app/Models/ConfigWallet.php +++ b/app/Models/ConfigWallet.php @@ -51,6 +51,9 @@ use Illuminate\Database\Eloquent\Model; * @property int $has_nano_credit * @property float $limite_credit_min * @property float $limite_credit_max + * @property float $taux_com_ag_nano_credit + * @property float $taux_com_sup_nano_credit + * @property float $taux_com_hyp_nano_credit * * @property Network $network * @property Collection|PaliersConfigWallet[] $paliers_config_wallets @@ -101,7 +104,10 @@ class ConfigWallet extends Model 'taux_com_banque_envoi_wallet_carte_ilink' => 'float', 'has_nano_credit' => 'int', 'limite_credit_min' => 'float', - 'limite_credit_max' => 'float' + 'limite_credit_max' => 'float', + 'taux_com_ag_nano_credit'=> 'float', + 'taux_com_sup_nano_credit'=> 'float', + 'taux_com_hyp_nano_credit'=> 'float', ]; protected $fillable = [ @@ -142,7 +148,10 @@ class ConfigWallet extends Model 'type', 'has_nano_credit', 'limite_credit_min', - 'limite_credit_max' + 'limite_credit_max', + 'taux_com_ag_nano_credit', + 'taux_com_sup_nano_credit', + 'taux_com_hyp_nano_credit' ]; public function network() diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php index 9620eae..13345c7 100755 --- a/resources/lang/en/messages.php +++ b/resources/lang/en/messages.php @@ -163,6 +163,7 @@ Request Information: - Type of deposit: Group - Credit amount: :amount - Interests : :fees + - Taxes : :tax - Net amount received: :net - Duration (in months) : :duration - Redemption date: :date @@ -175,6 +176,7 @@ Request Information: - Type of deposit: Individual - Credit amount: :amount - Interests : :fees + - Taxes : :tax - Net amount to be collected: :net - Duration (in months) : :duration @@ -185,6 +187,7 @@ Request Information: - Type of deposit: Individual - Credit amount: :amount - Interests : :fees + - Taxes : :tax - Net amount received: :net - Duration (in months) : :duration - Redemption date: :date @@ -196,6 +199,7 @@ Request Information: - Type of deposit: Individual - Credit amount: :amount - Interests : :fees + - Taxes : :tax - Net amount received: :net - Duration (in months) : :duration - Redemption date: :date @@ -211,6 +215,7 @@ Request Information: - Type of deposit: :deposit - Credit amount: :amount - Interests : :fees + - Taxes : :tax - Net amount received: :net", 'successful_accepted_group_membership_request' => "Membership request accepted", 'successful_canceled_group_membership_request' => "Membership request refused", @@ -224,6 +229,7 @@ Savings Information : - Type : :type - Amount at cassation : :amount - Interests : :fees + - Taxes : :tax - Net amount saved : :net - Duration (in months) : :duration - End date : :date", @@ -233,6 +239,7 @@ Savings Information : - Type : :type - Amount at cassation : :amount - Interests : :fees + - Taxes : :tax - Net amount saved : :net", "successful_broken_saving" => "Broken savings", ]; diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php index b7c2698..c00f700 100755 --- a/resources/lang/fr/messages.php +++ b/resources/lang/fr/messages.php @@ -163,6 +163,7 @@ Informations de la demande : - Type de caution : Groupe - Montant du crédit : :amount - Intérêts : :fees + - Taxes : :tax - Montant net percu: :net - Duréé (en mois) : :duration - Date de remboursement : :date @@ -175,6 +176,7 @@ Informations de la demande : - Type de caution : Individuel - Montant du crédit : :amount - Intérêts : :fees + - Taxes : :tax - Montant net à percevoir : :net - Duréé (en mois) : :duration @@ -185,6 +187,7 @@ Informations de la demande : - Type de caution : Individuel - Montant du crédit : :amount - Intérêts : :fees + - Taxes : :tax - Montant net percu : :net - Duréé (en mois) : :duration - Date de remboursement : :date @@ -196,6 +199,7 @@ Informations de la demande : - Type de caution : Individuel - Montant du crédit : :amount - Intérêts : :fees + - Taxes : :tax - Montant net à percu : :net - Duréé (en mois) : :duration - Date de remboursement : :date @@ -210,7 +214,8 @@ Informations de la demande : - Numéro de la demande : :id_demand - Type de caution : :caution - Montant du crédit : :amount - - Frais : :fees + - Intérêts : :fees + - Taxes : :tax - Montant net percu : :net", 'successful_accepted_group_membership_request' => "Demande d'adhésion acceptée", 'successful_canceled_group_membership_request' => "Demande d'adhésion refusée", @@ -224,6 +229,7 @@ Informations sur l'epargne : - Type : :type - Montant lors de la cassation : :amount - Intérêts : :fees + - Taxes : :tax - Montant net epargné : :net - Duréé (en mois) : :duration - Date de fin : :date @@ -234,6 +240,7 @@ Informations sur l'epargne : - Type : :type - Montant lors de la cassation : :amount - Intérêts : :fees + - Taxes : :tax - Montant net epargné : :net ", "successful_broken_saving" => "Epargne cassée", diff --git a/routes/web.php b/routes/web.php index 3272bd9..8aa99d1 100755 --- a/routes/web.php +++ b/routes/web.php @@ -91,7 +91,7 @@ $router->group(['prefix' => '/groups'], function () use ($router) { $router->post('ask', 'NanoCreditController@askNanoCredit'); $router->post('guarantee', 'NanoCreditController@guaranteeCredit'); $router->post('refund', 'NanoCreditController@refundCredit'); - $router->get('durations/{id_user}', 'NanoCreditController@getDurations'); + $router->post('durations', 'NanoCreditController@getDurations'); $router->get('demands/{id_user}', 'NanoCreditController@getNanoCreditsDemands'); $router->get('details/{id_demand}', 'NanoCreditController@getInfosNanoCredit'); @@ -99,6 +99,7 @@ $router->group(['prefix' => '/groups'], function () use ($router) { $router->post('make', 'NanoCreditController@makeSavings'); $router->post('break', 'NanoCreditController@breakSavings'); $router->get('details/{id_saving}', 'NanoCreditController@getInfosSavings'); + $router->get('demands/{id_user}', 'NanoCreditController@getSavingsDemands'); }); }); });