CHANGE_CLAIMS_MODEULE : RV
This commit is contained in:
parent
55e4b9ec17
commit
3e382d5c6e
@ -338,6 +338,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) {
|
|||||||
$routes->get('transformMailContent', 'LeadsController::transformMailContent');
|
$routes->get('transformMailContent', 'LeadsController::transformMailContent');
|
||||||
$routes->get('getCDAmount', 'ClientController::getCDAmount');
|
$routes->get('getCDAmount', 'ClientController::getCDAmount');
|
||||||
$routes->get('getTheEmpDataForClaim/(:any)', 'ClientController::getTheEmpDataForClaim/$1');
|
$routes->get('getTheEmpDataForClaim/(:any)', 'ClientController::getTheEmpDataForClaim/$1');
|
||||||
|
$routes->get('getTheEmpDataForClaimSearchByMobile/(:any)', 'ClientController::getTheEmpDataForClaimSearchByMobile/$1');
|
||||||
});
|
});
|
||||||
|
|
||||||
$routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) {
|
$routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) {
|
||||||
|
|||||||
@ -4140,44 +4140,176 @@ class ClientController extends AdminController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTheEmpDataForClaim($client_policy_id)
|
// -----------Function for Claim Module--------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
public function getTheEmpDataForClaim($param, $type = null)
|
||||||
{
|
{
|
||||||
$data = $this->clientPolicyModel->select("
|
// Construct the base query
|
||||||
|
$data = $this->clientPolicyModel
|
||||||
clients.id as client_id,
|
->select("
|
||||||
|
clients.id AS client_id,
|
||||||
clients.client_name,
|
clients.client_name,
|
||||||
insurers.id as insurer_id,
|
insurers.id AS insurer_id,
|
||||||
insurers.name as insurer_name,
|
insurers.name AS insurer_name,
|
||||||
tpa.id as tpa_id,
|
tpa.id AS tpa_id,
|
||||||
tpa.name as tpa_name,
|
tpa.name AS tpa_name,
|
||||||
|
employees.id AS emp_id,
|
||||||
employees.id as emp_id,
|
employees.name AS emp_name,
|
||||||
employees.name as emp_name,
|
|
||||||
employees.emp_code,
|
employees.emp_code,
|
||||||
employees.mobile as emp_mobile,
|
employees.mobile AS emp_mobile,
|
||||||
employees.email_corporate as emp_email,
|
employees.email_corporate AS emp_email,
|
||||||
|
employees.relationship AS emp_relationship,
|
||||||
employee_polices.uhid as policy_no,
|
employee_polices.uhid AS policy_no
|
||||||
")
|
")
|
||||||
->join('clients', 'client_policy.client_id = clients.id', 'left')
|
->join('clients', 'client_policy.client_id = clients.id', 'left')
|
||||||
->join('insurers', 'client_policy.insurer_id = insurers.id', 'left')
|
->join('insurers', 'client_policy.insurer_id = insurers.id', 'left')
|
||||||
->join('tpa', 'client_policy.tpa_id = tpa.id', 'left')
|
->join('tpa', 'client_policy.tpa_id = tpa.id', 'left')
|
||||||
->join('employees', 'clients.id = employees.client_id', 'left')
|
->join('employees', 'clients.id = employees.client_id', 'left')
|
||||||
->join('employee_polices', 'employees.id = employee_polices.employee_id', 'left')
|
->join('employee_polices', 'employees.id = employee_polices.employee_id', 'left')
|
||||||
->where('client_policy.id',)
|
|
||||||
->where('client_policy.is_active', 1)
|
->where('client_policy.is_active', 1)
|
||||||
->where('insurers.is_active', 1)
|
->where('insurers.is_active', 1)
|
||||||
->where('tpa.is_active', 1)
|
->where('tpa.is_active', 1)
|
||||||
->where('employees.is_active', 1)
|
->where('employees.is_active', 1)
|
||||||
|
->where('employees.relationship', "Self")
|
||||||
->where('employee_polices.is_active', 1)
|
->where('employee_polices.is_active', 1)
|
||||||
->where('client_policy.id', $client_policy_id)
|
->where('client_policy.id', $param)
|
||||||
->findAll();
|
->findAll();
|
||||||
|
|
||||||
if($data){
|
$dataForClientAndInsurer = [];
|
||||||
return $this->respond(['status' => true, 'code' => 200, 'data' => $data], 200);
|
$memberData = [];
|
||||||
|
|
||||||
|
// Respond based on the query result
|
||||||
|
if (!empty($data) || !empty($dataForClientAndInsurer)) {
|
||||||
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'code' => 200,
|
||||||
|
'message' => 'Data found',
|
||||||
|
'data' => $data,
|
||||||
|
'param' => $param,
|
||||||
|
'type' => $type,
|
||||||
|
'dataForClientAndInsurer' => $dataForClientAndInsurer,
|
||||||
|
'memberData' => $memberData
|
||||||
|
], 200);
|
||||||
} else {
|
} else {
|
||||||
return $this->respond(['status' => false, 'code' => 404, 'message' => 'no data found', "client_policy_id" =>$client_policy_id], 200);
|
return $this->respond([
|
||||||
|
'status' => false,
|
||||||
|
'code' => 404,
|
||||||
|
'message' => 'No data found',
|
||||||
|
'param' => $param,
|
||||||
|
'type' => $type,
|
||||||
|
'dataForClientAndInsurer' => $dataForClientAndInsurer,
|
||||||
|
'memberData' => $memberData
|
||||||
|
], 404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getTheEmpDataForClaimSearchByMobile($param, $type = 'mobile')
|
||||||
|
{
|
||||||
|
$field_name = 'employees.' . $type;
|
||||||
|
|
||||||
|
// Construct the base query
|
||||||
|
$data = $this->clientPolicyModel
|
||||||
|
->select("
|
||||||
|
clients.id AS client_id,
|
||||||
|
clients.client_name,
|
||||||
|
insurers.id AS insurer_id,
|
||||||
|
insurers.name AS insurer_name,
|
||||||
|
tpa.id AS tpa_id,
|
||||||
|
tpa.name AS tpa_name,
|
||||||
|
employees.id AS emp_id,
|
||||||
|
employees.name AS emp_name,
|
||||||
|
employees.emp_code,
|
||||||
|
employees.mobile AS emp_mobile,
|
||||||
|
employees.email_corporate AS emp_email,
|
||||||
|
employees.relationship AS emp_relationship,
|
||||||
|
employee_polices.uhid AS policy_no,
|
||||||
|
employee_polices.tpa_id AS tpa_no
|
||||||
|
")
|
||||||
|
->join('clients', 'client_policy.client_id = clients.id', 'left')
|
||||||
|
->join('insurers', 'client_policy.insurer_id = insurers.id', 'left')
|
||||||
|
->join('tpa', 'client_policy.tpa_id = tpa.id', 'left')
|
||||||
|
->join('employees', 'clients.id = employees.client_id', 'left')
|
||||||
|
->join('employee_polices', 'employees.id = employee_polices.employee_id', 'left')
|
||||||
|
->where('client_policy.is_active', 1)
|
||||||
|
->where('insurers.is_active', 1)
|
||||||
|
->where('tpa.is_active', 1)
|
||||||
|
->where('employees.is_active', 1)
|
||||||
|
->where('employees.relationship', "Self")
|
||||||
|
->where('employee_polices.is_active', 1)
|
||||||
|
->where($field_name, $param)
|
||||||
|
->groupBy('employees.id')
|
||||||
|
->orderBy('employees.id', 'DESC')
|
||||||
|
->first();
|
||||||
|
|
||||||
|
$memberData = [];
|
||||||
|
$dataForClientAndInsurer = [];
|
||||||
|
|
||||||
|
$acms = db_connect()->table('user_profiles')
|
||||||
|
->select('user_profiles.id, user_profiles.first_name')
|
||||||
|
->where('user_profiles.is_active', 1)
|
||||||
|
->where('user_profiles.role', 3)
|
||||||
|
->get()
|
||||||
|
->getResultArray();
|
||||||
|
|
||||||
|
if(!empty($data) && count($data) > 0){
|
||||||
|
|
||||||
|
$memberData = $this->employeeModel
|
||||||
|
->select("
|
||||||
|
employees.id AS emp_id,
|
||||||
|
employees.name AS emp_name,
|
||||||
|
employees.emp_code,
|
||||||
|
employees.mobile AS emp_mobile,
|
||||||
|
employees.email_corporate AS emp_email,
|
||||||
|
employees.relationship AS emp_relationship,
|
||||||
|
employee_polices.uhid AS policy_no,
|
||||||
|
employee_polices.tpa_id AS tpa_no
|
||||||
|
")
|
||||||
|
->join('employee_polices', 'employees.id = employee_polices.employee_id', 'left')
|
||||||
|
->where('employees.is_active', 1)
|
||||||
|
->where('employee_polices.is_active', 1)
|
||||||
|
->where('employees.emp_code', $data['emp_code'])
|
||||||
|
->groupBy('employees.id')
|
||||||
|
->findAll();
|
||||||
|
|
||||||
|
$acms = $this->clientRMModel
|
||||||
|
->select('user_profiles.id, user_profiles.first_name')
|
||||||
|
->join('clients', 'client_rm.client_id = clients.id', 'left')
|
||||||
|
->join('user_profiles', 'client_rm.user_id = user_profiles.id', 'left')
|
||||||
|
->where('clients.is_active', 1)
|
||||||
|
->where('client_rm.is_active', 1)
|
||||||
|
->where('user_profiles.is_active', 1)
|
||||||
|
->where('clients.id', $data['client_id'])
|
||||||
|
->findAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Respond based on the query result
|
||||||
|
if (!empty($data)) {
|
||||||
|
return $this->respond([
|
||||||
|
'status' => true,
|
||||||
|
'code' => 200,
|
||||||
|
'message' => 'Data found',
|
||||||
|
'data' => $data,
|
||||||
|
'param' => $param,
|
||||||
|
'type' => $type,
|
||||||
|
'dataForClientAndInsurer' => $dataForClientAndInsurer,
|
||||||
|
'memberData' => $memberData,
|
||||||
|
'acms' => $acms,
|
||||||
|
], 200);
|
||||||
|
} else {
|
||||||
|
return $this->respond([
|
||||||
|
'status' => false,
|
||||||
|
'code' => 404,
|
||||||
|
'message' => 'No data found',
|
||||||
|
'param' => $param,
|
||||||
|
'type' => $type,
|
||||||
|
'dataForClientAndInsurer' => $dataForClientAndInsurer,
|
||||||
|
'memberData' => $memberData,
|
||||||
|
'acms' => $acms
|
||||||
|
], 200);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,6 +14,8 @@ use App\Models\TicketNoteModel;
|
|||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use Kint\Kint;
|
use Kint\Kint;
|
||||||
|
|
||||||
|
use App\Helpers\MailHelper;
|
||||||
|
|
||||||
use CodeIgniter\API\ResponseTrait;
|
use CodeIgniter\API\ResponseTrait;
|
||||||
|
|
||||||
class TicketController extends BaseController
|
class TicketController extends BaseController
|
||||||
@ -92,9 +94,16 @@ class TicketController extends BaseController
|
|||||||
7 => "Trigger 7"
|
7 => "Trigger 7"
|
||||||
];
|
];
|
||||||
|
|
||||||
$this->placeHolders = ['member_name', 'nhance_logo', 'tpa_id', 'ecard_download_link',
|
$this->placeHolders = [
|
||||||
'client_logo', 'policy_no', 'member_summary', 'app_link', 'post_enrollment_app_link',
|
|
||||||
'client_name'];
|
'((ACM))' => 'acm',
|
||||||
|
'((ACM_CONTACT))' => 'acm_mobile',
|
||||||
|
'((EMPLOYEE_NAME)' => 'emp_name',
|
||||||
|
'((EMPLOYEE_ID))' => 'emp_code',
|
||||||
|
'((CORPORATE_NAME))' => 'client_name',
|
||||||
|
'((INSURED_NAME]' => 'insured_emp_name',
|
||||||
|
'((CLAIM_NO))' => 'claim_no',
|
||||||
|
];
|
||||||
|
|
||||||
$this->ticketMasterModel = new TicketMasterModel();
|
$this->ticketMasterModel = new TicketMasterModel();
|
||||||
$this->claimStatus = new TicketClaimStatusModel();
|
$this->claimStatus = new TicketClaimStatusModel();
|
||||||
@ -171,7 +180,7 @@ class TicketController extends BaseController
|
|||||||
->get()
|
->get()
|
||||||
->getResultArray();
|
->getResultArray();
|
||||||
|
|
||||||
$data['claim_status'] = db_connect()->table('ticket_claim_status')
|
$data['claim_status'] = $this->claimStatus
|
||||||
->select('ticket_claim_status.*')
|
->select('ticket_claim_status.*')
|
||||||
->where('ticket_claim_status.is_active', 1)
|
->where('ticket_claim_status.is_active', 1)
|
||||||
->where('ticket_claim_status.ticket_type', $ticket_type)
|
->where('ticket_claim_status.ticket_type', $ticket_type)
|
||||||
@ -201,7 +210,6 @@ class TicketController extends BaseController
|
|||||||
// dd($ticket_data);
|
// dd($ticket_data);
|
||||||
$data = $this->ticket_form_data($ticket_data['ticket_type_id']);
|
$data = $this->ticket_form_data($ticket_data['ticket_type_id']);
|
||||||
$data['ticket_data'] = $ticket_data;
|
$data['ticket_data'] = $ticket_data;
|
||||||
$data['ticket_note'] = $this->ticketNoteModel->where('is_active', 1)->findAll();
|
|
||||||
return $this->loadLayout('ticket_edit_onbording', $data);
|
return $this->loadLayout('ticket_edit_onbording', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -283,6 +291,7 @@ class TicketController extends BaseController
|
|||||||
$ticket_data = $this->request->getPost();
|
$ticket_data = $this->request->getPost();
|
||||||
$ticket_data = $this->formatDateForClaim($ticket_data);
|
$ticket_data = $this->formatDateForClaim($ticket_data);
|
||||||
// print_rr($ticket_data); die;
|
// print_rr($ticket_data); die;
|
||||||
|
$old_ticket_data = $this->ticketMasterModel->where('id', $ticket_id)->where('is_active', 1)->first();
|
||||||
|
|
||||||
if($ticket_data){
|
if($ticket_data){
|
||||||
$return_value = $this->ticketMasterModel->where('id', $ticket_id)->set($ticket_data)->update();
|
$return_value = $this->ticketMasterModel->where('id', $ticket_id)->set($ticket_data)->update();
|
||||||
@ -355,4 +364,28 @@ class TicketController extends BaseController
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function sendTringger($ticket_id = 13)
|
||||||
|
{
|
||||||
|
$ticket_data = $this->ticketMasterModel->where('id', $ticket_id)->where('is_active', 1)->first();
|
||||||
|
|
||||||
|
$template_data = $this->claimStatus
|
||||||
|
->select('ticket_mail_template.*')
|
||||||
|
->join('ticket_mail_template', 'ticket_mail_template.trigger_type = ticket_claim_status.trigger_type')
|
||||||
|
->where('ticket_mail_template.is_ative', 1)
|
||||||
|
->where('ticket_claim_status.is_ative', 1)
|
||||||
|
->where('id', $ticket_data['claim_status_id'])
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if(!empty($template_data)){
|
||||||
|
$res = MailHelper::send_email(['mail' => $ticket_data['emp_email'], 'subject' => 'Mail Via Attachment Testing URL', 'message' => "",'attachments' => []]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function placeholderReplace($template_data, $ticket_data)
|
||||||
|
{
|
||||||
|
$placeholders = $this->placeHolders;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -78,19 +78,19 @@
|
|||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="insurer_id">Insurer<span class="text-danger"></span></label>
|
<label for="insurer_id">Insurer<span class="text-danger"></span></label>
|
||||||
<input type=hidden id="insurer_id" name="insurer_id" value="<?= isset($ticket_data['insurer_id']) ? $ticket_data['insurer_id'] : '' ?>">
|
<input type=hidden id="insurer_id" name="insurer_id" value="<?= isset($ticket_data['insurer_id']) ? $ticket_data['insurer_id'] : '' ?>">
|
||||||
<input type=text class="form-control" id="insurer_name" placeholder="Insurer" value="<?= isset($ticket_data['insurer_name']) ? $ticket_data['insurer_name'] : '' ?>">
|
<input type=text class="form-control" id="insurer_name" placeholder="Insurer" value="<?= isset($ticket_data['insurer_name']) ? $ticket_data['insurer_name'] : '' ?>" readonly>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="tpa_id">TPA<span class="text-danger"></span></label>
|
<label for="tpa_id">TPA<span class="text-danger"></span></label>
|
||||||
<input type=hidden id="tpa_id" name="tpa_id" value="<?= isset($ticket_data['tpa_id']) ? $ticket_data['tpa_id'] : '' ?>">
|
<input type=hidden id="tpa_id" name="tpa_id" value="<?= isset($ticket_data['tpa_id']) ? $ticket_data['tpa_id'] : '' ?>">
|
||||||
<input type=text class="form-control" id="tpa_name" placeholder="TPA" value="<?= isset($ticket_data['tpa_name']) ? $ticket_data['tpa_name'] : '' ?>">
|
<input type=text class="form-control" id="tpa_name" placeholder="TPA" value="<?= isset($ticket_data['tpa_name']) ? $ticket_data['tpa_name'] : '' ?>" readonly>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
<label for="client_name">Corporate Name<span class="text-danger"></span></label>
|
<label for="client_name">Corporate Name<span class="text-danger"></span></label>
|
||||||
<input type="hidden" id="client_id" name="client_id" value="<?= isset($ticket_data['client_id']) ? $ticket_data['client_id'] : '' ?>">
|
<input type="hidden" id="client_id" name="client_id" value="<?= isset($ticket_data['client_id']) ? $ticket_data['client_id'] : '' ?>">
|
||||||
<input type="text" class="form-control" id="client_name" placeholder="Client" value="<?= isset($ticket_data['client_name']) ? $ticket_data['client_name'] : '' ?>">
|
<input type="text" class="form-control" id="client_name" placeholder="Client" value="<?= isset($ticket_data['client_name']) ? $ticket_data['client_name'] : '' ?>" readonly>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group col-md-3">
|
<div class="form-group col-md-3">
|
||||||
|
|||||||
@ -58,7 +58,7 @@ if ($ticket_form == 1) {
|
|||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="empDetailsModalLabel">Fetch Employee Data</h5>
|
<h5 class="modal-title" id="empDetailsModalLabel">Fetch Employee Data</h5>
|
||||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close" onclick="toResetTheModelFields()">
|
||||||
<span aria-hidden="true">×</span>
|
<span aria-hidden="true">×</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@ -73,56 +73,55 @@ if ($ticket_form == 1) {
|
|||||||
<div class="accordion-content" id="mobileAccordion">
|
<div class="accordion-content" id="mobileAccordion">
|
||||||
<div id="mobileSearch" class="search-method">
|
<div id="mobileSearch" class="search-method">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8">
|
|
||||||
|
<div class="col-md-5" style="display:true;">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Employee Mobile Number</label>
|
<label>Employee Data Points</label>
|
||||||
<input class="form-control" type="text" id="mobile_number"
|
<select name="employee_data_points" id="employee_data_points" class="form-control">
|
||||||
name="mobile_numbers" onkeypress="return onlyNumbers(event)">
|
<option value="mobile">Employee Mobile Number</option>
|
||||||
|
<option value="emp_code">Employee ID</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-5">
|
||||||
|
<div class="form-group">
|
||||||
|
<label id="employee_data_points_label">Employee Mobile Number</label>
|
||||||
|
<input class="form-control" type="text" id="emp_mobile_number_for_claim"
|
||||||
|
name="mobile_numbers" onkeypress="return onlyNumbers(event)" maxlength="10">
|
||||||
</div>
|
</div>
|
||||||
<div class="text-danger" id="error_dis"></div>
|
<div class="text-danger" id="error_dis"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-2">
|
||||||
<div class="form-group" style="margin-top: 9px;">
|
<div class="form-group" style="margin-top: 9px;">
|
||||||
<br>
|
<br>
|
||||||
<button class="btn btn-primary"
|
<button class="btn btn-primary"
|
||||||
onclick="searchMobileNumber($('#mobile_number').val())">Search</button>
|
onclick="getTheEmpDataForClaimSearchByMobile(this)">Search</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="emp_member_policy_div" style="display:none;">
|
<div id="emp_member_policy_div" style="display:true;">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-5" style="display:none;">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Employee</label>
|
<label>Employee</label>
|
||||||
<select name="employee_by_number" id="employee_by_number"
|
<select name="employee_by_number" id="employee_by_number"
|
||||||
class="form-control SelExample" onchange="get_member_by_employee(this)">
|
class="form-control SelExample">
|
||||||
<option value="0">Select Employee</option>
|
<option value="0">Select Employee</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-5">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Member List</label>
|
<label>Insured List</label>
|
||||||
<select name="member_by_number" id="member_by_number"
|
<select name="employee_by_number" id="member_by_number"
|
||||||
class="form-control SelExample"
|
class="form-control SelExample" onchange="setMemberData(this)">
|
||||||
onchange="get_emp_policy(this), setMemberDetails(this)">
|
|
||||||
<option value="0">Select Member</option>
|
<option value="0">Select Member</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
|
||||||
<div class="form-group">
|
|
||||||
<label>Policy</label>
|
|
||||||
<select id="policy_by_number" name="policy_by_number"
|
|
||||||
class="form-control custom-select">
|
|
||||||
<option value="">Select Policy</option>
|
|
||||||
</select>
|
|
||||||
<input type="text" id="policy_name" name="policy_name" hidden>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -135,49 +134,51 @@ if ($ticket_form == 1) {
|
|||||||
</h4>
|
</h4>
|
||||||
<div class="accordion-content" id="clientBranchAccordion">
|
<div class="accordion-content" id="clientBranchAccordion">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-4">
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Client</label>
|
<label>Client</label>
|
||||||
<select id="emp_client_data_list" name="client"
|
<select id="emp_client_data_list" name="client"
|
||||||
class="form-control custom-select" onchange="get_branch_list(this)">
|
class="form-control custom-select">
|
||||||
<option value="">Select Client</option>
|
<option value="0">Select Client</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Branch</label>
|
<label>Branch</label>
|
||||||
<select id="emp_client_branch_data_list" name="branch"
|
<select id="emp_client_branch_data_list" name="branch"
|
||||||
class="form-control custom-select" onchange="get_policies_list(this)">
|
class="form-control custom-select">
|
||||||
<option value="">Select Branch</option>
|
<option value="0">Select Branch</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Policy</label>
|
<label>Policy</label>
|
||||||
<select id="emp_client_policy_data_list" name="policy_client_branch"
|
<select id="emp_client_policy_data_list" name="policy_client_branch"
|
||||||
class="form-control custom-select" onchange="getEmpData(this)">
|
class="form-control custom-select" onchange="getEmpData(this)">
|
||||||
<option value="">Select Policy</option>
|
<option value="0">Select Policy</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Employee</label>
|
<label>Employee</label>
|
||||||
<select name="employee" id="employee" class="form-control SelExample"
|
<select name="search_by_client_employee" id="search_by_client_employee"
|
||||||
onchange="check_policy_gpa_gmc(this)">
|
class="form-control SelExample" onchange="getTheEmpDataForClaimSearchByMobile(this, 'client')">
|
||||||
<option value="0">Select Employee</option>
|
<option value="0">Select Employee</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
|
||||||
|
<div class="col-md-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label>Insured List</label>
|
<label>Insured List</label>
|
||||||
<select name="member" id="member" class="form-control SelExample"
|
<select name="member" id="search_by_client_member"
|
||||||
onchange="member_change_client_branch(this), setMemberDetails(this)">
|
class="form-control SelExample" onchange="setMemberData(this)">
|
||||||
<option value="0">Select Member</option>
|
<option value="0">Select Member</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
@ -187,9 +188,10 @@ if ($ticket_form == 1) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- <div class="modal-footer">
|
<div class="modal-footer">
|
||||||
<button type="button" class="btn btn-secondary" data-dismiss="modal">Submit</button>
|
<a class="btn btn-primary close" data-dismiss="modal" aria-label="Close" onclick="toResetTheModelFields()">Submit</a>
|
||||||
</div> -->
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -200,7 +202,49 @@ var branch_list = ''; // local variable for storing the client branch list
|
|||||||
var policy_list = ''; // local variable for storing the client policy list
|
var policy_list = ''; // local variable for storing the client policy list
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
getClientAndBranchAndPolicy()
|
getClientAndBranchAndPolicy();
|
||||||
|
$('#emp_client_data_list').select2();
|
||||||
|
$('#emp_client_branch_data_list').select2();
|
||||||
|
$('#emp_client_policy_data_list').select2();
|
||||||
|
$('#search_by_client_member').select2();
|
||||||
|
$('#search_by_client_employee').select2();
|
||||||
|
$('#employee_by_number').select2();
|
||||||
|
$('#member_by_number').select2();
|
||||||
|
})
|
||||||
|
|
||||||
|
//on change functions
|
||||||
|
$(document).ready(function() {
|
||||||
|
|
||||||
|
$('#emp_client_data_list').change(function() {
|
||||||
|
|
||||||
|
let client_id = $(this).val();
|
||||||
|
let client_name = $('#emp_client_data_list option:selected').data('name');
|
||||||
|
|
||||||
|
console.log('client_id', client_id);
|
||||||
|
console.log('client_name', client_name);
|
||||||
|
|
||||||
|
if (branch_list != '') {
|
||||||
|
// console.log(branch_list[client_id]);
|
||||||
|
let data = branch_list[client_id];
|
||||||
|
appendBranch(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
$('#emp_client_branch_data_list').change(function() {
|
||||||
|
|
||||||
|
let branch_id = $(this).val();
|
||||||
|
|
||||||
|
console.log('branch_id', branch_id);
|
||||||
|
|
||||||
|
if (policy_list != '') {
|
||||||
|
// console.log(branch_list[client_id]);
|
||||||
|
let data = policy_list[branch_id];
|
||||||
|
appendPolicy(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
function toggleAccordion(id) {
|
function toggleAccordion(id) {
|
||||||
@ -222,6 +266,7 @@ function openFetchEmpDataodal() {
|
|||||||
myModal.show();
|
myModal.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//get client , branch, policy data
|
||||||
function getClientAndBranchAndPolicy() {
|
function getClientAndBranchAndPolicy() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: '<?= base_url("/util/getClientAndBranchAndPolicy") ?>',
|
url: '<?= base_url("/util/getClientAndBranchAndPolicy") ?>',
|
||||||
@ -247,11 +292,12 @@ function getClientAndBranchAndPolicy() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//append the clients data to the modal
|
||||||
function appendClients(data) {
|
function appendClients(data) {
|
||||||
$('#emp_client_data_list').empty();
|
$('#emp_client_data_list').empty();
|
||||||
|
|
||||||
$('#emp_client_data_list').append($('<option>', {
|
$('#emp_client_data_list').append($('<option>', {
|
||||||
value: '',
|
value: '0',
|
||||||
text: 'Select Client'
|
text: 'Select Client'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -262,16 +308,17 @@ function appendClients(data) {
|
|||||||
'data-name': item.client_name,
|
'data-name': item.client_name,
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#emp_client_data_list').append(option);
|
$('#emp_client_data_list').append(option).select2();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//append the clients branch data to the modal
|
||||||
function appendBranch(data) {
|
function appendBranch(data) {
|
||||||
$('#emp_client_branch_data_list').empty();
|
$('#emp_client_branch_data_list').empty();
|
||||||
|
|
||||||
$('#emp_client_branch_data_list').append($('<option>', {
|
$('#emp_client_branch_data_list').append($('<option>', {
|
||||||
value: '',
|
value: '0',
|
||||||
text: 'Select Branch'
|
text: 'Select Branch'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -282,17 +329,18 @@ function appendBranch(data) {
|
|||||||
'data-name': item.branch_name,
|
'data-name': item.branch_name,
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#emp_client_branch_data_list').append(option);
|
$('#emp_client_branch_data_list').append(option).select2();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//append the clients policy data to the modal
|
||||||
function appendPolicy(data) {
|
function appendPolicy(data) {
|
||||||
|
|
||||||
$('#emp_client_policy_data_list').empty();
|
$('#emp_client_policy_data_list').empty();
|
||||||
|
|
||||||
$('#emp_client_policy_data_list').append($('<option>', {
|
$('#emp_client_policy_data_list').append($('<option>', {
|
||||||
value: '',
|
value: '0',
|
||||||
text: 'Select Policy'
|
text: 'Select Policy'
|
||||||
}));
|
}));
|
||||||
|
|
||||||
@ -302,7 +350,7 @@ function appendPolicy(data) {
|
|||||||
text: item.policy_type + '-' + item.policy_no,
|
text: item.policy_type + '-' + item.policy_no,
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#emp_client_policy_data_list').append(option);
|
$('#emp_client_policy_data_list').append(option).select2();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -352,61 +400,274 @@ function submitClaimForm(event, form) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#emp_client_data_list').change(function() {
|
|
||||||
|
|
||||||
let client_id = $(this).val();
|
|
||||||
let client_name = $('#emp_client_data_list option:selected').data('name');
|
|
||||||
|
|
||||||
console.log('client_id', client_id);
|
|
||||||
console.log('client_name', client_name);
|
|
||||||
|
|
||||||
if (branch_list != '') {
|
|
||||||
// console.log(branch_list[client_id]);
|
|
||||||
let data = branch_list[client_id];
|
|
||||||
appendBranch(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
$('#emp_client_branch_data_list').change(function() {
|
|
||||||
|
|
||||||
let branch_id = $(this).val();
|
|
||||||
|
|
||||||
console.log('branch_id', branch_id);
|
|
||||||
|
|
||||||
if (policy_list != '') {
|
|
||||||
// console.log(branch_list[client_id]);
|
|
||||||
let data = policy_list[branch_id];
|
|
||||||
appendPolicy(data);
|
|
||||||
}
|
|
||||||
|
|
||||||
})
|
|
||||||
|
|
||||||
function getEmpData(input) {
|
function getEmpData(input) {
|
||||||
|
|
||||||
console.log(input)
|
console.log(input)
|
||||||
let client_policy_id = $(input).val();
|
let param = $(input).val();
|
||||||
|
let url = '<?= base_url('util/getTheEmpDataForClaim/') ?>' + param;
|
||||||
let url = '<?= base_url('util/getTheEmpDataForClaim/') ?>' + client_policy_id;
|
|
||||||
|
|
||||||
// Data to send in the AJAX request
|
// Data to send in the AJAX request
|
||||||
let requestData = {
|
let requestData = {
|
||||||
client_policy_id: client_policy_id,
|
param: param,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Show loader
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
// Send AJAX request
|
// Send AJAX request
|
||||||
sendAjaxRequestForGlobal(url, 'GET', requestData, function(response) {
|
sendAjaxRequestForGlobal(url, 'GET', requestData, function(response) {
|
||||||
console.log('Data fetched successfully:', response);
|
console.log('Data fetched successfully:', response);
|
||||||
|
|
||||||
if (response.status) {
|
if (response.status) {
|
||||||
toastr.success(response.message, 'SUCCESS');
|
console.log(response.message, 'SUCCESS');
|
||||||
|
appendEmployee(response.data, 'search_by_client_employee');
|
||||||
} else {
|
} else {
|
||||||
toastr.warning(response.message, 'WARNING');
|
toastr.warning(response.message, 'WARNING');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hide loader
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
|
||||||
}, function(xhr, status, error) {
|
}, function(xhr, status, error) {
|
||||||
console.error('Error fetching data:', error);
|
console.error('Error fetching data:', error);
|
||||||
console.error(xhr.responseText);
|
console.error(xhr.responseText);
|
||||||
toastr.error('An error occurred while fetch data.', 'ERROR');
|
toastr.error('An error occurred while fetch data.', 'ERROR');
|
||||||
|
|
||||||
|
// Hide loader
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getTheEmpDataForClaimSearchByMobile(input, searchType = null) {
|
||||||
|
|
||||||
|
console.log(input)
|
||||||
|
let type = $('#employee_data_points').val()
|
||||||
|
let param = $('#emp_mobile_number_for_claim').val()
|
||||||
|
|
||||||
|
if(searchType == 'client'){
|
||||||
|
type = 'emp_code';
|
||||||
|
param = $(input).val();
|
||||||
|
}
|
||||||
|
let url = '<?= base_url('util/getTheEmpDataForClaimSearchByMobile/') ?>' + param + '/' + type;
|
||||||
|
|
||||||
|
// Data to send in the AJAX request
|
||||||
|
let requestData = {
|
||||||
|
param: param,
|
||||||
|
type: type,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Show loader
|
||||||
|
$('.loader').fadeIn();
|
||||||
|
$('.loader-mask').fadeIn();
|
||||||
|
|
||||||
|
|
||||||
|
// Send AJAX request
|
||||||
|
sendAjaxRequestForGlobal(url, 'GET', requestData, function(response) {
|
||||||
|
console.log('Data fetched successfully:', response);
|
||||||
|
|
||||||
|
if (response.status) {
|
||||||
|
console.log(response.message, 'SUCCESS');
|
||||||
|
if(searchType == 'client'){
|
||||||
|
appendMember(response.memberData, 'search_by_client_member');
|
||||||
|
}else{
|
||||||
|
appendMember(response.memberData, 'member_by_number');
|
||||||
|
}
|
||||||
|
setClientAndInsurerData(response.data);
|
||||||
|
appendACMS(response.acms)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
toastr.warning(response.message, 'WARNING');
|
||||||
|
appendACMS(response.acms);
|
||||||
|
unSetClientAndInsurerData()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hide loader
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
}, function(xhr, status, error) {
|
||||||
|
console.error('Error fetching data:', error);
|
||||||
|
console.error(xhr.responseText);
|
||||||
|
toastr.error('An error occurred while fetch data.', 'ERROR');
|
||||||
|
|
||||||
|
// Hide loader
|
||||||
|
$('.loader').fadeOut();
|
||||||
|
$('.loader-mask').delay(350).fadeOut('slow');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function appendEmployee(data, attrId) {
|
||||||
|
|
||||||
|
console.log('data', data)
|
||||||
|
|
||||||
|
$('#' + attrId).empty();
|
||||||
|
$('#' + attrId).append($('<option>', {
|
||||||
|
value: '0',
|
||||||
|
text: 'Select Employee'
|
||||||
|
}));
|
||||||
|
|
||||||
|
$.each(data, function(index, item) {
|
||||||
|
console.log(item)
|
||||||
|
var option = $('<option>', {
|
||||||
|
value: item.emp_code,
|
||||||
|
text: item.emp_name,
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#' + attrId).append(option).select2();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function appendMember(data, attrId) {
|
||||||
|
|
||||||
|
console.log('data', data);
|
||||||
|
|
||||||
|
// Clear the existing options
|
||||||
|
$('#' + attrId).empty();
|
||||||
|
|
||||||
|
// Add the default 'Select Member' option
|
||||||
|
$('#' + attrId).append($('<option>', {
|
||||||
|
value: '0',
|
||||||
|
text: 'Select Member'
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Append options dynamically with data attributes
|
||||||
|
$.each(data, function(index, item) {
|
||||||
|
console.log('Item:', item); // Log each item to debug
|
||||||
|
|
||||||
|
// Ensure all properties exist, set fallback if necessary
|
||||||
|
var empID = item.emp_id ?? '';
|
||||||
|
var empName = item.emp_name ?? '';
|
||||||
|
var policyNo = item.policy_no ?? '';
|
||||||
|
var tpaNo = item.tpa_no ?? '';
|
||||||
|
var relationship = item.emp_relationship ?? '';
|
||||||
|
|
||||||
|
// Create an option and set data attributes
|
||||||
|
var option = $('<option>', {
|
||||||
|
value: item.emp_code,
|
||||||
|
text: empName + " - " + relationship
|
||||||
|
}).attr({
|
||||||
|
'data-empID': empID,
|
||||||
|
'data-empName': empName,
|
||||||
|
'data-policyNo': policyNo,
|
||||||
|
'data-tpaNo': tpaNo,
|
||||||
|
'data-relationship': relationship
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#' + attrId).append(option);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Reinitialize select2
|
||||||
|
$('#' + attrId).select2();
|
||||||
|
}
|
||||||
|
|
||||||
|
function appendACMS(data) {
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
|
||||||
|
$('#acm_id').empty();
|
||||||
|
|
||||||
|
$('#acm_id').append($('<option>', {
|
||||||
|
value: '0',
|
||||||
|
text: 'Select Account Manager'
|
||||||
|
}));
|
||||||
|
|
||||||
|
$.each(data, function(index, item) {
|
||||||
|
var option = $('<option>', {
|
||||||
|
value: item.id,
|
||||||
|
text: item.first_name,
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#acm_id').append(option);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function onlyNumbers(event) {
|
||||||
|
var charcode;
|
||||||
|
charcode = event.which || event.keyCode;
|
||||||
|
if (charcode >= 48 && charcode <= 57 || charcode == 46) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setClientAndInsurerData(data) {
|
||||||
|
|
||||||
|
$('#insurer_id').val(data.insurer_id);
|
||||||
|
$('#insurer_name').val(data.insurer_name);
|
||||||
|
$('#tpa_id').val(data.tpa_id);
|
||||||
|
$('#tpa_name').val(data.tpa_name);
|
||||||
|
$('#client_id').val(data.client_id);
|
||||||
|
$('#client_name').val(data.client_name);
|
||||||
|
|
||||||
|
$('#emp_code').val(data.emp_code);
|
||||||
|
$('#emp_id').val(data.emp_id);
|
||||||
|
$('#emp_name').val(data.emp_name);
|
||||||
|
$('#emp_mobile').val(data.emp_mobile);
|
||||||
|
$('#emp_mail').val(data.emp_email);
|
||||||
|
}
|
||||||
|
|
||||||
|
function unSetClientAndInsurerData() {
|
||||||
|
|
||||||
|
$('#insurer_id').val("");
|
||||||
|
$('#insurer_name').val("");
|
||||||
|
$('#tpa_id').val("");
|
||||||
|
$('#tpa_name').val("");
|
||||||
|
$('#client_id').val("");
|
||||||
|
$('#client_name').val("");
|
||||||
|
|
||||||
|
$('#emp_code').val("");
|
||||||
|
$('#emp_id').val("");
|
||||||
|
$('#emp_name').val("");
|
||||||
|
$('#emp_mobile').val("");
|
||||||
|
$('#emp_mail').val("");
|
||||||
|
}
|
||||||
|
|
||||||
|
function setMemberData(input) {
|
||||||
|
|
||||||
|
var selectedOption = $(input).find(':selected');
|
||||||
|
|
||||||
|
// Retrieve the data-* attributes
|
||||||
|
var empId = selectedOption.data('empid');
|
||||||
|
var empName = selectedOption.data('empname');
|
||||||
|
var policyNo = selectedOption.data('policyno');
|
||||||
|
var tpaNo = selectedOption.data('tpano');
|
||||||
|
var relationship = selectedOption.data('relationship');
|
||||||
|
|
||||||
|
$('#tpa_no').val(tpaNo);
|
||||||
|
$('#insured_emp_id').val(empId);
|
||||||
|
$('#insured_name').val(empName);
|
||||||
|
$('#policy_no').val(policyNo);
|
||||||
|
|
||||||
|
$('#relationship option').each(function() {
|
||||||
|
if ($(this).text() === relationship) {
|
||||||
|
$(this).prop('selected', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#employee_data_points').on('change', function(){
|
||||||
|
|
||||||
|
let value = $(this).val()
|
||||||
|
if(value == "mobile"){
|
||||||
|
$('#employee_data_points_label').text('Employee Mobile Number')
|
||||||
|
}else{
|
||||||
|
$('#employee_data_points_label').text('Employee ID')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function toResetTheModelFields() {
|
||||||
|
|
||||||
|
$('#emp_mobile_number_for_claim').val('');
|
||||||
|
$('#employee_data_points').val();
|
||||||
|
$('#employee_by_number').val('');
|
||||||
|
$('#member_by_number').val('0').select2();
|
||||||
|
$('#emp_client_data_list').val('0').select2();
|
||||||
|
$('#emp_client_branch_data_list').val('0').select2();
|
||||||
|
$('#emp_client_policy_data_list').val('0').select2();
|
||||||
|
$('#search_by_client_employee').val('0').select2();
|
||||||
|
$('#search_by_client_member').val('0').select2();
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
Loading…
Reference in New Issue
Block a user