Savings history and Sharing rates on nano crdit refunding

This commit is contained in:
DJERY-TOM 2020-09-09 08:30:15 +01:00
parent 06b5e9ef0d
commit d99f782062
5 changed files with 79 additions and 19 deletions

View File

@ -160,8 +160,8 @@ class NanoCreditController extends Controller
$message = trans('messages.successful_user_group_nano_credit_demand', $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, ['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),
'date' => $demande_credit->date_remboursement_prevu]); '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); $this->sendMail($user->email, trans('messages.successful_nano_credit_demand'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail')); 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', $message = trans('messages.successful_user_individual_nano_credit_demand',
['id_demand' => $demande_credit->id_demande, 'amount' => $this->toMoney($montant_total, $init_country), ['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, '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); $this->sendMail($user->email, trans('messages.successful_nano_credit_demand'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail')); return $this->successResponse($message . trans('messages.sent_by_mail'));
} }
@ -194,6 +195,12 @@ class NanoCreditController extends Controller
return $this->successResponse($demandes); 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 // Cautionner une demande de credit
public function guaranteeCredit(Request $request) public function guaranteeCredit(Request $request)
{ {
@ -257,12 +264,14 @@ class NanoCreditController extends Controller
$user_message = trans('messages.successful_guarantee_user_individual_nano_credit_demand', $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, ['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]); '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', $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, ['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]); '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); $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'; $demande_credit->etat = 'REMBOURSE';
if ($demande_credit->type_caution == 'individuel') { if ($demande_credit->type_caution == 'individuel') {
$walletAgent = Wallet::findOrFail($demande_credit->id_wallet_agent);
// Repartition des interet entre agents // 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(); $walletAgent->save();
$walletSuperviseur->save();
$walletHyperviseur->save();
} }
if ($demande_credit->type_caution == 'groupe') { if ($demande_credit->type_caution == 'groupe') {
@ -328,7 +356,8 @@ class NanoCreditController extends Controller
$message = trans('messages.successful_nano_credit_demand_refunded', $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, ['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']); 'caution' => $demande_credit->type_caution == 'groupe' ? 'Groupe' : 'Individuel']);
$this->sendMail($user->email, trans('messages.successful_nano_credit_refunded'), $message); $this->sendMail($user->email, trans('messages.successful_nano_credit_refunded'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail')); return $this->successResponse($message . trans('messages.sent_by_mail'));
@ -349,10 +378,15 @@ class NanoCreditController extends Controller
} }
// Recuperer les durees en mois // 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; $init_country = $user->network->country->id;
$result = ConfigWallet::join('networks', 'networks.id', '=', 'configWallet.id_network') $result = ConfigWallet::join('networks', 'networks.id', '=', 'configWallet.id_network')
@ -368,8 +402,8 @@ class NanoCreditController extends Controller
if (!$config->has_nano_credit) if (!$config->has_nano_credit)
return $this->errorResponse(trans('errors.nano_credit_not_available')); return $this->errorResponse(trans('errors.nano_credit_not_available'));
$paliers = array_values(array_filter($config->paliers_config_nano_credits->all(), function ($taux) { $paliers = array_values(array_filter($config->paliers_config_nano_credits->all(), function ($taux) use ($request) {
return $taux->type == 'nano_credit'; return $taux->type == $request->type;
})); }));
$mois = array_map(function ($palier) { $mois = array_map(function ($palier) {
@ -459,7 +493,8 @@ class NanoCreditController extends Controller
$message = trans('messages.successful_saving') . trans($request->type == 'blocked' ? $message = trans('messages.successful_saving') . trans($request->type == 'blocked' ?
'messages.successful_blocked_saving_details' : 'messages.successful_simple_saving_details', '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, ['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]); 'date' => $saving->date_fin, 'duration' => $saving->duree_mois]);
$this->sendMail($user->email, trans('messages.successful_saving'), $message); $this->sendMail($user->email, trans('messages.successful_saving'), $message);
return $this->successResponse($message . trans('messages.sent_by_mail')); 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' ? $message = trans('messages.successful_broken_saving') . trans($saving->type == 'BLOQUE' ?
'messages.successful_blocked_saving_details' : 'messages.successful_simple_saving_details', '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, ['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]); 'date' => $saving->date_fin, 'duration' => $saving->duree_mois]);
$this->sendMail($user->email, trans('messages.successful_broken_saving'), $message); $this->sendMail($user->email, trans('messages.successful_broken_saving'), $message);

View File

@ -51,6 +51,9 @@ use Illuminate\Database\Eloquent\Model;
* @property int $has_nano_credit * @property int $has_nano_credit
* @property float $limite_credit_min * @property float $limite_credit_min
* @property float $limite_credit_max * @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 Network $network
* @property Collection|PaliersConfigWallet[] $paliers_config_wallets * @property Collection|PaliersConfigWallet[] $paliers_config_wallets
@ -101,7 +104,10 @@ class ConfigWallet extends Model
'taux_com_banque_envoi_wallet_carte_ilink' => 'float', 'taux_com_banque_envoi_wallet_carte_ilink' => 'float',
'has_nano_credit' => 'int', 'has_nano_credit' => 'int',
'limite_credit_min' => 'float', '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 = [ protected $fillable = [
@ -142,7 +148,10 @@ class ConfigWallet extends Model
'type', 'type',
'has_nano_credit', 'has_nano_credit',
'limite_credit_min', '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() public function network()

View File

@ -163,6 +163,7 @@ Request Information:
- Type of deposit: Group - Type of deposit: Group
- Credit amount: :amount - Credit amount: :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount received: :net - Net amount received: :net
- Duration (in months) : :duration - Duration (in months) : :duration
- Redemption date: :date - Redemption date: :date
@ -175,6 +176,7 @@ Request Information:
- Type of deposit: Individual - Type of deposit: Individual
- Credit amount: :amount - Credit amount: :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount to be collected: :net - Net amount to be collected: :net
- Duration (in months) : :duration - Duration (in months) : :duration
@ -185,6 +187,7 @@ Request Information:
- Type of deposit: Individual - Type of deposit: Individual
- Credit amount: :amount - Credit amount: :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount received: :net - Net amount received: :net
- Duration (in months) : :duration - Duration (in months) : :duration
- Redemption date: :date - Redemption date: :date
@ -196,6 +199,7 @@ Request Information:
- Type of deposit: Individual - Type of deposit: Individual
- Credit amount: :amount - Credit amount: :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount received: :net - Net amount received: :net
- Duration (in months) : :duration - Duration (in months) : :duration
- Redemption date: :date - Redemption date: :date
@ -211,6 +215,7 @@ Request Information:
- Type of deposit: :deposit - Type of deposit: :deposit
- Credit amount: :amount - Credit amount: :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount received: :net", - Net amount received: :net",
'successful_accepted_group_membership_request' => "Membership request accepted", 'successful_accepted_group_membership_request' => "Membership request accepted",
'successful_canceled_group_membership_request' => "Membership request refused", 'successful_canceled_group_membership_request' => "Membership request refused",
@ -224,6 +229,7 @@ Savings Information :
- Type : :type - Type : :type
- Amount at cassation : :amount - Amount at cassation : :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount saved : :net - Net amount saved : :net
- Duration (in months) : :duration - Duration (in months) : :duration
- End date : :date", - End date : :date",
@ -233,6 +239,7 @@ Savings Information :
- Type : :type - Type : :type
- Amount at cassation : :amount - Amount at cassation : :amount
- Interests : :fees - Interests : :fees
- Taxes : :tax
- Net amount saved : :net", - Net amount saved : :net",
"successful_broken_saving" => "Broken savings", "successful_broken_saving" => "Broken savings",
]; ];

View File

@ -163,6 +163,7 @@ Informations de la demande :
- Type de caution : Groupe - Type de caution : Groupe
- Montant du crédit : :amount - Montant du crédit : :amount
- Intérêts : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net percu: :net - Montant net percu: :net
- Duréé (en mois) : :duration - Duréé (en mois) : :duration
- Date de remboursement : :date - Date de remboursement : :date
@ -175,6 +176,7 @@ Informations de la demande :
- Type de caution : Individuel - Type de caution : Individuel
- Montant du crédit : :amount - Montant du crédit : :amount
- Intérêts : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net à percevoir : :net - Montant net à percevoir : :net
- Duréé (en mois) : :duration - Duréé (en mois) : :duration
@ -185,6 +187,7 @@ Informations de la demande :
- Type de caution : Individuel - Type de caution : Individuel
- Montant du crédit : :amount - Montant du crédit : :amount
- Intérêts : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net percu : :net - Montant net percu : :net
- Duréé (en mois) : :duration - Duréé (en mois) : :duration
- Date de remboursement : :date - Date de remboursement : :date
@ -196,6 +199,7 @@ Informations de la demande :
- Type de caution : Individuel - Type de caution : Individuel
- Montant du crédit : :amount - Montant du crédit : :amount
- Intérêts : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net à percu : :net - Montant net à percu : :net
- Duréé (en mois) : :duration - Duréé (en mois) : :duration
- Date de remboursement : :date - Date de remboursement : :date
@ -210,7 +214,8 @@ Informations de la demande :
- Numéro de la demande : :id_demand - Numéro de la demande : :id_demand
- Type de caution : :caution - Type de caution : :caution
- Montant du crédit : :amount - Montant du crédit : :amount
- Frais : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net percu : :net", - Montant net percu : :net",
'successful_accepted_group_membership_request' => "Demande d'adhésion acceptée", 'successful_accepted_group_membership_request' => "Demande d'adhésion acceptée",
'successful_canceled_group_membership_request' => "Demande d'adhésion refusée", 'successful_canceled_group_membership_request' => "Demande d'adhésion refusée",
@ -224,6 +229,7 @@ Informations sur l'epargne :
- Type : :type - Type : :type
- Montant lors de la cassation : :amount - Montant lors de la cassation : :amount
- Intérêts : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net epargné : :net - Montant net epargné : :net
- Duréé (en mois) : :duration - Duréé (en mois) : :duration
- Date de fin : :date - Date de fin : :date
@ -234,6 +240,7 @@ Informations sur l'epargne :
- Type : :type - Type : :type
- Montant lors de la cassation : :amount - Montant lors de la cassation : :amount
- Intérêts : :fees - Intérêts : :fees
- Taxes : :tax
- Montant net epargné : :net - Montant net epargné : :net
", ",
"successful_broken_saving" => "Epargne cassée", "successful_broken_saving" => "Epargne cassée",

View File

@ -91,7 +91,7 @@ $router->group(['prefix' => '/groups'], function () use ($router) {
$router->post('ask', 'NanoCreditController@askNanoCredit'); $router->post('ask', 'NanoCreditController@askNanoCredit');
$router->post('guarantee', 'NanoCreditController@guaranteeCredit'); $router->post('guarantee', 'NanoCreditController@guaranteeCredit');
$router->post('refund', 'NanoCreditController@refundCredit'); $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('demands/{id_user}', 'NanoCreditController@getNanoCreditsDemands');
$router->get('details/{id_demand}', 'NanoCreditController@getInfosNanoCredit'); $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('make', 'NanoCreditController@makeSavings');
$router->post('break', 'NanoCreditController@breakSavings'); $router->post('break', 'NanoCreditController@breakSavings');
$router->get('details/{id_saving}', 'NanoCreditController@getInfosSavings'); $router->get('details/{id_saving}', 'NanoCreditController@getInfosSavings');
$router->get('demands/{id_user}', 'NanoCreditController@getSavingsDemands');
}); });
}); });
}); });