finish with the integration of created user account fonction
This commit is contained in:
parent
febaee14a3
commit
c5975d9dcd
|
|
@ -79,6 +79,7 @@ $db['default'] = array(
|
||||||
'username' => 'root',
|
'username' => 'root',
|
||||||
'password' => '@iLink@2025',
|
'password' => '@iLink@2025',
|
||||||
'database' => 'iLink_preprod',
|
'database' => 'iLink_preprod',
|
||||||
|
'database' => 'iLink_world',
|
||||||
'dbdriver' => 'mysqli',
|
'dbdriver' => 'mysqli',
|
||||||
'dbprefix' => '',
|
'dbprefix' => '',
|
||||||
'pconnect' => FALSE,
|
'pconnect' => FALSE,
|
||||||
|
|
|
||||||
|
|
@ -2651,8 +2651,6 @@ class Gestion extends CI_Controller
|
||||||
$doc_front = $this->input->post('doc_front');
|
$doc_front = $this->input->post('doc_front');
|
||||||
$doc_back = $this->input->post('doc_back');
|
$doc_back = $this->input->post('doc_back');
|
||||||
|
|
||||||
$this->db->trans_begin();
|
|
||||||
|
|
||||||
$updateLocal = $this->user_model->updateRequestStatus($id, 'validated');
|
$updateLocal = $this->user_model->updateRequestStatus($id, 'validated');
|
||||||
log_message('info', 'Validation de la demande d\'ouverture de compte agence bancaire ID_demande ' . $id);
|
log_message('info', 'Validation de la demande d\'ouverture de compte agence bancaire ID_demande ' . $id);
|
||||||
|
|
||||||
|
|
@ -2689,36 +2687,121 @@ class Gestion extends CI_Controller
|
||||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||||
curl_close($ch);
|
curl_close($ch);
|
||||||
|
|
||||||
|
log_message('info', 'Réponse API lors de l\'ouverture du compte agence bancaire ID_demande ' . $id . ' : ' . $result);
|
||||||
|
|
||||||
if ($result && ($httpCode >= 200 && $httpCode < 300)) {
|
if ($result && ($httpCode >= 200 && $httpCode < 300)) {
|
||||||
|
|
||||||
$this->db->trans_commit();
|
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'success' => 'ok',
|
'success' => 'ok',
|
||||||
'message' => 'Compte créé avec succès.',
|
'message' => 'Compte créé avec succès.'
|
||||||
'api_response' => json_decode($result)
|
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$this->db->trans_rollback();
|
|
||||||
|
|
||||||
echo json_encode([
|
echo json_encode([
|
||||||
'success' => 'false',
|
'success' => 'false',
|
||||||
'message' => 'Un problème est survenu lors de l\'ouverture du compte (' . $httpCode . ')',
|
'message' => 'Un problème est survenu lors de l\'ouverture du compte (' . $result . ')'
|
||||||
'api_error' => $result
|
|
||||||
]);
|
]);
|
||||||
log_message('error', 'Erreur API lors de l\'ouverture du compte agence bancaire ID_demande ' . $id . ' : ' . $result);
|
log_message('error', '------------- Erreur API lors de l\'ouverture du compte agence bancaire ID_demande ' . $id . ' : ' . $result);
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// ECHEC LOCAL : ON ANNULE LA TRANSACTION (ROLLBACK)
|
|
||||||
$this->db->trans_rollback();
|
|
||||||
|
|
||||||
echo json_encode(['alert' => 'error', 'success' => 'false', 'message' => 'Erreur lors de l\'activation du compte']);
|
echo json_encode(['alert' => 'error', 'success' => 'false', 'message' => 'Erreur lors de l\'activation du compte']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------
|
||||||
|
GESTION DES RATTACHEMENTS (LINKS)
|
||||||
|
-------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
public function validate_link_request() {
|
||||||
|
if ($this->isLogged()) {
|
||||||
|
$id = $this->input->post('id_transaction');
|
||||||
|
$iban = $this->input->post('iban');
|
||||||
|
$code_client = $this->input->post('code_client');
|
||||||
|
|
||||||
|
$updateLocal = $this->user_model->updateLinkStatus($id, 1);
|
||||||
|
log_message('info', 'Validation Rattachement ID: ' . $id);
|
||||||
|
|
||||||
|
if ($updateLocal) {
|
||||||
|
|
||||||
|
// Appel API
|
||||||
|
$url = WALLET_SERVICE_URL . '/validate_link_user_bank_account';
|
||||||
|
|
||||||
|
|
||||||
|
$body = [
|
||||||
|
'iban' => $iban,
|
||||||
|
'code_client' => $code_client,
|
||||||
|
'id_transaction' => $id
|
||||||
|
];
|
||||||
|
|
||||||
|
$payload = json_encode($body);
|
||||||
|
|
||||||
|
$ch = curl_init($url);
|
||||||
|
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
|
||||||
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
|
||||||
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
|
||||||
|
'Content-Type: application/json',
|
||||||
|
'Content-Length: ' . strlen($payload),
|
||||||
|
'Authorization: ' . WALLET_SERVICE_TOKEN,
|
||||||
|
'X-localization: ' . ($this->session->userdata('site_lang') == 'french' ? 'fr' : 'en')
|
||||||
|
));
|
||||||
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
|
|
||||||
|
$result = curl_exec($ch);
|
||||||
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||||
|
curl_close($ch);
|
||||||
|
|
||||||
|
if ($result && ($httpCode >= 200 && $httpCode < 300)) {
|
||||||
|
echo json_encode(['success' => 'ok', 'message' => 'Rattachement validé avec succès.']);
|
||||||
|
} else {
|
||||||
|
log_message('error', 'Erreur API Link ID '.$id.' : '.$result);
|
||||||
|
echo json_encode(['success' => 'false', 'message' => 'Erreur API (' . $httpCode . ')', 'api_error' => $result]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode(['success' => 'false', 'message' => 'Erreur DB Locale']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update_link_request() {
|
||||||
|
if ($this->isLogged()) {
|
||||||
|
$id = $this->input->post('id_transaction');
|
||||||
|
|
||||||
|
// On récupère les données du formulaire
|
||||||
|
$data = [];
|
||||||
|
if($this->input->post('iban')) $data['iban'] = $this->input->post('iban');
|
||||||
|
if($this->input->post('code_client')) $data['code_client'] = $this->input->post('code_client');
|
||||||
|
|
||||||
|
// is_verified (Status)
|
||||||
|
if($this->input->post('is_verified') !== null) {
|
||||||
|
$data['is_verified'] = $this->input->post('is_verified');
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->user_model->updateLinkRequest($id, $data);
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
echo json_encode(['success' => 'ok', 'message' => 'Mise à jour réussie']);
|
||||||
|
} else {
|
||||||
|
echo json_encode(['success' => 'false', 'message' => 'Erreur DB']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. SUPPRESSION
|
||||||
|
public function delete_link_request() {
|
||||||
|
if ($this->isLogged()) {
|
||||||
|
$id = $this->input->post('id_transaction');
|
||||||
|
$result = $this->user_model->deleteLinkRequest($id);
|
||||||
|
|
||||||
|
if ($result) {
|
||||||
|
echo json_encode(['success' => 'ok', 'message' => 'Suppression effectuée']);
|
||||||
|
} else {
|
||||||
|
echo json_encode(['success' => 'ko', 'message' => 'Erreur DB']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -224,7 +224,7 @@ if (!function_exists('getStatusBadge')) {
|
||||||
case 'pending':
|
case 'pending':
|
||||||
return '<span class="label label-warning" style="'.$style.'">'.$label.'</span>';
|
return '<span class="label label-warning" style="'.$style.'">'.$label.'</span>';
|
||||||
|
|
||||||
case 'active':
|
case 'actived':
|
||||||
return '<span class="label label-success" style="'.$style.'">'.$label.'</span>';
|
return '<span class="label label-success" style="'.$style.'">'.$label.'</span>';
|
||||||
|
|
||||||
case 'validated':
|
case 'validated':
|
||||||
|
|
|
||||||
|
|
@ -1103,4 +1103,10 @@ $lang['status_validated'] = 'Validated';
|
||||||
$lang['subscriptions_history'] = "Subscription history";
|
$lang['subscriptions_history'] = "Subscription history";
|
||||||
$lang["list_of_request_opening_bank_accounts"] = "List of bank account opening requests";
|
$lang["list_of_request_opening_bank_accounts"] = "List of bank account opening requests";
|
||||||
$lang["product"] = "Product";
|
$lang["product"] = "Product";
|
||||||
|
$lang["status_actived"] = "Actived";
|
||||||
|
$lang["status_rejected"] = "Rejected";
|
||||||
|
$lang["status_validated"] = "Validated";
|
||||||
|
$lang["status_close"] = "Closed";
|
||||||
|
$lang["status_closed"] = "Closed";
|
||||||
|
$lang["status_pernding"]= "Pending";
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -1110,4 +1110,11 @@ $lang['status_rejected'] = 'Rejeté';
|
||||||
$lang['status_validated'] = 'Validé';
|
$lang['status_validated'] = 'Validé';
|
||||||
$lang['subscriptions_history'] = 'Historique des souscriptions';
|
$lang['subscriptions_history'] = 'Historique des souscriptions';
|
||||||
$lang["product"] = "Produit";
|
$lang["product"] = "Produit";
|
||||||
|
$lang["status_actived"] = "Activé";
|
||||||
|
$lang["status_rejected"] = "Rejété";
|
||||||
|
$lang["status_validated"] = "Validé";
|
||||||
|
$lang["status_close"] = "Fermé";
|
||||||
|
$lang["status_closed"] = "Fermé";
|
||||||
|
$lang["status_pernding"]= "En cours";
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -2373,7 +2373,8 @@ class User_model extends CI_Model
|
||||||
u.email,
|
u.email,
|
||||||
u.phone,
|
u.phone,
|
||||||
op.nom as bank_name,
|
op.nom as bank_name,
|
||||||
opc.adresse as bank_address
|
opc.adresse as bank_address,
|
||||||
|
uba.customer_number as code_client
|
||||||
');
|
');
|
||||||
$this->db->from('users_banking_account_verification v');
|
$this->db->from('users_banking_account_verification v');
|
||||||
|
|
||||||
|
|
@ -2381,6 +2382,7 @@ class User_model extends CI_Model
|
||||||
|
|
||||||
$this->db->join('operators_countries opc', 'opc.id = v.id_bank_country', 'left');
|
$this->db->join('operators_countries opc', 'opc.id = v.id_bank_country', 'left');
|
||||||
$this->db->join('operators op', 'op.id = opc.id_operator', 'left');
|
$this->db->join('operators op', 'op.id = opc.id_operator', 'left');
|
||||||
|
$this->db->join('user_bank_accounts uba', 'uba.id_user = u.id', 'left');
|
||||||
|
|
||||||
$this->db->order_by('v.created_at', 'ASC');
|
$this->db->order_by('v.created_at', 'ASC');
|
||||||
|
|
||||||
|
|
@ -2392,4 +2394,22 @@ class User_model extends CI_Model
|
||||||
$this->db->where("id", $id);
|
$this->db->where("id", $id);
|
||||||
return $this->db->update("user_bank_accounts", ['status' => $status, 'reason' => 'En attente d\'activation de compte']);
|
return $this->db->update("user_bank_accounts", ['status' => $status, 'reason' => 'En attente d\'activation de compte']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* GESTION DES RATTACHEMENTS */
|
||||||
|
|
||||||
|
public function updateLinkStatus($id, $status) {
|
||||||
|
$this->db->where('id_transaction', $id);
|
||||||
|
return $this->db->update('users_banking_account_verification', ['is_verified' => $status]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateLinkRequest($id, $data) {
|
||||||
|
$this->db->where('id_transaction', $id);
|
||||||
|
return $this->db->update('users_banking_account_verification', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Suppression
|
||||||
|
public function deleteLinkRequest($id) {
|
||||||
|
$this->db->where('id_transaction', $id);
|
||||||
|
return $this->db->delete('users_banking_account_verification');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,12 +95,9 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-form-label">Parent</label>
|
<label class="col-form-label">Parent</label>
|
||||||
<select class="form-control input-lg" name="parent_id" >
|
<select class="form-control input-lg" name="parent_id" >
|
||||||
<?php if (count($types ?? []) > 1) { ?>
|
<option value="0"><?=$this->lang->line('no_parent')?></option>
|
||||||
<?php foreach ($types ?? [] as $value) { ?>
|
<?php foreach ($types ?? [] as $value) { ?>
|
||||||
<option value="<?=$value->id?>"> <?=$value->name?> </option>
|
<option value="<?=$value->id?>"> <?=$value->name?> </option>
|
||||||
<?php } ?>
|
|
||||||
<?php } else { ?>
|
|
||||||
<option value="0"> <?=$this->lang->line('no_parent')?> </option>
|
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -303,7 +300,7 @@
|
||||||
$("#update-form input[name='opening_amount']").val($(this).data('opening_amount'));
|
$("#update-form input[name='opening_amount']").val($(this).data('opening_amount'));
|
||||||
$("#update-form input[name='opening_amount_payment_period_days']").val($(this).data('opening_amount_payment_period_days'));
|
$("#update-form input[name='opening_amount_payment_period_days']").val($(this).data('opening_amount_payment_period_days'));
|
||||||
|
|
||||||
$("#update-form select[name='parent_id']").empty().append("<option value='0'>"+ "<?this->lang->line('no_parent')?>" + "</option>");
|
$("#update-form select[name='parent_id']").empty().append("<option value='0'>"+ "<?= $this->lang->line('no_parent')?>" + "</option>");
|
||||||
$.each(types, function (j, it) {
|
$.each(types, function (j, it) {
|
||||||
$("#update-form select[name='parent_id']").append(`<option value='${it.id}'>${it.name}</option>`);
|
$("#update-form select[name='parent_id']").append(`<option value='${it.id}'>${it.name}</option>`);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -189,6 +189,7 @@
|
||||||
<th class="text-center">Téléphone</th>
|
<th class="text-center">Téléphone</th>
|
||||||
<th class="text-center">Banque</th>
|
<th class="text-center">Banque</th>
|
||||||
<th class="text-center">IBAN / Compte</th>
|
<th class="text-center">IBAN / Compte</th>
|
||||||
|
<th class="text-center">Code client </th>
|
||||||
<th class="text-center"><?= $this->lang->line('status'); ?></th>
|
<th class="text-center"><?= $this->lang->line('status'); ?></th>
|
||||||
<th class="text-center">Actions</th>
|
<th class="text-center">Actions</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
@ -199,7 +200,7 @@
|
||||||
<?php foreach ($request_links_bank_accounts as $l): ?>
|
<?php foreach ($request_links_bank_accounts as $l): ?>
|
||||||
<?php
|
<?php
|
||||||
$statusStr = 'pending';
|
$statusStr = 'pending';
|
||||||
if($l->is_verified == 1) $statusStr = 'active';
|
if($l->is_verified == 1) $statusStr = 'actived';
|
||||||
if($l->is_verified == 2) $statusStr = 'rejected';
|
if($l->is_verified == 2) $statusStr = 'rejected';
|
||||||
?>
|
?>
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -210,12 +211,13 @@
|
||||||
<?= $l->lastname ?> <?= $l->firstname ?><br>
|
<?= $l->lastname ?> <?= $l->firstname ?><br>
|
||||||
<small class="text-muted"><?= $l->email ?></small>
|
<small class="text-muted"><?= $l->email ?></small>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center"><?= $l->phone ?></td>
|
<td class="text-center"><?= !empty($l->phone) ? $l->phone : '-'; ?></td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<strong><?= $l->bank_name ?></strong><br>
|
<strong><?= $l->bank_name ?></strong><br>
|
||||||
<small><?= substr($l->bank_address, 0, 20) ?>...</small>
|
<small><?= substr($l->bank_address, 0, 20) ?>...</small>
|
||||||
</td>
|
</td>
|
||||||
<td class="text-center"><?= $l->iban ?></td>
|
<td class="text-center"><?= $l->iban ?></td>
|
||||||
|
<td class="text-center"><?= !empty($l->code_client) ? $l->code_client : '-'; ?></td>
|
||||||
<td class="text-center">
|
<td class="text-center">
|
||||||
<?= getStatusBadge($statusStr, $this->lang) ?>
|
<?= getStatusBadge($statusStr, $this->lang) ?>
|
||||||
</td>
|
</td>
|
||||||
|
|
@ -233,11 +235,31 @@
|
||||||
data-bank_name="<?= $l->bank_name ?>"
|
data-bank_name="<?= $l->bank_name ?>"
|
||||||
data-bank_address="<?= $l->bank_address ?>"
|
data-bank_address="<?= $l->bank_address ?>"
|
||||||
data-iban="<?= $l->iban ?>"
|
data-iban="<?= $l->iban ?>"
|
||||||
|
data-code_client="<?= $l->code_client ?>"
|
||||||
data-status="<?= $statusStr ?>"
|
data-status="<?= $statusStr ?>"
|
||||||
data-created_at="<?= $l->created_at ?>"
|
data-created_at="<?= $l->created_at ?>"
|
||||||
>
|
>
|
||||||
<i class='fa fa-eye'></i>
|
<i class='fa fa-eye'></i>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="open-edit-link-modal btn btn-primary btn-sm"
|
||||||
|
data-toggle="modal"
|
||||||
|
data-target="#editLinkModal"
|
||||||
|
title="Modifier"
|
||||||
|
data-id="<?= $l->id_transaction ?>"
|
||||||
|
data-iban="<?= $l->iban ?>"
|
||||||
|
data-code_client="<?= $l->code_client ?>"
|
||||||
|
data-bank_name="<?= $l->bank_name ?>"
|
||||||
|
data-status="<?= $l->is_verified ?>"
|
||||||
|
>
|
||||||
|
<i class='fa fa-edit'></i>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- SUPPRIMER -->
|
||||||
|
<button class="btn btn-danger btn-sm btn-delete-link" data-id="<?= $l->id_transaction ?>" title="Supprimer">
|
||||||
|
<i class='fa fa-trash'></i>
|
||||||
|
</button>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
|
|
@ -250,6 +272,71 @@
|
||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- === MODAL EDIT LINK === -->
|
||||||
|
<div class="modal fade" id="editLinkModal">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||||
|
<h4 class="modal-title">Modifier la demande de rattachement</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<form id="update-link-form">
|
||||||
|
<input type="hidden" name="id_transaction" id="edit_link_id">
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Nom de la Banque</label>
|
||||||
|
<input type="text" name="bank_name" id="edit_link_bank_name" class="form-control" readonly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label>IBAN / Numéro de compte</label>
|
||||||
|
<input type="text" name="iban" id="edit_link_iban" class="form-control">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Code Client</label>
|
||||||
|
<input type="text" name="code_client" id="edit_link_code_client" class="form-control" readonly>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label>Statut</label>
|
||||||
|
<select name="is_verified" id="edit_link_status" class="form-control">
|
||||||
|
<option value="0">En attente</option>
|
||||||
|
<option value="1">Activé </option>
|
||||||
|
<option value="2">Rejeté </option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Annuler</button>
|
||||||
|
<button type="button" class="btn btn-primary" id="btn-save-edit-link">Enregistrer</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- MODAL DELETE LINK -->
|
||||||
|
<div class="modal fade" id="deleteLinkModal">
|
||||||
|
<div class="modal-dialog">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<button type="button" class="close" data-dismiss="modal"><span>×</span></button>
|
||||||
|
<h4 class="modal-title">Confirmer la suppression</h4>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<p>Voulez-vous vraiment supprimer cette demande de rattachement ?</p>
|
||||||
|
<input type="hidden" id="delete_link_id">
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button" class="btn btn-default" data-dismiss="modal">Non</button>
|
||||||
|
<button type="button" id="confirmDeleteLink" class="btn btn-danger">Oui, supprimer</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- =======================================================
|
<!-- =======================================================
|
||||||
MODAL 1 : VÉRIFICATION AGENCE (AGENCY BANKING)
|
MODAL 1 : VÉRIFICATION AGENCE (AGENCY BANKING)
|
||||||
======================================================= -->
|
======================================================= -->
|
||||||
|
|
@ -360,7 +447,7 @@
|
||||||
<input type="hidden" id="link_id_transaction">
|
<input type="hidden" id="link_id_transaction">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12"><h5 class="section-header">Information du Client</h5></div>
|
<div class="col-md-12"><h5 class="section-header">Information du Client</h5></div>
|
||||||
<div class="col-md-6"><span class="view-label">Code Utilisateur :</span> <span class="view-value" id="link_user_code"></span></div>
|
<div class="col-md-6"><span class="view-label">Code wallet Utilisateur :</span> <span class="view-value" id="link_user_code"></span></div>
|
||||||
<div class="col-md-6"><span class="view-label">Nom Complet :</span> <span class="view-value" id="link_fullname"></span></div>
|
<div class="col-md-6"><span class="view-label">Nom Complet :</span> <span class="view-value" id="link_fullname"></span></div>
|
||||||
<div class="col-md-6"><span class="view-label">Email :</span> <span class="view-value" id="link_email"></span></div>
|
<div class="col-md-6"><span class="view-label">Email :</span> <span class="view-value" id="link_email"></span></div>
|
||||||
<div class="col-md-6"><span class="view-label">Téléphone :</span> <span class="view-value" id="link_phone"></span></div>
|
<div class="col-md-6"><span class="view-label">Téléphone :</span> <span class="view-value" id="link_phone"></span></div>
|
||||||
|
|
@ -369,6 +456,7 @@
|
||||||
<div class="col-md-12"><span class="view-label">Nom de la Banque :</span> <span class="view-value" id="link_bank_name"></span></div>
|
<div class="col-md-12"><span class="view-label">Nom de la Banque :</span> <span class="view-value" id="link_bank_name"></span></div>
|
||||||
<div class="col-md-12"><span class="view-label">Adresse Banque :</span> <span class="view-value" id="link_bank_address"></span></div>
|
<div class="col-md-12"><span class="view-label">Adresse Banque :</span> <span class="view-value" id="link_bank_address"></span></div>
|
||||||
<div class="col-md-12"><span class="view-label">IBAN / Numéro Carte :</span> <span class="view-value" id="link_iban" style="font-size: 16px; font-weight:bold; letter-spacing: 1px;"></span></div>
|
<div class="col-md-12"><span class="view-label">IBAN / Numéro Carte :</span> <span class="view-value" id="link_iban" style="font-size: 16px; font-weight:bold; letter-spacing: 1px;"></span></div>
|
||||||
|
<div class="col-md-12"><span class="view-label">Code Client :</span> <span class="view-value" id="link_code_client" style="font-size: 16px; font-weight:bold; letter-spacing: 1px;"></span></div>
|
||||||
|
|
||||||
<div class="col-md-6"><span class="view-label">Date Demande :</span> <span class="view-value" id="link_created_at"></span></div>
|
<div class="col-md-6"><span class="view-label">Date Demande :</span> <span class="view-value" id="link_created_at"></span></div>
|
||||||
<div class="col-md-6"><span class="view-label">Statut Actuel :</span> <span class="view-value" id="link_status"></span></div>
|
<div class="col-md-6"><span class="view-label">Statut Actuel :</span> <span class="view-value" id="link_status"></span></div>
|
||||||
|
|
@ -418,7 +506,7 @@
|
||||||
<label>Statut du compte</label>
|
<label>Statut du compte</label>
|
||||||
<select id="edit_status" name="status" class="form-control input-lg" required>
|
<select id="edit_status" name="status" class="form-control input-lg" required>
|
||||||
<option value="pending">En attente</option>
|
<option value="pending">En attente</option>
|
||||||
<option value="active">Activé</option>
|
<option value="actived">Activé</option>
|
||||||
<option value="validated">Validé</option>
|
<option value="validated">Validé</option>
|
||||||
<option value="rejected">Rejeté</option>
|
<option value="rejected">Rejeté</option>
|
||||||
<option value="close">Fermé</option>
|
<option value="close">Fermé</option>
|
||||||
|
|
@ -529,7 +617,7 @@ $(document).ready(function () {
|
||||||
"pageLength": 10,
|
"pageLength": 10,
|
||||||
"ordering": true,
|
"ordering": true,
|
||||||
"scrollX": true,
|
"scrollX": true,
|
||||||
"order": [[ 0, "desc" ]],
|
"order": [[ 0, "asc" ]],
|
||||||
dom: "<'row'<'col-sm-6'B><'col-sm-6'f>>" +
|
dom: "<'row'<'col-sm-6'B><'col-sm-6'f>>" +
|
||||||
"<'row'<'col-sm-12'tr>>" +
|
"<'row'<'col-sm-12'tr>>" +
|
||||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||||
|
|
@ -541,7 +629,7 @@ $(document).ready(function () {
|
||||||
"pageLength": 10,
|
"pageLength": 10,
|
||||||
"ordering": true,
|
"ordering": true,
|
||||||
"scrollX": true,
|
"scrollX": true,
|
||||||
"order": [[ 0, "desc" ]],
|
"order": [[ 0, "asc" ]],
|
||||||
dom: "<'row'<'col-sm-6'B><'col-sm-6'f>>" +
|
dom: "<'row'<'col-sm-6'B><'col-sm-6'f>>" +
|
||||||
"<'row'<'col-sm-12'tr>>" +
|
"<'row'<'col-sm-12'tr>>" +
|
||||||
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
"<'row'<'col-sm-5'i><'col-sm-7'p>>",
|
||||||
|
|
@ -592,41 +680,48 @@ $(document).ready(function () {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/* =====================================================
|
/* =====================================================
|
||||||
* LOGIQUE MODAL REVIEW (AGENCY & LINK)
|
* 1. OUVERTURE MODAL REVIEW (AGENCY)
|
||||||
* ===================================================== */
|
* ===================================================== */
|
||||||
$(document).on("click", ".open-review-modal", function () {
|
$(document).on("click", ".open-review-modal", function () {
|
||||||
let id = $(this).data("id");
|
let id = $(this).data("id");
|
||||||
|
let status = $(this).data("status"); // On récupère le statut
|
||||||
|
|
||||||
$("#review_id").val(id);
|
$("#review_id").val(id);
|
||||||
|
|
||||||
// Reset de l'interface (On remet les boutons par défaut et on vide le motif)
|
if (status === 'actived') {
|
||||||
|
// Si actif, on désactive le bouton et on change le texte éventuellement
|
||||||
|
$("#btn-validate-request").prop("disabled", true).text("Déjà Actif");
|
||||||
|
$("#btn-reject-request").prop("disabled", true); // Optionnel : désactiver aussi le rejet
|
||||||
|
} else {
|
||||||
|
// Sinon, on le réactive (important si on ouvre une autre ligne après)
|
||||||
|
$("#btn-validate-request").prop("disabled", false).html('<i class="fa fa-check"></i> VALIDER');
|
||||||
|
$("#btn-reject-request").prop("disabled", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset de l'interface UI (Motif rejet caché, etc.)
|
||||||
$("#default-actions").show();
|
$("#default-actions").show();
|
||||||
$("#reject-area").hide();
|
$("#reject-area").hide();
|
||||||
$("#reject_reason").val("");
|
$("#reject_reason").val("");
|
||||||
|
|
||||||
// Remplissage des infos textes
|
// Remplissage des données textes
|
||||||
const fields = ["lastname", "firstname", "account_number", "customer_number", "iban", "balance", "status", "profession", "employer_name", "type", "birth_date", "birth_country", "birth_city", "nationality", "marital_status", "spouse_name", "phone_number", "identification_number", "niu", "employer_address", "employer_city"];
|
const fields = ["lastname", "firstname", "account_number", "iban", "balance", "profession", "employer_name", "sector_activity", "account_type", "birth_date", "phone_number", "customer_number", "spouse_name", "niu", "identification_number", "employer_address", "employer_city", "birth_country", "birth_city", "nationality", "marital_status"];
|
||||||
fields.forEach(f => { $("#view_" + f).text($(this).data(f) || "-"); });
|
fields.forEach(f => { $("#view_" + f).text($(this).data(f) || "-"); });
|
||||||
|
|
||||||
// Gestion des documents
|
// Gestion des documents (inchangé)
|
||||||
let docFront = $(this).data("doc_front");
|
let docFront = $(this).data("doc_front");
|
||||||
let docBack = $(this).data("doc_back");
|
let docBack = $(this).data("doc_back");
|
||||||
$("#hidden_doc_front").val(docFront);
|
$("#hidden_doc_front").val(docFront);
|
||||||
$("#hidden_doc_back").val(docBack);
|
$("#hidden_doc_back").val(docBack);
|
||||||
|
|
||||||
// Affichage Image Front
|
// Affichage images... (inchangé)
|
||||||
if(docFront && docFront !== "") {
|
if(docFront && docFront !== "") {
|
||||||
$("#container_doc_front").html(`<a href="${docFront}" target="_blank"><img src="${docFront}" class="img-thumbnail" style="max-height: 150px;"></a>`);
|
$("#container_doc_front").html(`<a href="${docFront}" target="_blank"><img src="${docFront}" class="img-thumbnail" style="max-height: 150px;"></a>`);
|
||||||
} else {
|
} else { $("#container_doc_front").html('<span class="text-muted">Aucun document</span>'); }
|
||||||
$("#container_doc_front").html('<span class="text-muted">Aucun document</span>');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Affichage Image Back
|
|
||||||
if(docBack && docBack !== "") {
|
if(docBack && docBack !== "") {
|
||||||
$("#container_doc_back").html(`<a href="${docBack}" target="_blank"><img src="${docBack}" class="img-thumbnail" style="max-height: 150px;"></a>`);
|
$("#container_doc_back").html(`<a href="${docBack}" target="_blank"><img src="${docBack}" class="img-thumbnail" style="max-height: 150px;"></a>`);
|
||||||
} else {
|
} else { $("#container_doc_back").html('<span class="text-muted">Aucun document</span>'); }
|
||||||
$("#container_doc_back").html('<span class="text-muted">Aucun document</span>');
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/* =====================================================
|
/* =====================================================
|
||||||
|
|
@ -710,7 +805,7 @@ $(document).ready(function () {
|
||||||
type: "POST",
|
type: "POST",
|
||||||
data: {
|
data: {
|
||||||
id: id,
|
id: id,
|
||||||
status: 'active',
|
status: 'actived',
|
||||||
doc_front: docFront,
|
doc_front: docFront,
|
||||||
doc_back: docBack
|
doc_back: docBack
|
||||||
},
|
},
|
||||||
|
|
@ -739,39 +834,151 @@ $(document).ready(function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Logique Review LINK
|
/* =====================================================
|
||||||
$(document).on("click", ".open-link-review-modal", function () {
|
* GESTION RATTACHEMENT : REVIEW
|
||||||
let id = $(this).data("id");
|
* ===================================================== */
|
||||||
$("#link_id_transaction").val(id);
|
$(document).on("click", ".open-link-review-modal", function () {
|
||||||
$("#link_user_code").text($(this).data("user_code"));
|
|
||||||
$("#link_fullname").text($(this).data("fullname"));
|
let status = $(this).data("status"); // Récupère 'active', 'pending', etc.
|
||||||
$("#link_email").text($(this).data("email"));
|
|
||||||
$("#link_phone").text($(this).data("phone"));
|
|
||||||
$("#link_bank_name").text($(this).data("bank_name"));
|
|
||||||
$("#link_bank_address").text($(this).data("bank_address"));
|
|
||||||
$("#link_iban").text($(this).data("iban"));
|
|
||||||
$("#link_status").text($(this).data("status"));
|
|
||||||
$("#link_created_at").text($(this).data("created_at"));
|
|
||||||
});
|
|
||||||
|
|
||||||
function processLinkRequest(is_verified_status) {
|
// --- GESTION DU BOUTON VALIDATION ---
|
||||||
let id = $("#link_id_transaction").val();
|
if (status === 'active' || status === 'validated' || status == 1) {
|
||||||
$.ajax({
|
$("#btn-validate-link").prop("disabled", true).text("Déjà Validé");
|
||||||
url: "<?= base_url('Gestion/update_link_request'); ?>",
|
$("#btn-reject-link").prop("disabled", true);
|
||||||
type: "POST",
|
} else {
|
||||||
data: { id_transaction: id, is_verified: is_verified_status },
|
$("#btn-validate-link").prop("disabled", false).html('<i class="fa fa-check"></i> Valider');
|
||||||
dataType: "json",
|
$("#btn-reject-link").prop("disabled", false);
|
||||||
success: function (res) {
|
}
|
||||||
if (res && res.success === "ok") {
|
// -------------------------------------
|
||||||
$('#reviewLinkModal').modal('hide');
|
|
||||||
toastr.success(res.message || "Statut mis à jour !");
|
$("#link_id_transaction").val($(this).data("id"));
|
||||||
setTimeout(() => location.reload(), 1500);
|
|
||||||
} else { toastr.error(res.message || "Erreur serveur"); }
|
$("#link_user_code").text($(this).data("user_code"));
|
||||||
}
|
$("#link_fullname").text($(this).data("fullname"));
|
||||||
});
|
$("#link_email").text($(this).data("email"));
|
||||||
}
|
$("#link_phone").text($(this).data("phone"));
|
||||||
$("#btn-validate-link").click(function() { processLinkRequest(1); });
|
|
||||||
$("#btn-reject-link").click(function() { processLinkRequest(2); });
|
$("#link_bank_name").text($(this).data("bank_name"));
|
||||||
|
$("#link_bank_address").text($(this).data("bank_address"));
|
||||||
|
$("#link_iban").text($(this).data("iban"));
|
||||||
|
$("#link_code_client").text($(this).data("code_client"));
|
||||||
|
$("#link_status").text(status);
|
||||||
|
$("#link_created_at").text($(this).data("created_at"));
|
||||||
|
});
|
||||||
|
|
||||||
|
// 2. Valider (API + Transaction)
|
||||||
|
$("#btn-validate-link").click(function() {
|
||||||
|
let iban = $("#link_iban").text();
|
||||||
|
let code_client = $("#link_code_client").text();
|
||||||
|
let transactionId = $("#link_id_transaction").val();
|
||||||
|
|
||||||
|
$(this).prop('disabled', true).html('<i class="fa fa-spinner fa-spin"></i>');
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "<?= base_url('Gestion/validate_link_request'); ?>",
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
iban: iban,
|
||||||
|
code_client: code_client,
|
||||||
|
id_transaction: transactionId
|
||||||
|
},
|
||||||
|
dataType: "json",
|
||||||
|
success: function (res) {
|
||||||
|
if (res && res.success === "ok") {
|
||||||
|
$('#reviewLinkModal').modal('hide');
|
||||||
|
toastr.success(res.message);
|
||||||
|
setTimeout(() => location.reload(), 1500);
|
||||||
|
} else {
|
||||||
|
toastr.error(res.message);
|
||||||
|
$("#btn-validate-link").prop('disabled', false).html('Valider');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
error: function () {
|
||||||
|
toastr.error("Erreur serveur (500)");
|
||||||
|
$("#btn-validate-link").prop('disabled', false).html('Valider');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// 3. Rejeter (Update Local Simple)
|
||||||
|
$("#btn-reject-link").click(function() {
|
||||||
|
let id = $("#link_id_transaction").val();
|
||||||
|
|
||||||
|
if(!confirm("Rejeter cette demande ?")) return;
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
url: "<?= base_url('Gestion/update_link_request'); ?>",
|
||||||
|
type: "POST",
|
||||||
|
data: { id_transaction: id, is_verified: 2 }, // 2 = Rejected
|
||||||
|
dataType: "json",
|
||||||
|
success: function (res) {
|
||||||
|
if (res.success === "ok") {
|
||||||
|
$('#reviewLinkModal').modal('hide');
|
||||||
|
toastr.warning("Demande rejetée");
|
||||||
|
setTimeout(() => location.reload(), 1500);
|
||||||
|
} else {
|
||||||
|
toastr.error("Erreur lors du rejet");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/* =====================================================
|
||||||
|
* GESTION RATTACHEMENT : MODIFIER (EDIT)
|
||||||
|
* ===================================================== */
|
||||||
|
$(document).on("click", ".open-edit-link-modal", function () {
|
||||||
|
$("#edit_link_id").val($(this).data("id"));
|
||||||
|
$("#edit_link_iban").val($(this).data("iban"));
|
||||||
|
$("#edit_link_code_client").val($(this).data("code_client"));
|
||||||
|
$("#edit_link_bank_name").val($(this).data("bank_name"));
|
||||||
|
$("#edit_link_status").val($(this).data("status"));
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#btn-save-edit-link").click(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: "<?= base_url('Gestion/update_link_request'); ?>",
|
||||||
|
type: "POST",
|
||||||
|
data: $("#update-link-form").serialize(),
|
||||||
|
dataType: "json",
|
||||||
|
success: function (res) {
|
||||||
|
if (res.success === "ok") {
|
||||||
|
$('#editLinkModal').modal('hide');
|
||||||
|
toastr.success("Modifications enregistrées");
|
||||||
|
setTimeout(() => location.reload(), 1500);
|
||||||
|
} else {
|
||||||
|
toastr.error("Erreur lors de la mise à jour");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/* =====================================================
|
||||||
|
* GESTION RATTACHEMENT : SUPPRIMER (DELETE)
|
||||||
|
* ===================================================== */
|
||||||
|
|
||||||
|
$(document).on("click", ".btn-delete-link", function() {
|
||||||
|
let id = $(this).data('id');
|
||||||
|
$("#delete_link_id").val(id);
|
||||||
|
$("#deleteLinkModal").modal("show");
|
||||||
|
});
|
||||||
|
|
||||||
|
$("#confirmDeleteLink").click(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: "<?= base_url('Gestion/delete_link_request'); ?>",
|
||||||
|
type: "POST",
|
||||||
|
data: { id_transaction: $("#delete_link_id").val() },
|
||||||
|
dataType: "json",
|
||||||
|
success: function (res) {
|
||||||
|
if (res.success === "ok") {
|
||||||
|
$('#deleteLinkModal').modal('hide');
|
||||||
|
toastr.success("Suppression réussie");
|
||||||
|
setTimeout(() => location.reload(), 1500);
|
||||||
|
} else {
|
||||||
|
toastr.error("Erreur lors de la suppression");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
/* =====================================================
|
/* =====================================================
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue