+ Moving TransmittingNetworksController into walletServiceExterne
This commit is contained in:
parent
c171ce1af9
commit
e8dc82155e
|
@ -6,7 +6,7 @@ use Laravel\Lumen\Routing\Controller as BaseController;
|
|||
|
||||
/**
|
||||
* @OA\Info(
|
||||
* title="Wallet Service API",
|
||||
* title="Wallet Service Interne API",
|
||||
* version="1.0.0",
|
||||
* @OA\Contact(
|
||||
* email="administrateur@ilink-app.com",
|
||||
|
|
|
@ -271,7 +271,7 @@ class NanoCreditController extends Controller
|
|||
* @OA\Parameter(
|
||||
* parameter="id_user",
|
||||
* name="id_user",
|
||||
* description="ID de l'utilisateur",
|
||||
* description="ID de l'utilisateur enregistré dans la base de données",
|
||||
* in="path",
|
||||
* required=true,
|
||||
* @OA\Schema(
|
||||
|
|
|
@ -1,192 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\ConfigWallet;
|
||||
use App\Models\Network;
|
||||
use App\Models\TransmittingNetwork;
|
||||
use App\Models\User;
|
||||
use App\Models\Wallet;
|
||||
use App\Models\WalletAgent;
|
||||
use App\Models\WalletIlinkTransaction;
|
||||
use App\Models\WalletsUser;
|
||||
use App\Traits\ApiResponser;
|
||||
use App\Traits\Helper;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
|
||||
class TransmittingNetworksController extends Controller
|
||||
{
|
||||
use ApiResponser;
|
||||
use Helper;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$users = User::paginate($request->get("limit", 10));
|
||||
return ["data" => $users];
|
||||
}
|
||||
|
||||
public function receivePayment(Request $request)
|
||||
{
|
||||
$this->validate($request, [
|
||||
'type' => 'required|integer|in:1,17', // Les types de transactions possibles à recevoir [1,3,17]
|
||||
'montant' => 'required|numeric|min:0|not_in:0',
|
||||
'frais' => 'required|numeric|min:0|not_in:0',
|
||||
'taxe' => 'required|numeric|min:0|not_in:0',
|
||||
'part_reseau_emetteur' => 'required|numeric|min:0|not_in:0',
|
||||
'part_reseau_payeur' => 'required|numeric|min:0|not_in:0',
|
||||
'montant_commission' => 'required|numeric|min:0|not_in:0',
|
||||
'network_emetteur' => 'required|numeric|min:0|not_in:0',
|
||||
'network_destinataire' => 'required|numeric|min:0|not_in:0',
|
||||
'id_transaction_network_emetteur' => 'required',
|
||||
]);
|
||||
|
||||
$configRecipient = ConfigWallet::where('id_network', $request->network_destinataire)->first();
|
||||
$configTransmitter = ConfigWallet::where('id_network', $request->network_emetteur)->first();
|
||||
|
||||
if (!$configRecipient)
|
||||
return $this->errorResponse(trans('errors.recipient_network_not_configured'));
|
||||
|
||||
if ($configRecipient->type != 'ilink')
|
||||
return $this->errorResponse(trans('errors.recipient_network_not_authorized'));
|
||||
|
||||
if (!$configTransmitter)
|
||||
return $this->errorResponse(trans('errors.transmitter_network_not_configured'));
|
||||
|
||||
if ($configTransmitter->type != 'autre')
|
||||
return $this->errorResponse(trans('errors.transmitter_network_not_authorized'));
|
||||
|
||||
$transmittingNetwork = TransmittingNetwork::where('id_network', $request->network_emetteur)->where('id_configWallet', $configRecipient->id)->first();
|
||||
if (!$transmittingNetwork)
|
||||
return $this->errorResponse(trans('errors.transmitter_network_not_recognized'));
|
||||
|
||||
|
||||
$transaction = new WalletIlinkTransaction();
|
||||
$transaction->fill($request->all());
|
||||
$transaction->id_transaction = $this->getTransactionID();
|
||||
$transaction->from_network_emetteur = true;
|
||||
|
||||
//Hyperviseur destinataire
|
||||
$hyperviseurDestinataire = WalletAgent::where('category', 'hyper')->where('network_id', $request->network_destinataire)->firstOrFail();
|
||||
$walletHyper = Wallet::findOrFail($hyperviseurDestinataire->wallet_id);
|
||||
$transaction->id_wallet_hyp = $walletHyper->id;
|
||||
$finalNetwork = Network::findOrFail($request->network_destinataire);
|
||||
$transaction->final_country = $finalNetwork->country->id;
|
||||
$initNetwork = Network::findOrFail($request->network_emetteur);
|
||||
$transaction->init_country = $initNetwork->country->id;
|
||||
$transaction->montant_net = $transaction->montant_net_final_country = $request->montant;
|
||||
$transaction->part_reseau_payeur_final_country = $transaction->part_reseau_payeur;
|
||||
$transaction->status_reseau_payeur = 'EN_COURS';
|
||||
|
||||
switch ($request->type) {
|
||||
case 1:
|
||||
$this->validate($request, [
|
||||
'id_destinataire' => 'required',
|
||||
'nom_emetteur' => 'required',
|
||||
'prenom_emetteur' => 'required',
|
||||
'email_emetteur' => 'required',
|
||||
'type_document_emetteur' => 'required',
|
||||
'id_document_emetteur' => 'required',
|
||||
'id_emetteur' => 'required',
|
||||
]);
|
||||
|
||||
$destinataire = User::where('user_code', $request->id_destinataire)->first();
|
||||
if ($destinataire) { // Si c'est un wallet ilink
|
||||
if ($destinataire->network->country->id == $finalNetwork->country->id) {
|
||||
$walletDestinataire = WalletsUser::where('idUser', $destinataire->id)->firstOrFail();
|
||||
$walletDestinataire->balance += $request->montant;
|
||||
$transaction->id_wallet_user = $walletDestinataire->id;
|
||||
$walletDestinataire->save();
|
||||
} else {
|
||||
return $this->errorResponse(trans('errors.wallet_country_not_match', ['country' => $finalNetwork->country->name]));
|
||||
}
|
||||
} else {
|
||||
return $this->errorResponse(trans('errors.wallet_not_defined'));
|
||||
}
|
||||
|
||||
|
||||
$walletHyper->balance_com += $request->montant_commission;
|
||||
$walletHyper->save();
|
||||
|
||||
$transmittingNetwork->balance_compensation += $request->montant;
|
||||
$transmittingNetwork->balance_com += $request->montant_commission;
|
||||
$transmittingNetwork->save();
|
||||
|
||||
$transaction->commission_hyp = $transaction->commission_hyp_final_country = $request->montant_commission;
|
||||
$transaction->status_reseau_payeur = 'TRAITEE';
|
||||
$transaction->date = $this->getCurrentTimeByCountryCode($initNetwork->country->code_country);
|
||||
$transaction->save();
|
||||
|
||||
$message = trans('messages.wallet_incoming_payment_message',
|
||||
['id_transaction' => $transaction->id_transaction, 'amount' => $this->toMoneyWithNetwork($request->montant, $request->id),
|
||||
'sender_name' => $request->nom_emetteur . ' ' . $request->prenom_emetteur, 'init_country' => $initNetwork->country->name, 'sender_code' => $request->id_emetteur,
|
||||
'final_country' => $finalNetwork->country->name, 'network' => $initNetwork->name, 'receiver_code' => $request->id_destinataire]);
|
||||
|
||||
$this->sendMail($destinataire->email, trans('messages.wallet_incoming_payment'), $message);
|
||||
return $this->successResponse(trans('messages.success_treated_demand'));
|
||||
case 17:
|
||||
$this->validate($request, [
|
||||
'id_emetteur' => 'required',
|
||||
'nom_emetteur' => 'required',
|
||||
'prenom_emetteur' => 'required',
|
||||
'type_document_emetteur' => 'required',
|
||||
'id_document_emetteur' => 'required',
|
||||
'email_emetteur' => 'required',
|
||||
'nom_destinataire' => 'required',
|
||||
'prenom_destinataire' => 'required',
|
||||
'type_document_destinataire' => 'required',
|
||||
'id_document_destinataire' => 'required',
|
||||
'email_destinataire' => 'required',
|
||||
'code_retrait' => 'required|size:16'
|
||||
]);
|
||||
|
||||
$hash = $this->hashSSHA($request->code_retrait);
|
||||
$transaction->encrypted_code_retrait = $hash['encrypted'];
|
||||
$transaction->code_retrait_salt = $hash['salt'];
|
||||
$transaction->status_retrait = false;
|
||||
|
||||
$transaction->commission_ag = floatval($request->montant_commission * $configRecipient->taux_com_ag_envoi_cash / 100);
|
||||
$transaction->commission_sup = floatval($request->montant_commission * $configRecipient->taux_com_sup_envoi_cash / 100);
|
||||
$transaction->commission_hyp = $transaction->commission_hyp_final_country = floatval($request->montant_commission * $configRecipient->taux_com_hyp_envoi_cash / 100);
|
||||
$transaction->date = $this->getCurrentTimeByCountryCode($initNetwork->country->code_country);
|
||||
$transaction->save();
|
||||
|
||||
$message = trans('messages.cash_incoming_payment_message',
|
||||
['amount' => $this->toMoneyWithNetwork($request->montant, $request->id), 'id_transaction' => $transaction->id_transaction,
|
||||
'sender_name' => $request->nom_emetteur . ' ' . $request->prenom_emetteur, 'receiver_name' => $request->nom_destinataire . ' ' . $request->prenom_destinataire,
|
||||
'code' => wordwrap($request->code_retrait, 4, ' ', true), 'init_country' => $initNetwork->country->name,
|
||||
'final_country' => $finalNetwork->country->name, 'network' => $initNetwork->name]);
|
||||
|
||||
$this->sendMail($request->email_destinataire, trans('messages.cash_incoming_payment'), $message);
|
||||
return $this->successResponse(trans('messages.success_treated_demand'));
|
||||
break;
|
||||
case 18:
|
||||
return $this->successResponse(trans('messages.success_treated_demand'));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private function getTransactionID()
|
||||
{
|
||||
do {
|
||||
$code = $this->generateTransactionCode();
|
||||
$result = collect(DB::select('SELECT * FROM wallet_ilink_transaction WHERE id_transaction = :code', ['code' => $code]));
|
||||
$codeCorrect = sizeof($result) < 0;
|
||||
} while ($codeCorrect);
|
||||
return $code;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -9,9 +9,11 @@ use App\Models\WalletAgent;
|
|||
use App\Models\WalletsUser;
|
||||
use App\Traits\ApiResponser;
|
||||
use App\Traits\Helper;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class WalletController extends Controller
|
||||
{
|
||||
|
@ -386,7 +388,7 @@ class WalletController extends Controller
|
|||
* @OA\Parameter(
|
||||
* parameter="id_wallet_network",
|
||||
* name="id_wallet_network",
|
||||
* description="ID du reseau auquel appartient le wallet",
|
||||
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet",
|
||||
* in="path",
|
||||
* required=true,
|
||||
* @OA\Schema(
|
||||
|
@ -430,7 +432,7 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
|
|||
* @OA\Parameter(
|
||||
* parameter="id_wallet_network",
|
||||
* name="id_wallet_network",
|
||||
* description="ID du reseau auquel appartient le wallet",
|
||||
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet",
|
||||
* in="path",
|
||||
* required=true,
|
||||
* @OA\Schema(
|
||||
|
@ -486,7 +488,7 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
|
|||
* @OA\Property(property="id_bank",
|
||||
* type="integer",
|
||||
* example=4,
|
||||
* description="ID de la banque"
|
||||
* description="ID de la banque enregistré dans la base de données"
|
||||
* ),
|
||||
* @OA\Property(property="id_wallet_network",
|
||||
* type="integer",
|
||||
|
@ -496,7 +498,7 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
|
|||
* @OA\Property(property="id_user",
|
||||
* type="integer",
|
||||
* example = 12,
|
||||
* description="ID de l'utilisateur"
|
||||
* description="ID de l'utilisateur enregistré dans la base de données"
|
||||
* )
|
||||
* )
|
||||
* )
|
||||
|
@ -508,7 +510,7 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
|
|||
* ref="#/components/schemas/ApiResponse",
|
||||
* example = {
|
||||
* "status" : 200,
|
||||
* "response" : "Rattachement de votre compte bancaire effectué",
|
||||
* "response" : "Votre requête de rattachement de votre compte bancaire a été prise en compte, vous recevrez un mail de confirmation dès lors que la banque aura validé votre code IBAN",
|
||||
* "error":null
|
||||
* }
|
||||
* )
|
||||
|
@ -527,6 +529,14 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
|
|||
|
||||
$user = User::findOrFail($request->id_user);
|
||||
|
||||
if (isset($user->iban) && isset($user->id_bank_country))
|
||||
return $this->errorResponse(trans('errors.wallet_already_linked_to_bank_account'));
|
||||
|
||||
//Verifier si l'utilisateur est identifié
|
||||
$identification = $this->checkUserIdentification($user->id);
|
||||
if ($identification instanceof JsonResponse)
|
||||
return $identification;
|
||||
|
||||
//Verifier si la banque est associée au reseau
|
||||
$network_bank = NetworksOperator::where('id_network', $request->id_wallet_network)->where('id_operator_country', $request->id_bank)->first();
|
||||
if (!$network_bank)
|
||||
|
@ -547,9 +557,16 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
|
|||
return $this->errorResponse(trans('errors.bank_not_match_iban'));
|
||||
}
|
||||
|
||||
$user->iban = $request->iban;
|
||||
$user->id_bank_country = $request->id_bank;
|
||||
$user->save();
|
||||
// Envoyer une requete vers la banque contant ses informations personnelles pour verfication du code iban
|
||||
// dd($identification);
|
||||
Log::info('-------------------------- User - Rattacher le compte bancaire au wallet ------------------------------------');
|
||||
Log::info(array_merge($request->toArray(), $identification->toArray()));
|
||||
Log::info('------------------------------------------------------------------------------------------------');
|
||||
|
||||
|
||||
// $user->iban = $request->iban;
|
||||
// $user->id_bank_country = $request->id_bank;
|
||||
// $user->save();
|
||||
|
||||
return $this->successResponse(trans('messages.successful_bank_account_attachment'));
|
||||
}
|
||||
|
|
|
@ -485,12 +485,12 @@ class iLinkTransactionController extends Controller
|
|||
* @OA\Property(property="id_wallet_user",
|
||||
* type="integer",
|
||||
* example=9,
|
||||
* description="ID du wallet de l'utilisateur"
|
||||
* description="ID du wallet de l'utilisateur enregistré dans la base de données"
|
||||
* ),
|
||||
* @OA\Property(property="id_wallet_network",
|
||||
* type="integer",
|
||||
* example=101,
|
||||
* description="ID du reseau auquel appartient le wallet"
|
||||
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
|
||||
* ),
|
||||
* @OA\Property(property="montant",
|
||||
* type="number",
|
||||
|
@ -1226,12 +1226,12 @@ class iLinkTransactionController extends Controller
|
|||
* @OA\Property(property="id_wallet_user",
|
||||
* type="integer",
|
||||
* example=9,
|
||||
* description="ID du wallet de l'agent"
|
||||
* description="ID du wallet de l'agent enregistré dans la base de données"
|
||||
* ),
|
||||
* @OA\Property(property="id_wallet_network",
|
||||
* type="integer",
|
||||
* example=101,
|
||||
* description="ID du reseau auquel appartient le wallet"
|
||||
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
|
||||
* ),
|
||||
* @OA\Property(property="iban",
|
||||
* type="string",
|
||||
|
@ -1240,7 +1240,7 @@ class iLinkTransactionController extends Controller
|
|||
* @OA\Property(property="id_bank",
|
||||
* type="integer",
|
||||
* example=4,
|
||||
* description="ID de la banque"
|
||||
* description="ID de la banque enregistré dans la base de données"
|
||||
* ),
|
||||
* @OA\Property(property="nom_emetteur",
|
||||
* type="string",
|
||||
|
@ -1366,12 +1366,12 @@ class iLinkTransactionController extends Controller
|
|||
* @OA\Property(property="id_wallet_user",
|
||||
* type="integer",
|
||||
* example=9,
|
||||
* description="ID du wallet de l'utilisateur"
|
||||
* description="ID du wallet de l'utilisateur enregistré dans la base de données"
|
||||
* ),
|
||||
* @OA\Property(property="id_wallet_network",
|
||||
* type="integer",
|
||||
* example=101,
|
||||
* description="ID du reseau auquel appartient le wallet"
|
||||
* description="ID du reseau enregistré dans la base de données auquel appartient le wallet"
|
||||
* ),
|
||||
* @OA\Property(property="no_facture",
|
||||
* type="string",
|
||||
|
@ -1470,7 +1470,7 @@ class iLinkTransactionController extends Controller
|
|||
* @OA\Property(property="id_wallet_user",
|
||||
* type="integer",
|
||||
* example=9,
|
||||
* description="ID du wallet de l'utilisateur"
|
||||
* description="ID du wallet de l'utilisateur enregistré dans la base de données"
|
||||
* ),
|
||||
* @OA\Property(property="montant",
|
||||
* type="number",
|
||||
|
@ -1903,17 +1903,6 @@ class iLinkTransactionController extends Controller
|
|||
}
|
||||
|
||||
|
||||
private function checkUserIdentification($id_user)
|
||||
{
|
||||
$identification = Identification::where('id_user', $id_user)->first();
|
||||
if (isset($identification)) {
|
||||
if ($identification->status == 0)
|
||||
return $this->errorResponse(trans('errors.validation_user_identification_required'));
|
||||
} else {
|
||||
return $this->errorResponse(trans('errors.user_identification_required'));
|
||||
}
|
||||
}
|
||||
|
||||
// public function index(Request $request){
|
||||
//
|
||||
// $notices = DB::select('select notices.id,notices.title,notices.body,notices.created_at,notices.updated_at,
|
||||
|
|
|
@ -499,4 +499,18 @@ trait Helper
|
|||
return $date->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
// Verifier l'identification d'un utilisateur à partir de son id
|
||||
public function checkUserIdentification($id_user)
|
||||
{
|
||||
$identification = Identification::where('id_user', $id_user)->first();
|
||||
if (isset($identification)) {
|
||||
if ($identification->status == 0)
|
||||
return $this->errorResponse(trans('errors.validation_user_identification_required'));
|
||||
else
|
||||
return $identification;
|
||||
} else {
|
||||
return $this->errorResponse(trans('errors.user_identification_required'));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -83,4 +83,5 @@ Paying network : :network :country',
|
|||
"not_matching_operator" => "This operator is not a :type_operator",
|
||||
"wallet_not_linked_to_bank_account" => "Your wallet is not linked to a bank account",
|
||||
"update_banking_information" => "Update your banking information",
|
||||
"wallet_already_linked_to_bank_account" => "Your wallet is already linked to your bank account",
|
||||
];
|
||||
|
|
|
@ -310,4 +310,5 @@ Transaction Information:
|
|||
- Recipient's names : :receiver_name
|
||||
- IBAN of the recipient : :iban
|
||||
- Bank : :bank :country",
|
||||
'successful_bank_account_attachment_taken' => 'Your request to link your bank account has been taken into account, you will receive a confirmation email as soon as the bank has validated your IBAN code',
|
||||
];
|
||||
|
|
|
@ -83,4 +83,5 @@ Réseau payeur : :network :country',
|
|||
"not_matching_operator" => "Cet opérateur n'est pas un :type_operator",
|
||||
"wallet_not_linked_to_bank_account" => "Votre wallet n'est pas rattaché à un compte bancaire",
|
||||
"update_banking_information" => "Mettez à jour vos informations bancaires",
|
||||
"wallet_already_linked_to_bank_account" => "Votre wallet est déjà rattaché à votre compte bancaire",
|
||||
];
|
||||
|
|
|
@ -311,4 +311,5 @@ Informations de la transaction :
|
|||
- Noms du destinataire : :receiver_name
|
||||
- IBAN du destinataire : :iban
|
||||
- Banque : :bank :country",
|
||||
'successful_bank_account_attachment_taken' => 'Votre requête de rattachement de votre compte bancaire a été prise en compte, vous recevrez un mail de confirmation dès lors que la banque aura validé votre code IBAN.',
|
||||
];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<?php
|
||||
|
||||
/** @var \Laravel\Lumen\Routing\Router $router */
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Application Routes
|
||||
|
@ -16,7 +16,6 @@
|
|||
//});
|
||||
$router->group(['prefix' => '', 'middleware' => 'auth'], function () use ($router) {
|
||||
// Helper routes
|
||||
$router->post('receivePayment', 'TransmittingNetworksController@receivePayment');
|
||||
$router->post('update_password', 'UserController@updatePassword');
|
||||
$router->get('agent_codes/{agent_code}', 'HelperController@agentCodes');
|
||||
$router->get('countries', 'HelperController@countries');
|
||||
|
|
Loading…
Reference in New Issue