+ Make and Broke savings
This commit is contained in:
parent
93b5c34821
commit
06b5e9ef0d
|
@ -29,6 +29,7 @@ MAIL_USERNAME=noreply@ilink-app.com
|
||||||
MAIL_PASSWORD=ilink2017GA
|
MAIL_PASSWORD=ilink2017GA
|
||||||
MAIL_FROM_ADDRESS=noreply@ilink-app.com
|
MAIL_FROM_ADDRESS=noreply@ilink-app.com
|
||||||
MAIL_FROM_NAME="iLink World"
|
MAIL_FROM_NAME="iLink World"
|
||||||
|
MAIL_ENCRYPTION=tls
|
||||||
|
|
||||||
VISA_API_URL=localhost:8082
|
VISA_API_URL=localhost:8082
|
||||||
VISA_API_USERNAME=admin
|
VISA_API_USERNAME=admin
|
||||||
|
|
|
@ -9,6 +9,7 @@ use App\Models\Identification;
|
||||||
use App\Models\InfosUsersGroup;
|
use App\Models\InfosUsersGroup;
|
||||||
use App\Models\NetworksAgent;
|
use App\Models\NetworksAgent;
|
||||||
use App\Models\UsersDemandesCredit;
|
use App\Models\UsersDemandesCredit;
|
||||||
|
use App\Models\UsersEpargne;
|
||||||
use App\Models\UsersGroup;
|
use App\Models\UsersGroup;
|
||||||
use App\Models\UsersGroupsDemandesValidation;
|
use App\Models\UsersGroupsDemandesValidation;
|
||||||
use App\Models\Wallet;
|
use App\Models\Wallet;
|
||||||
|
@ -18,6 +19,7 @@ use App\Traits\ApiResponser;
|
||||||
use App\Traits\Helper;
|
use App\Traits\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use Illuminate\Support\Facades\Date;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class NanoCreditController extends Controller
|
class NanoCreditController extends Controller
|
||||||
|
@ -97,21 +99,22 @@ class NanoCreditController extends Controller
|
||||||
if ($group->nombre_utilisateurs < 10)
|
if ($group->nombre_utilisateurs < 10)
|
||||||
return $this->errorResponse(trans('errors.your_group_not_valid'));
|
return $this->errorResponse(trans('errors.your_group_not_valid'));
|
||||||
|
|
||||||
if ($request->montant < $group->limite_credit)
|
if ($request->montant > $group->limite_credit || $request->montant < $config->limite_credit_min)
|
||||||
return $this->errorResponse(trans('errors.nano_credit_amount_must_be_less_than_group_limit'));
|
return $this->errorResponse(trans('errors.nano_credit_amount_must_be_between_the_group_limit',
|
||||||
|
['min_limit' => $this->toMoney($config->limite_credit_min, $init_country), 'max_limit' => $this->toMoney($group->limite_credit, $init_country)]));
|
||||||
|
|
||||||
//Verifier la capacité d'emprunt
|
//Verifier la capacité d'emprunt
|
||||||
$CE = $this->capaciteEmprunt($group->id);
|
$CE = $this->capaciteEmprunt($group->id);
|
||||||
if ($CE < 0)
|
if ($CE < 0)
|
||||||
return $this->errorResponse("Le groupe n'a pas le droit d'emprenunter");
|
return $this->errorResponse(trans('errors.group_not_allow_to_borrow'));
|
||||||
if ($request->montant > $CE)
|
if ($request->montant > $CE)
|
||||||
return $this->errorResponse("La capicite d'emprunt est dépassé");
|
return $this->errorResponse(trans('errors.borrowing_capacity_exceeded'));
|
||||||
|
|
||||||
//Verifier si le solde principal de l'hyperviseur est superieur au montant
|
//Verifier si le solde principal de l'hyperviseur est superieur au montant
|
||||||
$walletHyper = WalletAgent::where('category', 'hyper')->where('network_id', $config->id_network)->firstOrFail();
|
$walletHyper = WalletAgent::where('category', 'hyper')->where('network_id', $config->id_network)->firstOrFail();
|
||||||
|
|
||||||
$demande_credit->frais = $this->calculateFees($paliers, $request->montant, $request->duree_mois);
|
$demande_credit->interet = $this->calculateFees($paliers, $request->montant, $request->duree_mois);
|
||||||
$demande_credit->taxe = $this->calculateTax($taxes, $demande_credit->frais);
|
$demande_credit->taxe = $this->calculateTax($taxes, $demande_credit->interet);
|
||||||
$demande_credit->id_demande = $this->getNanoCreditDemandID();
|
$demande_credit->id_demande = $this->getNanoCreditDemandID();
|
||||||
|
|
||||||
if ($request->montant > $walletHyper->balance_princ) {
|
if ($request->montant > $walletHyper->balance_princ) {
|
||||||
|
@ -124,12 +127,12 @@ class NanoCreditController extends Controller
|
||||||
$demande->id_demande = $demande_credit->id_demande;
|
$demande->id_demande = $demande_credit->id_demande;
|
||||||
$demande->id_agent = $walletHyper->agent_id;
|
$demande->id_agent = $walletHyper->agent_id;
|
||||||
$demande->date_creation = new \DateTime();
|
$demande->date_creation = new \DateTime();
|
||||||
$demande->statut = false;
|
|
||||||
$demande->type = 'nano_credit';
|
$demande->type = 'nano_credit';
|
||||||
$demande->save();
|
$demande->save();
|
||||||
|
|
||||||
$data = new \stdClass();
|
$data = new \stdClass();
|
||||||
$data->screen = "notificationview";
|
$data->screen = "notificationview";
|
||||||
|
$demande->statut = false;
|
||||||
$data->data = new \stdClass();
|
$data->data = new \stdClass();
|
||||||
$data->data->id = $demande->id;
|
$data->data->id = $demande->id;
|
||||||
|
|
||||||
|
@ -145,7 +148,7 @@ class NanoCreditController extends Controller
|
||||||
$demande_credit->date_remboursement_prevu = $demande_credit->date_demande->modify('+' . $request->duree_mois . ' month');
|
$demande_credit->date_remboursement_prevu = $demande_credit->date_demande->modify('+' . $request->duree_mois . ' month');
|
||||||
$demande_credit->etat = 'VALIDE';
|
$demande_credit->etat = 'VALIDE';
|
||||||
|
|
||||||
$montant_total = $demande_credit->montant + $demande_credit->frais + $demande_credit->taxe;
|
$montant_total = $demande_credit->montant + $demande_credit->interet + $demande_credit->taxe;
|
||||||
|
|
||||||
$user->balance_credit += $montant_total;
|
$user->balance_credit += $montant_total;
|
||||||
$walletUser->balance += $demande_credit->montant;
|
$walletUser->balance += $demande_credit->montant;
|
||||||
|
@ -156,8 +159,8 @@ class NanoCreditController extends Controller
|
||||||
$demande_credit->save();
|
$demande_credit->save();
|
||||||
|
|
||||||
$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),
|
['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->frais + $demande_credit->taxe, $init_country),
|
'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]);
|
'date' => $demande_credit->date_remboursement_prevu]);
|
||||||
$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'));
|
||||||
|
@ -166,19 +169,19 @@ class NanoCreditController extends Controller
|
||||||
|
|
||||||
if ($request->type_caution == 'individuel') {
|
if ($request->type_caution == 'individuel') {
|
||||||
|
|
||||||
$demande_credit->frais = $this->calculateFees($paliers, $request->montant, $request->duree_mois);
|
$demande_credit->interet = $this->calculateFees($paliers, $request->montant, $request->duree_mois);
|
||||||
$demande_credit->taxe = $this->calculateTax($taxes, $demande_credit->frais);
|
$demande_credit->taxe = $this->calculateTax($taxes, $demande_credit->interet);
|
||||||
$demande_credit->etat = 'EN_ATTENTE_DE_VALIDATION';
|
$demande_credit->etat = 'EN_ATTENTE_DE_VALIDATION';
|
||||||
|
|
||||||
$montant_total = $demande_credit->montant + $demande_credit->frais + $demande_credit->taxe;
|
$montant_total = $demande_credit->montant + $demande_credit->interet + $demande_credit->taxe;
|
||||||
|
|
||||||
$demande_credit->id_demande = $this->getNanoCreditDemandID();
|
$demande_credit->id_demande = $this->getNanoCreditDemandID();
|
||||||
$demande_credit->save();
|
$demande_credit->save();
|
||||||
|
|
||||||
$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),
|
'net' => $this->toMoney($demande_credit->montant, $init_country), 'duration' => $demande_credit->duree_mois,
|
||||||
'fees' => $this->toMoney($demande_credit->frais + $demande_credit->taxe, $init_country),]);
|
'fees' => $this->toMoney($demande_credit->interet + $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'));
|
||||||
}
|
}
|
||||||
|
@ -191,7 +194,8 @@ class NanoCreditController extends Controller
|
||||||
return $this->successResponse($demandes);
|
return $this->successResponse($demandes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cautionnerCredit(Request $request)
|
// Cautionner une demande de credit
|
||||||
|
public function guaranteeCredit(Request $request)
|
||||||
{
|
{
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'id_demande' => 'required',
|
'id_demande' => 'required',
|
||||||
|
@ -226,7 +230,7 @@ class NanoCreditController extends Controller
|
||||||
if ($user_country != $agent_country)
|
if ($user_country != $agent_country)
|
||||||
return $this->errorResponse('errors.operation_cannot_performed_in_country');
|
return $this->errorResponse('errors.operation_cannot_performed_in_country');
|
||||||
|
|
||||||
$montant_total = $demande_credit->montant + $demande_credit->frais + $demande_credit->taxe;
|
$montant_total = $demande_credit->montant + $demande_credit->interet + $demande_credit->taxe;
|
||||||
|
|
||||||
if ($montant_total > $walletAgent->balance_princ)
|
if ($montant_total > $walletAgent->balance_princ)
|
||||||
return $this->errorResponse(trans('errors.insufficient_balance'));
|
return $this->errorResponse(trans('errors.insufficient_balance'));
|
||||||
|
@ -252,13 +256,13 @@ class NanoCreditController extends Controller
|
||||||
$demande_credit->save();
|
$demande_credit->save();
|
||||||
|
|
||||||
$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),
|
['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->frais + $demande_credit->taxe, $agent_country),
|
'net' => $this->toMoney($demande_credit->montant, $agent_country), 'fees' => $this->toMoney($demande_credit->interet + $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),
|
['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->frais + $demande_credit->taxe, $agent_country),
|
'net' => $this->toMoney($demande_credit->montant, $agent_country), 'fees' => $this->toMoney($demande_credit->interet + $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);
|
||||||
|
@ -266,7 +270,7 @@ class NanoCreditController extends Controller
|
||||||
return $this->successResponse($agent_message . trans('messages.sent_by_mail'));
|
return $this->successResponse($agent_message . trans('messages.sent_by_mail'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rembourserCredit(Request $request)
|
public function refundCredit(Request $request)
|
||||||
{
|
{
|
||||||
$this->validate($request, [
|
$this->validate($request, [
|
||||||
'id_demande' => 'required',
|
'id_demande' => 'required',
|
||||||
|
@ -288,7 +292,7 @@ class NanoCreditController extends Controller
|
||||||
return $this->errorResponse(trans('errors.nano_credit_already_refunded'));
|
return $this->errorResponse(trans('errors.nano_credit_already_refunded'));
|
||||||
|
|
||||||
$init_country = $user->network->country->id;
|
$init_country = $user->network->country->id;
|
||||||
$montant_total = $demande_credit->montant + $demande_credit->frais + $demande_credit->taxe;
|
$montant_total = $demande_credit->montant + $demande_credit->interet + $demande_credit->taxe;
|
||||||
|
|
||||||
if ($montant_total > $walletUser->balance)
|
if ($montant_total > $walletUser->balance)
|
||||||
return $this->errorResponse(trans('errors.insufficient_balance'));
|
return $this->errorResponse(trans('errors.insufficient_balance'));
|
||||||
|
@ -300,7 +304,8 @@ class NanoCreditController extends Controller
|
||||||
if ($demande_credit->type_caution == 'individuel') {
|
if ($demande_credit->type_caution == 'individuel') {
|
||||||
$walletAgent = Wallet::findOrFail($demande_credit->id_wallet_agent);
|
$walletAgent = Wallet::findOrFail($demande_credit->id_wallet_agent);
|
||||||
|
|
||||||
$walletAgent->balance_princ += $montant_total;
|
// Repartition des interet entre agents
|
||||||
|
// $walletHyper->balance_com += $demande_credit->interet;
|
||||||
$walletAgent->save();
|
$walletAgent->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,7 +315,8 @@ class NanoCreditController extends Controller
|
||||||
$walletHyper = WalletAgent::where('category', 'hyper')->where('network_id', $group->id_network)->firstOrFail();
|
$walletHyper = WalletAgent::where('category', 'hyper')->where('network_id', $group->id_network)->firstOrFail();
|
||||||
$walletHyper = Wallet::findOrFail($walletHyper->wallet_id);
|
$walletHyper = Wallet::findOrFail($walletHyper->wallet_id);
|
||||||
|
|
||||||
$walletHyper->balance_princ += $montant_total;
|
$walletHyper->balance_princ += $demande_credit->montant;
|
||||||
|
$walletHyper->balance_com += $demande_credit->interet;
|
||||||
$walletHyper->save();
|
$walletHyper->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -321,8 +327,8 @@ class NanoCreditController extends Controller
|
||||||
$demande_credit->save();
|
$demande_credit->save();
|
||||||
|
|
||||||
$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),
|
['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->frais + $demande_credit->taxe, $init_country),
|
'net' => $this->toMoney($demande_credit->montant, $init_country), 'fees' => $this->toMoney($demande_credit->interet + $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'));
|
||||||
|
@ -342,7 +348,8 @@ class NanoCreditController extends Controller
|
||||||
return $sommeEpargnes - $sommeCredits;
|
return $sommeEpargnes - $sommeCredits;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getDureeMois($id_user)
|
// Recuperer les durees en mois
|
||||||
|
public function getDurations($id_user)
|
||||||
{
|
{
|
||||||
|
|
||||||
$user = User::findOrFail($id_user);
|
$user = User::findOrFail($id_user);
|
||||||
|
@ -372,7 +379,158 @@ class NanoCreditController extends Controller
|
||||||
return $this->successResponse($mois);
|
return $this->successResponse($mois);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculer les frais
|
// Faire une epargne
|
||||||
|
public function makeSavings(Request $request)
|
||||||
|
{
|
||||||
|
|
||||||
|
$this->validate($request, [
|
||||||
|
'type' => 'required|in:simple,blocked',
|
||||||
|
'duree_mois' => 'required_if:type,blocked|integer|min:0|not_in:0',
|
||||||
|
'id_user' => 'required|integer|min:0|not_in:0',
|
||||||
|
'password' => 'required',
|
||||||
|
'montant' => 'required|numeric|min:0|not_in:0',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user = User::findOrFail($request->id_user);
|
||||||
|
if (!$this->checkPassword($request->password, $user->encrypted_password, $user->salt))
|
||||||
|
return $this->errorResponse(trans('messages.incorrect_user_password'));
|
||||||
|
|
||||||
|
$init_country = $user->network->country->id;
|
||||||
|
$result = ConfigWallet::join('networks', 'networks.id', '=', 'configWallet.id_network')
|
||||||
|
->where('networks.country_id', $init_country)->where('configWallet.type', 'ilink')
|
||||||
|
->select('configWallet.id')->first();
|
||||||
|
if ($result) {
|
||||||
|
$config = ConfigWallet::findOrFail($result->id);
|
||||||
|
} else {
|
||||||
|
return $this->errorResponse(trans('errors.no_ilink_network'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$config->has_nano_credit)
|
||||||
|
return $this->errorResponse(trans('errors.nano_credit_not_available'));
|
||||||
|
|
||||||
|
$saving = new UsersEpargne();
|
||||||
|
$saving->fill($request->all());
|
||||||
|
$saving->id_network = $config->id_network;
|
||||||
|
$sumFees = 0;
|
||||||
|
$saving->date_creation = new \DateTime();
|
||||||
|
if ($request->type == 'blocked') {
|
||||||
|
$taxes = array_values(array_filter($config->taxes->all(), function ($tax) {
|
||||||
|
return $tax->categorie == 'epargne';
|
||||||
|
}));
|
||||||
|
|
||||||
|
$paliers = array_values(array_filter($config->paliers_config_nano_credits->all(), function ($taux) {
|
||||||
|
return $taux->type == 'epargne';
|
||||||
|
}));
|
||||||
|
|
||||||
|
$saving->interet = $this->calculateFees($paliers, $request->montant, $request->duree_mois);
|
||||||
|
$saving->taxe = $this->calculateTax($taxes, $saving->interet);
|
||||||
|
$saving->type = 'BLOQUE';
|
||||||
|
$saving->date_fin = $saving->date_creation->modify('+' . $request->duree_mois . ' month');
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$saving->interet = 0;
|
||||||
|
$saving->taxe = 0;
|
||||||
|
$saving->type = 'SIMPLE';
|
||||||
|
}
|
||||||
|
|
||||||
|
$walletHyper = WalletAgent::where('category', 'hyper')->where('network_id', $config->id_network)->firstOrFail();
|
||||||
|
$walletHyper = Wallet::findOrFail($walletHyper->wallet_id);
|
||||||
|
|
||||||
|
$walletUser = WalletsUser::where('idUser', $request->id_user)->firstOrFail();
|
||||||
|
$montant_total = $saving->montant + $saving->interet - $saving->taxe;
|
||||||
|
|
||||||
|
|
||||||
|
if ($saving->montant > $walletUser->balance)
|
||||||
|
return $this->errorResponse(trans('errors.insufficient_balance'));
|
||||||
|
|
||||||
|
$saving->etat = 'EN_COURS';
|
||||||
|
|
||||||
|
$walletUser->balance -= $saving->montant;
|
||||||
|
|
||||||
|
$user->balance_epargne += $montant_total;
|
||||||
|
$walletHyper->balance_com -= ($saving->interet - $saving->taxe);
|
||||||
|
$saving->id_epargne = $this->getSavingID();
|
||||||
|
|
||||||
|
$walletHyper->save();
|
||||||
|
$walletUser->save();
|
||||||
|
$user->save();
|
||||||
|
$saving->save();
|
||||||
|
|
||||||
|
$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),
|
||||||
|
'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'));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Casser une epargne
|
||||||
|
public function breakSavings(Request $request)
|
||||||
|
{
|
||||||
|
$this->validate($request, [
|
||||||
|
'id_epargne' => 'required',
|
||||||
|
'id_user' => 'required|integer|min:0|not_in:0',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$saving = UsersEpargne::where('id_epargne', $request->id_epargne)->firstOrFail();
|
||||||
|
if ($saving->id_user != $request->id_user)
|
||||||
|
return $this->errorResponse(trans('errors.not_authorized_to_process_request'));
|
||||||
|
|
||||||
|
if ($saving->etat == 'CASSE')
|
||||||
|
return $this->errorResponse(trans('errors.savings_already_broken'));
|
||||||
|
|
||||||
|
$user = User::findOrFail($request->id_user);
|
||||||
|
$init_country = $user->network->country->id;
|
||||||
|
$walletUser = WalletsUser::where('idUser', $request->id_user)->firstOrFail();
|
||||||
|
|
||||||
|
if ($saving->type == 'BLOQUE') {
|
||||||
|
$montant_total = $saving->montant + $saving->interet - $saving->taxe;
|
||||||
|
} else {
|
||||||
|
$montant_total = $saving->montant;
|
||||||
|
}
|
||||||
|
|
||||||
|
$user->balance_epargne -= $montant_total;
|
||||||
|
$walletUser->balance += $montant_total;
|
||||||
|
$saving->etat = 'CASSE';
|
||||||
|
$saving->date_cassation = new \DateTime();
|
||||||
|
|
||||||
|
$user->save();
|
||||||
|
$walletUser->save();
|
||||||
|
$saving->save();
|
||||||
|
|
||||||
|
$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),
|
||||||
|
'date' => $saving->date_fin, 'duration' => $saving->duree_mois]);
|
||||||
|
|
||||||
|
$this->sendMail($user->email, trans('messages.successful_broken_saving'), $message);
|
||||||
|
return $this->successResponse($message . trans('messages.sent_by_mail'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getInfosNanoCredit($id_demand)
|
||||||
|
{
|
||||||
|
$demand = UsersDemandesCredit::where('id_demande', $id_demand)->first();
|
||||||
|
if ($demand) {
|
||||||
|
return $this->successResponse($demand);
|
||||||
|
} else {
|
||||||
|
return $this->errorResponse(trans('errors.nano_credit_not_found'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getInfosSavings($id_saving)
|
||||||
|
{
|
||||||
|
$demand = UsersEpargne::where('id_epargne', $id_saving)->first();
|
||||||
|
if ($demand) {
|
||||||
|
return $this->successResponse($demand);
|
||||||
|
} else {
|
||||||
|
return $this->errorResponse(trans('errors.savings_not_found'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Calculer les interet
|
||||||
private function calculateFees(array $paliers, $montant, $duree)
|
private function calculateFees(array $paliers, $montant, $duree)
|
||||||
{
|
{
|
||||||
$size = sizeof($paliers);
|
$size = sizeof($paliers);
|
||||||
|
@ -402,4 +560,14 @@ class NanoCreditController extends Controller
|
||||||
return $code;
|
return $code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getSavingID()
|
||||||
|
{
|
||||||
|
do {
|
||||||
|
$code = $this->generateGroupCode();
|
||||||
|
$result = collect(DB::select('SELECT * FROM users_epargnes WHERE id_epargne = :code', ['code' => $code]));
|
||||||
|
$codeCorrect = sizeof($result) < 0;
|
||||||
|
} while ($codeCorrect);
|
||||||
|
return $code;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,10 +80,10 @@ class UserGroupController 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'));
|
||||||
if ($request->limite_credit > $config->limite_credit_max)
|
|
||||||
return $this->errorResponse(trans('errors.credit_limit_is_greater_than_max'));
|
if ($request->limite_credit > $config->limite_credit_max || $request->limite_credit < $config->limite_credit_min)
|
||||||
if ($request->limite_credit < $config->limite_credit_min)
|
return $this->errorResponse(trans('errors.group_credit_limit_must_be_between',
|
||||||
return $this->errorResponse(trans('errors.credit_limit_is_less_than_min'));
|
['min_limit' => $this->toMoney($config->limite_credit_min, $init_country), 'max_limit' => $this->toMoney($config->limite_credit_max, $init_country)]));
|
||||||
|
|
||||||
$group->fill($request->all());
|
$group->fill($request->all());
|
||||||
// Envoyer des codes sponsors differents
|
// Envoyer des codes sponsors differents
|
||||||
|
|
|
@ -18,7 +18,7 @@ use Illuminate\Database\Eloquent\Model;
|
||||||
* @property int $duree_mois
|
* @property int $duree_mois
|
||||||
* @property string $type_caution
|
* @property string $type_caution
|
||||||
* @property string $etat
|
* @property string $etat
|
||||||
* @property float $frais
|
* @property float $interet
|
||||||
* @property float $taxe
|
* @property float $taxe
|
||||||
* @property Carbon $date_demande
|
* @property Carbon $date_demande
|
||||||
* @property Carbon $date_remboursement_prevu
|
* @property Carbon $date_remboursement_prevu
|
||||||
|
@ -39,7 +39,7 @@ class UsersDemandesCredit extends Model
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
'montant' => 'float',
|
'montant' => 'float',
|
||||||
'duree_mois' => 'int',
|
'duree_mois' => 'int',
|
||||||
'frais' => 'float',
|
'interet' => 'float',
|
||||||
'taxe' => 'float',
|
'taxe' => 'float',
|
||||||
'id_user' => 'int',
|
'id_user' => 'int',
|
||||||
'id_wallet_agent' => 'int',
|
'id_wallet_agent' => 'int',
|
||||||
|
@ -60,7 +60,7 @@ class UsersDemandesCredit extends Model
|
||||||
'duree_mois',
|
'duree_mois',
|
||||||
'type_caution',
|
'type_caution',
|
||||||
'etat',
|
'etat',
|
||||||
'frais',
|
'interet',
|
||||||
'taxe',
|
'taxe',
|
||||||
'date_demande',
|
'date_demande',
|
||||||
'date_remboursement_prevu',
|
'date_remboursement_prevu',
|
||||||
|
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Reliese Model.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class UsersEpargne
|
||||||
|
*
|
||||||
|
* @property int $id
|
||||||
|
* @property string $id_epargne
|
||||||
|
* @property string $type
|
||||||
|
* @property float $montant
|
||||||
|
* @property int $duree_mois
|
||||||
|
* @property float $interet
|
||||||
|
* @property float $taxe
|
||||||
|
* @property Carbon $date_creation
|
||||||
|
* @property Carbon $date_fin
|
||||||
|
* @property Carbon $date_cassation
|
||||||
|
* @property string $etat
|
||||||
|
* @property int $id_user
|
||||||
|
* @property int $id_network
|
||||||
|
*
|
||||||
|
* @package App\Models
|
||||||
|
*/
|
||||||
|
class UsersEpargne extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'users_epargnes';
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
protected $casts = [
|
||||||
|
'montant' => 'float',
|
||||||
|
'duree_mois' => 'int',
|
||||||
|
'interet' => 'float',
|
||||||
|
'taxe' => 'float',
|
||||||
|
'id_user' => 'int',
|
||||||
|
'id_network' => 'int'
|
||||||
|
];
|
||||||
|
|
||||||
|
protected $dates = [
|
||||||
|
'date_creation',
|
||||||
|
'date_fin',
|
||||||
|
'date_cassation'
|
||||||
|
];
|
||||||
|
|
||||||
|
protected $fillable = [
|
||||||
|
'id_epargne',
|
||||||
|
'type',
|
||||||
|
'montant',
|
||||||
|
'duree_mois',
|
||||||
|
'interet',
|
||||||
|
'taxe',
|
||||||
|
'date_creation',
|
||||||
|
'date_fin',
|
||||||
|
'date_cassation',
|
||||||
|
'etat',
|
||||||
|
'id_user',
|
||||||
|
'id_network'
|
||||||
|
];
|
||||||
|
}
|
|
@ -31,8 +31,7 @@ Paying network : :network :country',
|
||||||
'group_already_active' => 'This group is already active',
|
'group_already_active' => 'This group is already active',
|
||||||
'sponsor_belongs_to_group' => 'Sponsor :id already belongs to a group',
|
'sponsor_belongs_to_group' => 'Sponsor :id already belongs to a group',
|
||||||
'treated_group_demand' => 'Group validation request already processed',
|
'treated_group_demand' => 'Group validation request already processed',
|
||||||
'credit_limit_is_greater_than_max' => 'The credit limit is greater than the maximum limit',
|
'group_credit_limit_must_be_between' => 'The credit limit must be between :min_limit and :max_limit',
|
||||||
'credit_limit_is_less_than_min' => 'The credit limit is lower than the minimum limit',
|
|
||||||
'sponsor_not_registered_in_same_country' => 'Sponsor :id is not registered in your country',
|
'sponsor_not_registered_in_same_country' => 'Sponsor :id is not registered in your country',
|
||||||
'sponsor_not_found' => 'This sponsor :id code does not exist',
|
'sponsor_not_found' => 'This sponsor :id code does not exist',
|
||||||
'nano_credit_not_available' => 'Nano credit is not available in your country',
|
'nano_credit_not_available' => 'Nano credit is not available in your country',
|
||||||
|
@ -48,11 +47,16 @@ Paying network : :network :country',
|
||||||
'not_belongs_to_any_group' => 'You do not belong to any group',
|
'not_belongs_to_any_group' => 'You do not belong to any group',
|
||||||
'your_group_not_active' => "Your group is not active. Talk to your sponsor",
|
'your_group_not_active' => "Your group is not active. Talk to your sponsor",
|
||||||
'your_group_not_valid' => "Your group is not valid. Talk to your sponsor",
|
'your_group_not_valid' => "Your group is not valid. Talk to your sponsor",
|
||||||
'nano_credit_amount_must_be_less_than_group_limit' => "The amount of credit requested must be less than or equal to the group credit limit",
|
'nano_credit_amount_must_be_between_the_group_limit' => "The amount of credit requested must be between :min_limit and :max_limit",
|
||||||
"nano_credit_not_found" => "This nano credit request does not exist",
|
"nano_credit_not_found" => "This nano credit request does not exist",
|
||||||
"nano_credit_not_individual" => "This nano credit request is not individual",
|
"nano_credit_not_individual" => "This nano credit request is not individual",
|
||||||
"last_nano_credit_not_refunded" => "Your last nano credit request was not refunded",
|
"last_nano_credit_not_refunded" => "Your last nano credit request was not refunded",
|
||||||
"nano_credit_already_refunded" => "Repayment of credit already made",
|
"nano_credit_already_refunded" => "Repayment of credit already made",
|
||||||
"sponsor_code_not_match" => "This sponsor code does not match to this group",
|
"sponsor_code_not_match" => "This sponsor code does not match to this group",
|
||||||
"user_already_member_of_group" => "This user is already a member of a group",
|
"user_already_member_of_group" => "This user is already a member of a group",
|
||||||
|
"not_authorized_to_process_request" => "You are not authorized to process this request",
|
||||||
|
"savings_already_broken" => "Savings already broken",
|
||||||
|
"group_not_allow_to_borrow" => "The group is not allowed to borrow",
|
||||||
|
"borrowing_capacity_exceeded" => "The borrowing capacity is exceeded",
|
||||||
|
"savings_not_found" => "This savings does not exist"
|
||||||
];
|
];
|
||||||
|
|
|
@ -162,8 +162,9 @@ Request Information:
|
||||||
- Request number: :id_demand
|
- Request number: :id_demand
|
||||||
- Type of deposit: Group
|
- Type of deposit: Group
|
||||||
- Credit amount: :amount
|
- Credit amount: :amount
|
||||||
- Fees: :fees
|
- Interests : :fees
|
||||||
- Net amount received: :net
|
- Net amount received: :net
|
||||||
|
- Duration (in months) : :duration
|
||||||
- Redemption date: :date
|
- Redemption date: :date
|
||||||
|
|
||||||
NB: The reimbursement process is automatic on the due date if the reimbursement is not initiated",
|
NB: The reimbursement process is automatic on the due date if the reimbursement is not initiated",
|
||||||
|
@ -173,8 +174,9 @@ Request Information:
|
||||||
- Request number: :id_demand
|
- Request number: :id_demand
|
||||||
- Type of deposit: Individual
|
- Type of deposit: Individual
|
||||||
- Credit amount: :amount
|
- Credit amount: :amount
|
||||||
- Fees: :fees
|
- Interests : :fees
|
||||||
- Net amount to be collected: :net
|
- Net amount to be collected: :net
|
||||||
|
- Duration (in months) : :duration
|
||||||
|
|
||||||
Go to a geolocated agent who agrees to back you up by validating your credit request",
|
Go to a geolocated agent who agrees to back you up by validating your credit request",
|
||||||
'successful_guarantee_user_individual_nano_credit_demand' => "Guaranteed nanocredit request
|
'successful_guarantee_user_individual_nano_credit_demand' => "Guaranteed nanocredit request
|
||||||
|
@ -182,8 +184,9 @@ Request Information:
|
||||||
- Request number: :id_demand
|
- Request number: :id_demand
|
||||||
- Type of deposit: Individual
|
- Type of deposit: Individual
|
||||||
- Credit amount: :amount
|
- Credit amount: :amount
|
||||||
- Fees: :fees
|
- Interests : :fees
|
||||||
- Net amount received: :net
|
- Net amount received: :net
|
||||||
|
- Duration (in months) : :duration
|
||||||
- Redemption date: :date
|
- Redemption date: :date
|
||||||
- Agent names: :agent_name
|
- Agent names: :agent_name
|
||||||
- Agent code: :code_agent",
|
- Agent code: :code_agent",
|
||||||
|
@ -192,8 +195,9 @@ Request Information:
|
||||||
- Request number: :id_demand
|
- Request number: :id_demand
|
||||||
- Type of deposit: Individual
|
- Type of deposit: Individual
|
||||||
- Credit amount: :amount
|
- Credit amount: :amount
|
||||||
- Fees: :fees
|
- Interests : :fees
|
||||||
- Net amount received: :net
|
- Net amount received: :net
|
||||||
|
- Duration (in months) : :duration
|
||||||
- Redemption date: :date
|
- Redemption date: :date
|
||||||
- Client names: :user_name
|
- Client names: :user_name
|
||||||
- Client code: :code_user
|
- Client code: :code_user
|
||||||
|
@ -206,11 +210,29 @@ Request Information:
|
||||||
- Request number: :id_demand
|
- Request number: :id_demand
|
||||||
- Type of deposit: :deposit
|
- Type of deposit: :deposit
|
||||||
- Credit amount: :amount
|
- Credit amount: :amount
|
||||||
- Fees: :fees
|
- Interests : :fees
|
||||||
- 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",
|
||||||
'successful_nano_credit_sent_to_hypervisor' => "Your request has been sent to your network hypervisor. You will receive the credit only after validation",
|
'successful_nano_credit_sent_to_hypervisor' => "Your request has been sent to your network hypervisor. You will receive the credit only after validation",
|
||||||
'successful_accepted_nano_credit_request' => "Nano credit request accepted",
|
'successful_accepted_nano_credit_request' => "Nano credit request accepted",
|
||||||
'successful_canceled_nano_credit_request' => "Nano credit request refused"
|
'successful_canceled_nano_credit_request' => "Nano credit request refused",
|
||||||
|
"successful_saving" => "Successful savings",
|
||||||
|
"successful_blocked_saving_details" => "
|
||||||
|
Savings Information :
|
||||||
|
- Savings number : :id_saving
|
||||||
|
- Type : :type
|
||||||
|
- Amount at cassation : :amount
|
||||||
|
- Interests : :fees
|
||||||
|
- Net amount saved : :net
|
||||||
|
- Duration (in months) : :duration
|
||||||
|
- End date : :date",
|
||||||
|
"successful_simple_saving_details" => "
|
||||||
|
Savings Information :
|
||||||
|
- Savings number : :id_saving
|
||||||
|
- Type : :type
|
||||||
|
- Amount at cassation : :amount
|
||||||
|
- Interests : :fees
|
||||||
|
- Net amount saved : :net",
|
||||||
|
"successful_broken_saving" => "Broken savings",
|
||||||
];
|
];
|
||||||
|
|
|
@ -31,8 +31,7 @@ Réseau payeur : :network :country',
|
||||||
'group_already_active' => 'Ce groupe est déjà actif',
|
'group_already_active' => 'Ce groupe est déjà actif',
|
||||||
'sponsor_belongs_to_group' => 'Sponsor :id appartient déjà à un groupe',
|
'sponsor_belongs_to_group' => 'Sponsor :id appartient déjà à un groupe',
|
||||||
'treated_group_demand' => 'Demande de validation de groupe déjà traitée',
|
'treated_group_demand' => 'Demande de validation de groupe déjà traitée',
|
||||||
'credit_limit_is_greater_than_max' => 'La limite de crédit est supérieur à la limite maximale',
|
'group_credit_limit_must_be_between' => 'La limite de crédit doit être comprise entre :min_limit et :max_limit',
|
||||||
'credit_limit_is_less_than_min' => 'La limite de crédit est inférieure à la limite minimale',
|
|
||||||
'sponsor_not_registered_in_same_country' => 'Sponsor :id n\'est pas enregistré dans votre pays',
|
'sponsor_not_registered_in_same_country' => 'Sponsor :id n\'est pas enregistré dans votre pays',
|
||||||
'sponsor_not_found' => 'Ce code sponsor :id n\'existe pas',
|
'sponsor_not_found' => 'Ce code sponsor :id n\'existe pas',
|
||||||
'nano_credit_not_available' => 'Le nano credit n\'est pas disponible dans votre pays',
|
'nano_credit_not_available' => 'Le nano credit n\'est pas disponible dans votre pays',
|
||||||
|
@ -48,11 +47,16 @@ Réseau payeur : :network :country',
|
||||||
'not_belongs_to_any_group' => "Vous n'appartennez à aucun groupe",
|
'not_belongs_to_any_group' => "Vous n'appartennez à aucun groupe",
|
||||||
'your_group_not_active' => "Votre groupe n'est pas actif. Adressez-vous à votre sponsor",
|
'your_group_not_active' => "Votre groupe n'est pas actif. Adressez-vous à votre sponsor",
|
||||||
'your_group_not_valid' => "Votre groupe n'est pas valide. Adressez-vous à votre sponsor",
|
'your_group_not_valid' => "Votre groupe n'est pas valide. Adressez-vous à votre sponsor",
|
||||||
'nano_credit_amount_must_be_less_than_group_limit' => "Le montant du crédit demandé doit être inférieur ou égal à la limite crédit groupe",
|
'nano_credit_amount_must_be_between_the_group_limit' => "Le montant du crédit demandé doit être compris entre :min_limit et :max_limit",
|
||||||
"nano_credit_not_found" => "Cette demande de nano crédit n'existe pas",
|
"nano_credit_not_found" => "Cette demande de nano crédit n'existe pas",
|
||||||
"nano_credit_not_individual" => "Cette demande de nano crédit n'est pas individuelle",
|
"nano_credit_not_individual" => "Cette demande de nano crédit n'est pas individuelle",
|
||||||
"last_nano_credit_not_refunded" => "Votre derniere demande de nano crédit n'a pas été remboursée",
|
"last_nano_credit_not_refunded" => "Votre derniere demande de nano crédit n'a pas été remboursée",
|
||||||
"nano_credit_already_refunded" => "Remboursement de crédit deja effectué",
|
"nano_credit_already_refunded" => "Remboursement de crédit deja effectué",
|
||||||
"sponsor_code_not_match" => "Ce code sponsor ne correspond pas à ce groupe",
|
"sponsor_code_not_match" => "Ce code sponsor ne correspond pas à ce groupe",
|
||||||
"user_already_member_of_group" => "Cet utilisateur est déjà membre d'un groupe",
|
"user_already_member_of_group" => "Cet utilisateur est déjà membre d'un groupe",
|
||||||
|
"not_authorized_to_process_request" => "Vous n'êtes pas autorisé à traiter cette requête",
|
||||||
|
"savings_already_broken" => "Épargne déjà cassée",
|
||||||
|
"group_not_allow_to_borrow" => "Le groupe n'a pas le droit d'emprunter",
|
||||||
|
"borrowing_capacity_exceeded" => "La capacité d'emprunt est dépassée",
|
||||||
|
"savings_not_found" => "Cette épargne n'existe pas"
|
||||||
];
|
];
|
||||||
|
|
|
@ -162,8 +162,9 @@ Informations de la demande :
|
||||||
- Numéro de la demande : :id_demand
|
- Numéro de la demande : :id_demand
|
||||||
- Type de caution : Groupe
|
- Type de caution : Groupe
|
||||||
- Montant du crédit : :amount
|
- Montant du crédit : :amount
|
||||||
- Frais : :fees
|
- Intérêts : :fees
|
||||||
- Montant net percu: :net
|
- Montant net percu: :net
|
||||||
|
- Duréé (en mois) : :duration
|
||||||
- Date de remboursement : :date
|
- Date de remboursement : :date
|
||||||
|
|
||||||
NB: Le processus de remboursement est automatique à la date d'échéance si le remboursement n'est pas initié",
|
NB: Le processus de remboursement est automatique à la date d'échéance si le remboursement n'est pas initié",
|
||||||
|
@ -173,8 +174,9 @@ Informations de la demande :
|
||||||
- Numéro de la demande : :id_demand
|
- Numéro de la demande : :id_demand
|
||||||
- Type de caution : Individuel
|
- Type de caution : Individuel
|
||||||
- Montant du crédit : :amount
|
- Montant du crédit : :amount
|
||||||
- Frais : :fees
|
- Intérêts : :fees
|
||||||
- Montant net à percevoir : :net
|
- Montant net à percevoir : :net
|
||||||
|
- Duréé (en mois) : :duration
|
||||||
|
|
||||||
Rendez vous chez un agent geolocalisé qui accepte de vous cautionner en validant votre demande de crédit",
|
Rendez vous chez un agent geolocalisé qui accepte de vous cautionner en validant votre demande de crédit",
|
||||||
'successful_guarantee_user_individual_nano_credit_demand' => "Demande de nano crédit cautionnée
|
'successful_guarantee_user_individual_nano_credit_demand' => "Demande de nano crédit cautionnée
|
||||||
|
@ -182,8 +184,9 @@ Informations de la demande :
|
||||||
- Numéro de la demande : :id_demand
|
- Numéro de la demande : :id_demand
|
||||||
- Type de caution : Individuel
|
- Type de caution : Individuel
|
||||||
- Montant du crédit : :amount
|
- Montant du crédit : :amount
|
||||||
- Frais : :fees
|
- Intérêts : :fees
|
||||||
- Montant net percu : :net
|
- Montant net percu : :net
|
||||||
|
- Duréé (en mois) : :duration
|
||||||
- Date de remboursement : :date
|
- Date de remboursement : :date
|
||||||
- Noms de l'agent : :agent_name
|
- Noms de l'agent : :agent_name
|
||||||
- Code de l'agent : :code_agent",
|
- Code de l'agent : :code_agent",
|
||||||
|
@ -192,8 +195,9 @@ Informations de la demande :
|
||||||
- Numéro de la demande : :id_demand
|
- Numéro de la demande : :id_demand
|
||||||
- Type de caution : Individuel
|
- Type de caution : Individuel
|
||||||
- Montant du crédit : :amount
|
- Montant du crédit : :amount
|
||||||
- Frais : :fees
|
- Intérêts : :fees
|
||||||
- Montant net à percu : :net
|
- Montant net à percu : :net
|
||||||
|
- Duréé (en mois) : :duration
|
||||||
- Date de remboursement : :date
|
- Date de remboursement : :date
|
||||||
- Noms du client : :user_name
|
- Noms du client : :user_name
|
||||||
- Code du client : :code_user
|
- Code du client : :code_user
|
||||||
|
@ -207,10 +211,30 @@ Informations de la demande :
|
||||||
- Type de caution : :caution
|
- Type de caution : :caution
|
||||||
- Montant du crédit : :amount
|
- Montant du crédit : :amount
|
||||||
- Frais : :fees
|
- Frais : :fees
|
||||||
- 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",
|
||||||
'successful_nano_credit_sent_to_hypervisor' => "Votre demande a été envoyé à l'hyperviseur de votre reseau. Vous recevrez le credit seulement après validation",
|
'successful_nano_credit_sent_to_hypervisor' => "Votre demande a été envoyé à l'hyperviseur de votre reseau. Vous recevrez le credit seulement après validation",
|
||||||
'successful_accepted_nano_credit_request' => "Demande de nano credit acceptée",
|
'successful_accepted_nano_credit_request' => "Demande de nano credit acceptée",
|
||||||
'successful_canceled_nano_credit_request' => "Demande de nano credit refusée"
|
'successful_canceled_nano_credit_request' => "Demande de nano credit refusée",
|
||||||
|
"successful_saving" => "Epargne réussie",
|
||||||
|
"successful_blocked_saving_details" => "
|
||||||
|
Informations sur l'epargne :
|
||||||
|
- Numéro de l'epargne : :id_saving
|
||||||
|
- Type : :type
|
||||||
|
- Montant lors de la cassation : :amount
|
||||||
|
- Intérêts : :fees
|
||||||
|
- Montant net epargné : :net
|
||||||
|
- Duréé (en mois) : :duration
|
||||||
|
- Date de fin : :date
|
||||||
|
",
|
||||||
|
"successful_simple_saving_details" => "
|
||||||
|
Informations sur l'epargne :
|
||||||
|
- Numéro de l'epargne : :id_saving
|
||||||
|
- Type : :type
|
||||||
|
- Montant lors de la cassation : :amount
|
||||||
|
- Intérêts : :fees
|
||||||
|
- Montant net epargné : :net
|
||||||
|
",
|
||||||
|
"successful_broken_saving" => "Epargne cassée",
|
||||||
];
|
];
|
||||||
|
|
|
@ -89,9 +89,16 @@ $router->group(['prefix' => '/groups'], function () use ($router) {
|
||||||
//Nano credit
|
//Nano credit
|
||||||
$router->group(['prefix' => '/nanoCredit'], function () use ($router) {
|
$router->group(['prefix' => '/nanoCredit'], function () use ($router) {
|
||||||
$router->post('ask', 'NanoCreditController@askNanoCredit');
|
$router->post('ask', 'NanoCreditController@askNanoCredit');
|
||||||
$router->post('guarantee', 'NanoCreditController@cautionnerCredit');
|
$router->post('guarantee', 'NanoCreditController@guaranteeCredit');
|
||||||
$router->post('refund', 'NanoCreditController@rembourserCredit');
|
$router->post('refund', 'NanoCreditController@refundCredit');
|
||||||
$router->get('durations/{id_user}', 'NanoCreditController@getDureeMois');
|
$router->get('durations/{id_user}', 'NanoCreditController@getDurations');
|
||||||
$router->get('demands/{id_user}', 'NanoCreditController@getNanoCreditsDemands');
|
$router->get('demands/{id_user}', 'NanoCreditController@getNanoCreditsDemands');
|
||||||
|
$router->get('details/{id_demand}', 'NanoCreditController@getInfosNanoCredit');
|
||||||
|
|
||||||
|
$router->group(['prefix' => '/savings'], function () use ($router) {
|
||||||
|
$router->post('make', 'NanoCreditController@makeSavings');
|
||||||
|
$router->post('break', 'NanoCreditController@breakSavings');
|
||||||
|
$router->get('details/{id_saving}', 'NanoCreditController@getInfosSavings');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue