+ Update methode to linking bank account to user's wallet

This commit is contained in:
Djery-Tom 2020-12-01 11:51:05 +01:00
parent efe050f1a8
commit d66558708b
2 changed files with 154 additions and 0 deletions

View File

@ -5,6 +5,7 @@ namespace App\Http\Controllers;
use App\Models\Network;
use App\Models\NetworksOperator;
use App\Models\User;
use App\Models\UsersBankingAccountVerification;
use App\Models\WalletAgent;
use App\Models\WalletsUser;
use App\Traits\ApiResponser;
@ -517,6 +518,90 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
* )
* )
*/
/**
* @OA\Schema(
* schema="user_link_bank_account_frame",
* title="User - Rattacher le compte bancaire à son wallet - Trame envoyé",
* @OA\Property(property="id_wallet_user",
* type="integer",
* example=9,
* 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 enregistré dans la base de données auquel appartient le wallet"
* ),
* @OA\Property(property="iban",
* type="string",
* description="Identifiant bancaire"
* ),
* @OA\Property(property="id_bank",
* type="integer",
* example=4,
* description="ID de la banque enregistré dans la base de données"
* ),
* @OA\Property(property="lastname",
* type="string",
* description="Noms de l'emetteur"
* ),
* @OA\Property(property="firstname",
* type="string",
* description="Prenoms de l'emetteur"
* ),
* @OA\Property(property="email_emetteur",
* type="string",
* description="Email de l'emetteur"
* ),
* @OA\Property(property="type_document_emetteur",
* type="string",
* description="Type de document que l'emetteur a fourni pour son identification"
* ),
* @OA\Property(property="id_document_emetteur",
* type="string",
* description="ID de l'emetteur sur le document qu'il a fourni pour son identification"
* ),
* @OA\Property(property="nom_destinataire",
* type="string",
* description="Noms du destinataire"
* ),
* @OA\Property(property="prenom_destinataire",
* type="string",
* description="Prenoms du destinataire"
* ),
* @OA\Property(property="montant",
* type="number",
* example = 10000,
* description="Montant de la transaction"
* ),
* @OA\Property(property="frais",
* type="number",
* example = 100,
* description="Montant des frais de la transaction"
* ),
* @OA\Property(property="taxe",
* type="number",
* example = 50,
* description="Montant des taxes de la transaction"
* ),
* @OA\Property(property="commission_hyp",
* type="number",
* example = 25,
* description="Montant de la commission de l'hyperviseur du réseau sur la transaction"
* ),
* @OA\Property(property="commission_sup",
* type="number",
* example = 25,
* description="Montant de la commission du superviseur de l'agent du réseau sur la transaction"
* ),
* @OA\Property(property="commission_ag",
* type="number",
* example = 25,
* description="Montant de la commission de l'agent géolocalisé sur la transaction"
* ),
* )
*/
// Rattacher le compte bancaire au wallet
public function linkBankAccount(Request $request)
{
@ -557,6 +642,17 @@ 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_banking_account_verif = new UsersBankingAccountVerification();
$user_banking_account_verif->id_transaction = $this->getTransactionID();
$user_banking_account_verif->iban = $request->iban;
$user_banking_account_verif->user_code = $user->user_code;
$user_banking_account_verif->id_bank_country = $request->id_bank;
$user_banking_account_verif->is_verified = $user_banking_account_verif->was_treated = 0;
$user_banking_account_verif->id_network = $request->id_wallet_network;
$user_banking_account_verif->save();
$request->id_transaction = $user_banking_account_verif->id_transaction;
// Envoyer une requete vers la banque contant ses informations personnelles pour verfication du code iban
Log::info('-------------------------- User - Rattacher le compte bancaire au wallet ------------------------------------');
Log::info(array_merge($request->toArray(), $identification->toArray()));
@ -564,4 +660,14 @@ INNER JOIN countries c ON oc.id_country = c.id INNER JOIN type_operators top ON
return $this->successResponse(trans('messages.successful_bank_account_attachment_taken'));
}
private function getTransactionID()
{
do {
$code = $this->generateTransactionCode();
$result = collect(DB::select('SELECT * FROM users_banking_account_verification WHERE id_transaction = :code', ['code' => $code]));
$codeCorrect = sizeof($result) < 0;
} while ($codeCorrect);
return $code;
}
}

View File

@ -0,0 +1,48 @@
<?php
/**
* Created by Reliese Model.
*/
namespace App\Models;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
/**
* Class UsersBankingAccountVerification
*
* @property int $id
* @property string $id_transaction
* @property string $user_code
* @property string $iban
* @property int $id_bank_country
* @property int $id_network
* @property bool $is_verified
* @property bool $was_treated
* @property Carbon $created_at
* @property Carbon $updated_at
*
* @package App\Models
*/
class UsersBankingAccountVerification extends Model
{
protected $table = 'users_banking_account_verification';
protected $casts = [
'id_bank_country' => 'int',
'id_network' => 'int',
'is_verified' => 'bool',
'was_treated' => 'bool'
];
protected $fillable = [
'id_transaction',
'user_code',
'iban',
'id_bank_country',
'id_network',
'is_verified',
'was_treated'
];
}