1824 lines
76 KiB
PHP
1824 lines
76 KiB
PHP
<?php
|
||
|
||
namespace App\Controllers;
|
||
|
||
use App\Controllers\BaseController;
|
||
use CodeIgniter\HTTP\ResponseInterface;
|
||
use CodeIgniter\API\ResponseTrait;
|
||
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
|
||
use Kint\Kint;
|
||
|
||
use App\Models\ClaimDumpFileModel;
|
||
use App\Models\EmployeeModel;
|
||
use App\Models\InsurerModel;
|
||
use App\Models\TPAModel;
|
||
use App\Models\ClientModel;
|
||
use App\Models\TicketClaimStatusModel;
|
||
use App\Models\ClientPolicyModel;
|
||
|
||
use App\Helpers\ExcelSanitizeHelper;
|
||
use App\Models\TicketMasterModel;
|
||
|
||
class TicketServiceController extends BaseController
|
||
{
|
||
use ResponseTrait;
|
||
|
||
protected $myLogger;
|
||
protected $claim_dump_excel_columns;
|
||
protected $tableHeaders;
|
||
protected $actualHeaders;
|
||
|
||
protected $claimDumpFileModel;
|
||
protected $clientModel;
|
||
protected $insurerModel;
|
||
protected $TPAModel;
|
||
protected $ticketClaimStatusModel;
|
||
protected $clientPolicyModel;
|
||
|
||
|
||
public function __construct()
|
||
{
|
||
helper('excel_util_helper');
|
||
helper('claim_dump_helper');
|
||
$this->myLogger = \Config\Services::mylogger();
|
||
set_session_context('Ticket Service Controller');
|
||
|
||
$this->claimDumpFileModel = new ClaimDumpFileModel();
|
||
$this->clientModel = new ClientModel();
|
||
$this->insurerModel = new InsurerModel();
|
||
$this->TPAModel = new TPAModel();
|
||
$this->ticketClaimStatusModel = new TicketClaimStatusModel();
|
||
$this->clientPolicyModel = new ClientPolicyModel();
|
||
|
||
$this->claim_dump_excel_columns = [
|
||
|
||
// Mandatory Fields
|
||
'sno' => [
|
||
'col_idx' => 0,
|
||
'col_cell_name' => 'A',
|
||
'col_name' => 'S.No.',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'int',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'policy_type' => [
|
||
'col_idx' => 1,
|
||
'col_cell_name' => 'B',
|
||
'col_name' => 'Policy Type',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => ['GMC', 'GPA', 'EDLI', 'GTLI']
|
||
],
|
||
|
||
'status' => [
|
||
'col_idx' => 2,
|
||
'col_cell_name' => 'C',
|
||
'col_name' => 'Status',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'client_short_name' => [
|
||
'col_idx' => 3,
|
||
'col_cell_name' => 'D',
|
||
'col_name' => 'Corporate Name',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'insurer' => [
|
||
'col_idx' => 4,
|
||
'col_cell_name' => 'E',
|
||
'col_name' => 'Insurer',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'tpa' => [
|
||
'col_idx' => 5,
|
||
'col_cell_name' => 'F',
|
||
'col_name' => 'TPA',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'policy_no' => [
|
||
'col_idx' => 6,
|
||
'col_cell_name' => 'G',
|
||
'col_name' => 'Policy No',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'employee_code' => [
|
||
'col_idx' => 7,
|
||
'col_cell_name' => 'H',
|
||
'col_name' => 'Employee Code',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'employee_name' => [
|
||
'col_idx' => 8,
|
||
'col_cell_name' => 'I',
|
||
'col_name' => 'Employee Name',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'insured_name' => [
|
||
'col_idx' => 9,
|
||
'col_cell_name' => 'J',
|
||
'col_name' => 'Insured Name',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'relationship' => [
|
||
'col_idx' => 10,
|
||
'col_cell_name' => 'K',
|
||
'col_name' => 'Relationship',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => ['Self', 'Spouse', 'Child', 'Parent', 'Other']
|
||
],
|
||
|
||
'mode_of_intimation' => [
|
||
'col_idx' => 11,
|
||
'col_cell_name' => 'L',
|
||
'col_name' => 'Mode of Intimation',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => ['Email', 'Phone', 'Portal', 'Physical']
|
||
],
|
||
|
||
'acm' => [
|
||
'col_idx' => 12,
|
||
'col_cell_name' => 'M',
|
||
'col_name' => 'ACM',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'claim_type' => [
|
||
'col_idx' => 13,
|
||
'col_cell_name' => 'N',
|
||
'col_name' => 'Claim Type',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'priority' => [
|
||
'col_idx' => 14,
|
||
'col_cell_name' => 'O',
|
||
'col_name' => 'Priority',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => ['Critical', 'Emergency', 'Urgent', 'High', 'Medium', 'Low']
|
||
],
|
||
|
||
// Common Fields
|
||
'date_of_birth' => [
|
||
'col_idx' => 15,
|
||
'col_cell_name' => 'P',
|
||
'col_name' => 'Date of Birth',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'employee_mobile' => [
|
||
'col_idx' => 16,
|
||
'col_cell_name' => 'Q',
|
||
'col_name' => 'Employee Mobile',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => '/^[0-9]{10}$/',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'employee_email' => [
|
||
'col_idx' => 17,
|
||
'col_cell_name' => 'R',
|
||
'col_name' => 'Employee Email',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => 'email',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'employee_personal_email' => [
|
||
'col_idx' => 18,
|
||
'col_cell_name' => 'S',
|
||
'col_name' => 'Employee Personal Email',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => 'email',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
// GMC Specific Fields
|
||
'hospital_name' => [
|
||
'col_idx' => 19,
|
||
'col_cell_name' => 'T',
|
||
'col_name' => 'Hospital Name',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'doa' => [
|
||
'col_idx' => 20,
|
||
'col_cell_name' => 'U',
|
||
'col_name' => 'DOA (Date of Admission)',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'dod' => [
|
||
'col_idx' => 21,
|
||
'col_cell_name' => 'V',
|
||
'col_name' => 'DOD (Date of Discharge)',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'claim_amount' => [
|
||
'col_idx' => 22,
|
||
'col_cell_name' => 'W',
|
||
'col_name' => 'Claim Amount',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'decimal',
|
||
'format' => '2',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'pod_no' => [
|
||
'col_idx' => 23,
|
||
'col_cell_name' => 'X',
|
||
'col_name' => 'POD No.',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'tpa_id' => [
|
||
'col_idx' => 24,
|
||
'col_cell_name' => 'Y',
|
||
'col_name' => 'TPA ID',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'claim_number' => [
|
||
'col_idx' => 25,
|
||
'col_cell_name' => 'Z',
|
||
'col_name' => 'Claim Number',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
// GPA Specific Fields
|
||
'sum_insured' => [
|
||
'col_idx' => 26,
|
||
'col_cell_name' => 'AA',
|
||
'col_name' => 'Sum Insured',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'decimal',
|
||
'format' => '2',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'date_of_join' => [
|
||
'col_idx' => 27,
|
||
'col_cell_name' => 'AB',
|
||
'col_name' => 'Date of Join',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'date_of_inception' => [
|
||
'col_idx' => 28,
|
||
'col_cell_name' => 'AC',
|
||
'col_name' => 'Date of Inception',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'date_of_accident' => [
|
||
'col_idx' => 29,
|
||
'col_cell_name' => 'AD',
|
||
'col_name' => 'Date of Accident',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'date_of_death' => [
|
||
'col_idx' => 30,
|
||
'col_cell_name' => 'AE',
|
||
'col_name' => 'Date of Death',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'date_of_intimate' => [
|
||
'col_idx' => 31,
|
||
'col_cell_name' => 'AF',
|
||
'col_name' => 'Date of Intimate',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
// Status Wise Column Mandatory
|
||
'raised_date' => [
|
||
'col_idx' => 32,
|
||
'col_cell_name' => 'AG',
|
||
'col_name' => 'Raised Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'registration_date' => [
|
||
'col_idx' => 33,
|
||
'col_cell_name' => 'AH',
|
||
'col_name' => 'Registration Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'query_received_date' => [
|
||
'col_idx' => 34,
|
||
'col_cell_name' => 'AI',
|
||
'col_name' => 'Query Received Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'payment_initiate_date' => [
|
||
'col_idx' => 35,
|
||
'col_cell_name' => 'AJ',
|
||
'col_name' => 'Payment Initiate Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'denial_reason' => [
|
||
'col_idx' => 36,
|
||
'col_cell_name' => 'AK',
|
||
'col_name' => 'Denial Reason',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'denial_date' => [
|
||
'col_idx' => 37,
|
||
'col_cell_name' => 'AL',
|
||
'col_name' => 'Denial Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'approved_date' => [
|
||
'col_idx' => 38,
|
||
'col_cell_name' => 'AM',
|
||
'col_name' => 'Approved Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'approved_letter' => [
|
||
'col_idx' => 39,
|
||
'col_cell_name' => 'AN',
|
||
'col_name' => 'Approved Letter',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'approved_amount' => [
|
||
'col_idx' => 40,
|
||
'col_cell_name' => 'AO',
|
||
'col_name' => 'Approved Amount',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'decimal',
|
||
'format' => '2',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'approved_description' => [
|
||
'col_idx' => 41,
|
||
'col_cell_name' => 'AP',
|
||
'col_name' => 'Approved Description',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'utr_details' => [
|
||
'col_idx' => 42,
|
||
'col_cell_name' => 'AQ',
|
||
'col_name' => 'UTR Details',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'settle_letter' => [
|
||
'col_idx' => 43,
|
||
'col_cell_name' => 'AR',
|
||
'col_name' => 'Settle Letter',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'settled_date' => [
|
||
'col_idx' => 44,
|
||
'col_cell_name' => 'AS',
|
||
'col_name' => 'Settled Date',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd-m-Y',
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'return_remark' => [
|
||
'col_idx' => 45,
|
||
'col_cell_name' => 'AT',
|
||
'col_name' => 'Return Remark',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'cancel_remark' => [
|
||
'col_idx' => 46,
|
||
'col_cell_name' => 'AU',
|
||
'col_name' => 'Cancel Remark',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'awb_courier' => [
|
||
'col_idx' => 47,
|
||
'col_cell_name' => 'AV',
|
||
'col_name' => 'AWB No. and Courier Name',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
|
||
'non_id_reason' => [
|
||
'col_idx' => 48,
|
||
'col_cell_name' => 'AW',
|
||
'col_name' => 'Non ID Reason',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
]
|
||
];
|
||
|
||
$this->tableHeaders = [
|
||
"S NO",
|
||
"POLICY #",
|
||
"Status",
|
||
"Account manager",
|
||
"Insurer",
|
||
"TPA",
|
||
"Corporate",
|
||
"Emp ID",
|
||
"TPA ID",
|
||
"Claim ID",
|
||
"Employee Name",
|
||
"Insured Name",
|
||
"Relationship",
|
||
"Emp. Mobile",
|
||
"Emp mail id",
|
||
"Claim Collection",
|
||
"Source Detail",
|
||
"Claim Type",
|
||
"Hospital",
|
||
"DOA",
|
||
"DOD",
|
||
"Claim Amount",
|
||
"Date of Claim Receipt",
|
||
"Date sent to TPA",
|
||
"Date of Claim Registration",
|
||
"Date - Latest Query Raise",
|
||
"Date - Latest Query Resolution",
|
||
"Approved Amt",
|
||
"Date of Approval",
|
||
"UTR - Settlement",
|
||
"Date of Settlement",
|
||
"Reason",
|
||
"Remarks",
|
||
"Approval Letter",
|
||
"Settlement Letter",
|
||
"Denial Letter",
|
||
];
|
||
|
||
$this->actualHeaders = [
|
||
|
||
"sno" => [
|
||
'col_idx' => 0,
|
||
'col_cell_name' => 'A',
|
||
'col_name' => 'S NO',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'int',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"corporate" => [
|
||
'col_idx' => 6,
|
||
'col_cell_name' => 'G',
|
||
'col_name' => 'Corporate',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null,
|
||
'custom' => 'check_client',
|
||
'params' => ['client_excel_name']
|
||
],
|
||
"policy_no" => [
|
||
'col_idx' => 1,
|
||
'col_cell_name' => 'B',
|
||
'col_name' => 'POLICY #',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null,
|
||
],
|
||
"status" => [
|
||
'col_idx' => 2,
|
||
'col_cell_name' => 'C',
|
||
'col_name' => 'Status',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null,
|
||
'custom' => 'check_status',
|
||
'params' => ['excel_status_data']
|
||
],
|
||
"acm" => [
|
||
'col_idx' => 3,
|
||
'col_cell_name' => 'D',
|
||
'col_name' => 'Account manager',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"insurer" => [
|
||
'col_idx' => 4,
|
||
'col_cell_name' => 'E',
|
||
'col_name' => 'Insurer',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null,
|
||
'custom' => 'check_insurer',
|
||
'params' => ['insurer_excel_name']
|
||
],
|
||
"tpa" => [
|
||
'col_idx' => 5,
|
||
'col_cell_name' => 'F',
|
||
'col_name' => 'TPA',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null,
|
||
'custom' => 'check_tpa',
|
||
'params' => ['tpa_excel_name']
|
||
],
|
||
"emp_id" => [
|
||
'col_idx' => 7,
|
||
'col_cell_name' => 'H',
|
||
'col_name' => 'Emp ID',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"tpa_id" => [
|
||
'col_idx' => 8,
|
||
'col_cell_name' => 'I',
|
||
'col_name' => 'TPA ID',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"claim_id" => [
|
||
'col_idx' => 9,
|
||
'col_cell_name' => 'J',
|
||
'col_name' => 'Claim ID',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"employee_name" => [
|
||
'col_idx' => 10,
|
||
'col_cell_name' => 'K',
|
||
'col_name' => 'Employee Name',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"insured_name" => [
|
||
'col_idx' => 11,
|
||
'col_cell_name' => 'L',
|
||
'col_name' => 'Insured Name',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"relationship" => [
|
||
'col_idx' => 12,
|
||
'col_cell_name' => 'M',
|
||
'col_name' => 'Relationship',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => ['self', 'spouse', 'son', 'daughter', 'father', 'mother', 'father-in-law', 'mother-in-law']
|
||
],
|
||
"emp_mobile" => [
|
||
'col_idx' => 13,
|
||
'col_cell_name' => 'N',
|
||
'col_name' => 'Emp. Mobile',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"emp_email" => [
|
||
'col_idx' => 14,
|
||
'col_cell_name' => 'O',
|
||
'col_name' => 'Emp mail id',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"claim_collection" => [
|
||
'col_idx' => 15,
|
||
'col_cell_name' => 'P',
|
||
'col_name' => 'Claim Collection',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => ["In Person", "Courier", "Online Mode - Email", "Smart Service Desk", "Direct to TPA"]
|
||
],
|
||
"source_detail" => [
|
||
'col_idx' => 16,
|
||
'col_cell_name' => 'Q',
|
||
'col_name' => 'Source Detail',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"claim_type" => [
|
||
'col_idx' => 17,
|
||
'col_cell_name' => 'R',
|
||
'col_name' => 'Claim Type',
|
||
'is_mandatory' => true,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => ["Claim", "Main Hospitalization", "Pre / Post", "OPD", "ReOpen", "TTD", "PTD", "PPD", "Death"]
|
||
],
|
||
"hospital" => [
|
||
'col_idx' => 18,
|
||
'col_cell_name' => 'S',
|
||
'col_name' => 'Hospital',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"doa" => [
|
||
'col_idx' => 19,
|
||
'col_cell_name' => 'T',
|
||
'col_name' => 'DOA',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"dod" => [
|
||
'col_idx' => 20,
|
||
'col_cell_name' => 'U',
|
||
'col_name' => 'DOD',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"claim_amount" => [
|
||
'col_idx' => 21,
|
||
'col_cell_name' => 'V',
|
||
'col_name' => 'Claim Amount',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"date_claim_receipt" => [
|
||
'col_idx' => 22,
|
||
'col_cell_name' => 'W',
|
||
'col_name' => 'Date of Claim Receipt',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"date_claim_registration" => [
|
||
'col_idx' => 24,
|
||
'col_cell_name' => 'Y',
|
||
'col_name' => 'Date of Claim Registration',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"date_latest_query_raise" => [
|
||
'col_idx' => 25,
|
||
'col_cell_name' => 'Z',
|
||
'col_name' => 'Date - Latest Query Raise',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"date_latest_query_resolution" => [
|
||
'col_idx' => 26,
|
||
'col_cell_name' => 'AA',
|
||
'col_name' => 'Date - Latest Query Resolution',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"approved_amt" => [
|
||
'col_idx' => 27,
|
||
'col_cell_name' => 'AB',
|
||
'col_name' => 'Approved Amt',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'str',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"date_approval" => [
|
||
'col_idx' => 28,
|
||
'col_cell_name' => 'AC',
|
||
'col_name' => 'Date of Approval',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"utr_settlement" => [
|
||
'col_idx' => 29,
|
||
'col_cell_name' => 'AD',
|
||
'col_name' => 'UTR - Settlement',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"date_settlement" => [
|
||
'col_idx' => 30,
|
||
'col_cell_name' => 'AE',
|
||
'col_name' => 'Date of Settlement',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'date',
|
||
'format' => 'd/m/Y',
|
||
'allowed_values' => null
|
||
],
|
||
"reason" => [
|
||
'col_idx' => 31,
|
||
'col_cell_name' => 'AF',
|
||
'col_name' => 'Reason',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'text',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"remarks" => [
|
||
'col_idx' => 32,
|
||
'col_cell_name' => 'AG',
|
||
'col_name' => 'Remarks',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'text',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"approval_letter" => [
|
||
'col_idx' => 33,
|
||
'col_cell_name' => 'AH',
|
||
'col_name' => 'Approval Letter',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"settlement_letter" => [
|
||
'col_idx' => 34,
|
||
'col_cell_name' => 'AI',
|
||
'col_name' => 'Settlement Letter',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
],
|
||
"denial_letter" => [
|
||
'col_idx' => 35,
|
||
'col_cell_name' => 'AJ',
|
||
'col_name' => 'Denial Letter',
|
||
'is_mandatory' => false,
|
||
'data_type' => 'string',
|
||
'format' => null,
|
||
'allowed_values' => null
|
||
]
|
||
];
|
||
|
||
}
|
||
|
||
//create a sample excel for development
|
||
public function createSampleClaimDumpExcelFileWithHeaderOnly()
|
||
{
|
||
|
||
// create a sample file
|
||
$headers = [];
|
||
foreach ($this->claim_dump_excel_columns as $key => $value) {
|
||
$headers[] = $value['col_name'];
|
||
}
|
||
generateExcelWithHeader($headers, 'claim_dump_sample.xlsx');
|
||
dd($headers);
|
||
}
|
||
|
||
// ---------------------------------------------------------------------------------------------------------
|
||
|
||
public function claimDumpExcelFileFormatValidation($params)
|
||
{
|
||
$file_id = $params['file_id'];
|
||
$file = $this->claimDumpFileModel->where("id", $file_id)->first();
|
||
$this->myLogger->logme('error', "Start the claim dump file format validataion with the file id : " . $file_id);
|
||
// dd($file);
|
||
|
||
$return = [];
|
||
if (empty($file)) {
|
||
return array('status' => false, 'message' => 'File not found in Database');
|
||
}
|
||
|
||
$file_name_with_path = WRITEPATH . "/uploads/claim_dump_excel/" . $file['file_name'];
|
||
|
||
//check physical file exist
|
||
if (!file_exists($file_name_with_path)) {
|
||
|
||
$message = "Physcial file not found";
|
||
$this->myLogger->logme('error', ($message . ' for file id : ' . $file_id));
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
return array('error_summary' => [5], 'error_data' => $message);
|
||
}
|
||
|
||
//Read the excel file
|
||
try {
|
||
$excel_data_and_headers = $this->extractExcelData($file['file_name']);
|
||
$excel_data = $excel_data_and_headers['excel_data'];
|
||
} catch (\Exception $e) {
|
||
$errorDetails = [
|
||
'error_message' => $e->getMessage(),
|
||
'file' => $e->getFile(),
|
||
'line' => $e->getLine(),
|
||
'stack_trace' => $e->getTraceAsString(),
|
||
];
|
||
$message = "Contact system admin";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
$this->myLogger->logme("error", 'Excel data extraction failed due to : ' . json_encode($errorDetails ?? []));
|
||
return $errorDetails;
|
||
}
|
||
// dd($excel_data_and_headers);
|
||
|
||
//Claim dump excel colums
|
||
$columns_to_check = $excel_data_and_headers['claim_dump_excel_columns'];
|
||
// dd($columns_to_check);
|
||
|
||
//if upload the unwanted file upload handle
|
||
if(count($columns_to_check) == 0){
|
||
$message = "Wrong file was uploaded";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
return array('error_summary' => [5], 'error_data' => $message);
|
||
}
|
||
|
||
//Store the error data by this structure
|
||
$result = ['error_type' => 1, 'error_summary' => [], 'error_data' => []];
|
||
|
||
//excel data is empty than through the error
|
||
if(count($excel_data ?? []) <= 1){
|
||
$message = "Uploaded file is empty";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
return array('error_summary' => [5], 'error_data' => $message);
|
||
}
|
||
|
||
//check no of columns in excel
|
||
$excel_columns = ($excel_data[0]);
|
||
// $keys = array_keys($columns_to_check);
|
||
|
||
//check columns order in excel
|
||
$column_count_res = check_columns_name($columns_to_check, $excel_columns);
|
||
// dd($column_count_res);
|
||
|
||
if (isset($column_count_res) && count($column_count_res)) {
|
||
//columns count mismatch
|
||
$message = implode("\n", $column_count_res);
|
||
$this->myLogger->logme('error', ($message . ' for file id ' . $file_id));
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([6]), 'error_data' => $message])])->update();
|
||
return array('error_summary' => [6], 'error_data' => $message);
|
||
}
|
||
|
||
$client_data = $this->clientModel->where('is_active', 1)->where('client_type', 1)->findAll();
|
||
$insurer_data = $this->insurerModel->where('is_active', 1)->findAll();
|
||
$tpa_data = $this->TPAModel->where('is_active', 1)->findAll();
|
||
$claim_status_data = $this->ticketClaimStatusModel->select('id, claim_status')->where('is_active', 1)->orderBy('id', 'asc')->groupBy('claim_status')->findAll();
|
||
|
||
//remove header
|
||
unset($excel_data[0]);
|
||
|
||
try {
|
||
foreach ($excel_data as $row_key => $row) {
|
||
|
||
//avoid empty rows
|
||
if (check_row_is_empty_or_null($row)) {
|
||
break;
|
||
}
|
||
|
||
//iterate each row for columns validations
|
||
foreach ($row as $col_key => $col) {
|
||
|
||
if (!isset($columns_to_check[$col_key])) {
|
||
continue;
|
||
}
|
||
|
||
$is_mandatory = $columns_to_check[$col_key]['is_mandatory'];
|
||
$format = $columns_to_check[$col_key]['format'];
|
||
$allowed_values = $columns_to_check[$col_key]['allowed_values'];
|
||
$custom_function = isset($columns_to_check[$col_key]['custom']) ? $columns_to_check[$col_key]['custom'] : null;
|
||
$binding_params = isset($columns_to_check[$col_key]['params']) ? $columns_to_check[$col_key]['params'] : null;
|
||
|
||
|
||
$column_dispaly_name = $columns_to_check[$col_key]['col_name'];
|
||
$column_index = $columns_to_check[$col_key]['col_idx'];
|
||
$column_cell = $columns_to_check[$col_key]['col_cell_name'];
|
||
|
||
|
||
if ($column_dispaly_name == "Corporate") {
|
||
$client_excel_name = ["client_name" => $col, "client_data" => $client_data];
|
||
}
|
||
|
||
if ($column_dispaly_name == "Insurer") {
|
||
$insurer_excel_name = ["insurer_name" => $col, "insurer_data" => $insurer_data];
|
||
}
|
||
|
||
if ($column_dispaly_name == "TPA") {
|
||
$tpa_excel_name = ["tpa_name" => $col, "tpa_data" => $tpa_data];
|
||
}
|
||
|
||
if ($column_dispaly_name == "Status") {
|
||
$excel_status_data = ["value" => $col, "data" => $claim_status_data];
|
||
}
|
||
|
||
//mandatory check
|
||
if (is_bool($is_mandatory) && $is_mandatory === true) {
|
||
if ($col == "" || $col == NULL) {
|
||
array_push($result['error_summary'], 1); //push error code for summary
|
||
$result['error_data'][$row_key][$col_key]['col_name'] = $column_dispaly_name; //push column name
|
||
$result['error_data'][$row_key][$col_key]['col_idx'] = $column_index; //push column index
|
||
$result['error_data'][$row_key][$col_key]['error'][] = 'Value is mandatory'; //push exact error desc
|
||
}
|
||
}
|
||
|
||
//format check
|
||
if (isset($format)) {
|
||
$format_error = dynamic_check_excel_date_format($col, $format);
|
||
if (!$format_error['status']) {
|
||
array_push($result['error_summary'], 2);
|
||
$result['error_data'][$row_key][$col_key]['col_name'] = $column_dispaly_name; //push column name
|
||
$result['error_data'][$row_key][$col_key]['col_idx'] = $column_index; //push column index
|
||
$result['error_data'][$row_key][$col_key]['error'][] = $format_error['error'];
|
||
}
|
||
}
|
||
|
||
//allowed values check
|
||
if (($is_mandatory === true && isset($allowed_values) && is_array($allowed_values)) || (is_array($is_mandatory) && (isset($allowed_values) && is_array($allowed_values)))) {
|
||
if (!in_array((trim($col)), $allowed_values)) {
|
||
array_push($result['error_summary'], 3);
|
||
$result['error_data'][$row_key][$col_key]['col_name'] = $column_dispaly_name; //push column name
|
||
$result['error_data'][$row_key][$col_key]['col_idx'] = $column_index; //push column index
|
||
$result['error_data'][$row_key][$col_key]['error'][] = "Value not allowed: Expected " . implode(",", $allowed_values) . " and received $col";
|
||
}
|
||
}
|
||
|
||
//custom function check
|
||
if (isset($custom_function)) {
|
||
|
||
// convert string params into PHP variables
|
||
// Create an array of variables to pass custom helper funcitons
|
||
$param_values = [];
|
||
foreach ($binding_params as $bkey => $bparam) {
|
||
$param_values[] = ($$bparam);
|
||
}
|
||
|
||
$res = call_user_func_array($custom_function, $param_values);
|
||
|
||
if ($res['status'] === false) {
|
||
array_push($result['error_summary'], 4);
|
||
$result['error_data'][$row_key][$col_key]['col_name'] = $column_dispaly_name; //push column name
|
||
$result['error_data'][$row_key][$col_key]['col_idx'] = $column_index; //push column index
|
||
$result['error_data'][$row_key][$col_key]['error'][] = $res['error'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
} catch (\Exception $e) {
|
||
$errorDetails = [
|
||
'error_message' => $e->getMessage(),
|
||
'file' => $e->getFile(),
|
||
'line' => $e->getLine(),
|
||
'stack_trace' => $e->getTraceAsString(),
|
||
];
|
||
$message = "Contact system admin";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
$this->myLogger->logme("error", 'Claim dump file format validation failed due to : ' . json_encode($errorDetails ?? []));
|
||
return $errorDetails;
|
||
}
|
||
|
||
if (isset($result['error_summary']) && count($result['error_summary'])) {
|
||
$result['error_summary'] = array_count_values($result['error_summary']);
|
||
$status = 'failed';
|
||
$failure_reason = ((json_encode($result)));
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => $status, 'reason' => $failure_reason])->update();
|
||
$this->myLogger->logme("error", '{file_id} uploaded failed', ['file_id' => $file_id]);
|
||
} else { //trigger next data validation via job queue server
|
||
//proceed next data level validation in JOB queue
|
||
$r = Jobs::addJob(['job_name' => 'claimDumpExcelFileDataValidation', 'payload' => ['file_id' => $file_id]]);
|
||
// $response = $this->claimDumpExcelFileDataValidation(['file_id' => $file_id]);
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
public function claimDumpExcelFileDataValidation($params)
|
||
{
|
||
//get file name
|
||
$file_id = $params['file_id'];
|
||
$file = $this->claimDumpFileModel->find($file_id);
|
||
$this->myLogger->logme('error', "Start the claim dump File Data Validataion with the file id : " . $file_id);
|
||
// dd($file);
|
||
|
||
if (!isset($file)) {
|
||
return array('status' => false, 'message' => 'File not found in Database');
|
||
}
|
||
|
||
$file_name_with_path = WRITEPATH . "/uploads/claim_dump_excel/" . $file['file_name'];
|
||
|
||
//check physical file
|
||
if (!file_exists($file_name_with_path)) {
|
||
$message = "Physical file not found";
|
||
$this->myLogger->logme('error', ($message . ' for file id ' . $file_id));
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
return array('error_summary' => [5], 'error_data' => $message);
|
||
}
|
||
|
||
//Read the excel file
|
||
try {
|
||
$excel_data_and_headers = $this->extractExcelData($file['file_name'], "modified_column");
|
||
$excel_data = $excel_data_and_headers['excel_data'];
|
||
} catch (\Exception $e) {
|
||
$errorDetails = [
|
||
'error_message' => $e->getMessage(),
|
||
'file' => $e->getFile(),
|
||
'line' => $e->getLine(),
|
||
'stack_trace' => $e->getTraceAsString(),
|
||
];
|
||
$message = "Contact system admin";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
$this->myLogger->logme("error", 'Excel data extraction failed due to : ' . json_encode($errorDetails ?? []));
|
||
return $errorDetails;
|
||
}
|
||
// dd($excel_data_and_headers);
|
||
// print_rr($excel_data);
|
||
|
||
//Claim dump excel colums
|
||
$columns_to_check = $excel_data_and_headers['claim_dump_excel_columns'];
|
||
// dd($columns_to_check);
|
||
|
||
$result = ['error_type' => 1, 'error_summary' => [], 'error_data' => []];
|
||
|
||
//remove header
|
||
unset($excel_data[0]);
|
||
|
||
try {
|
||
foreach ($excel_data as $row_key => $row) {
|
||
|
||
//avoid empty rows
|
||
if (check_row_is_empty_or_null($row)) {
|
||
break;
|
||
}
|
||
|
||
$client_column_index = $columns_to_check['corporate']['col_idx'];
|
||
$policy_no_column_index = $columns_to_check['policy_no']['col_idx'];
|
||
$insurer_column_index = $columns_to_check['insurer']['col_idx'];
|
||
$tpa_column_index = $columns_to_check['tpa']['col_idx'];
|
||
|
||
$emp_id_column_index = $columns_to_check['emp_id']['col_idx'];
|
||
$emp_name_column_index = $columns_to_check['employee_name']['col_idx'];
|
||
$insured_name_column_index = $columns_to_check['insured_name']['col_idx'];
|
||
$claim_no_column_index = $columns_to_check['claim_id']['col_idx'];
|
||
$tpa_no_column_index = $columns_to_check['tpa_id']['col_idx'];
|
||
$relation_column_index = $columns_to_check['relationship']['col_idx'];
|
||
$acm_column_index = $columns_to_check['acm']['col_idx'];
|
||
|
||
//excel file Account Manager Details like Name and Mobile Number
|
||
$excel_acm_data = $row[$acm_column_index] ?? null;
|
||
// var_dump($excel_acm_data); die;
|
||
|
||
$acm_name = null;
|
||
$acm_mobile = null;
|
||
|
||
//seperate the Account Manager Name and Mobile No
|
||
if (!empty($excel_acm_data)) {
|
||
$excel_acm_data = str_replace(['–', '—'], '-', $excel_acm_data);
|
||
$parts = array_map('trim', explode('-', $excel_acm_data, 2));
|
||
$acm_name = $parts[0] ?? null;
|
||
$acm_mobile = $parts[1] ?? null;
|
||
|
||
// ensure mobile number is digits only
|
||
if ($acm_mobile !== null) {
|
||
$acm_mobile = preg_replace('/\D/', '', $acm_mobile);
|
||
}
|
||
}
|
||
|
||
// dd($acm_name, $acm_mobile);
|
||
|
||
$params = [
|
||
'client_name' => $row[$client_column_index] ?? null,
|
||
'policy_no' => $row[$policy_no_column_index] ?? null,
|
||
'insurer_short_name' => $row[$insurer_column_index] ?? null,
|
||
'tpa_short_name' => $row[$tpa_column_index] ?? null,
|
||
'emp_code' => $row[$emp_id_column_index] ?? null,
|
||
'emp_name' => $row[$emp_name_column_index] ?? null,
|
||
'insured_name' => $row[$insured_name_column_index] ?? null,
|
||
'claim_no' => $row[$claim_no_column_index] ?? null,
|
||
'tpa_no' => $row[$tpa_no_column_index] ?? null,
|
||
'relationship' => $row[$relation_column_index] ?? null,
|
||
'acm_mobile' => $acm_mobile ?? null,
|
||
'acm_name' => $acm_name ?? null,
|
||
];
|
||
|
||
$ticketMasterModal = new TicketMasterModel();
|
||
|
||
//check the Claim
|
||
$claim_data = $ticketMasterModal->getTheClaimDetails($params);
|
||
// dd($claim_data);
|
||
if (count($claim_data) != 0) {
|
||
|
||
array_push($result['error_summary'], 7);
|
||
$result['error_data'][$row_key][$policy_no_column_index]['col_name'] = $columns_to_check['policy_no']['col_name']; //push column name
|
||
$result['error_data'][$row_key][$policy_no_column_index]['col_idx'] = $policy_no_column_index; //push column index
|
||
$result['error_data'][$row_key][$policy_no_column_index]['error'][] = "This claim already exist in the system";
|
||
|
||
} else {
|
||
|
||
//check the policy
|
||
$policy_data = $ticketMasterModal->getPolicyData($params);
|
||
// dd($policy_data);
|
||
if (count($policy_data) == 0) {
|
||
|
||
array_push($result['error_summary'], 8);
|
||
$result['error_data'][$row_key][$policy_no_column_index]['col_name'] = $columns_to_check['policy_no']['col_name']; //push column name
|
||
$result['error_data'][$row_key][$policy_no_column_index]['col_idx'] = $policy_no_column_index; //push column index
|
||
$result['error_data'][$row_key][$policy_no_column_index]['error'][] = "The combination of Client, Insurer, TPA and Policy No. does not exist in the system";
|
||
|
||
} else {
|
||
|
||
//check the employee and insured
|
||
$employee_data = $ticketMasterModal->getEmployeeAndEmployeePolicyDetails($params) ?? [];
|
||
// dd($employee_data);
|
||
if (count($employee_data) == 0) {
|
||
array_push($result['error_summary'], 9);
|
||
$result['error_data'][$row_key][$emp_name_column_index]['col_name'] = $columns_to_check['employee_name']['col_name']; //push column name
|
||
$result['error_data'][$row_key][$emp_name_column_index]['col_idx'] = $emp_name_column_index; //push column index
|
||
$result['error_data'][$row_key][$emp_name_column_index]['error'][] = "This employee not exist in the system";
|
||
}
|
||
}
|
||
|
||
//check the Account Manager exist
|
||
$acm_data = $ticketMasterModal->getAcmUserDetails($params) ?? [];
|
||
// dd($acm_data);
|
||
if (count($acm_data) == 0) {
|
||
array_push($result['error_summary'], 10);
|
||
$result['error_data'][$row_key][$acm_column_index]['col_name'] = $columns_to_check['acm']['col_name']; //push column name
|
||
$result['error_data'][$row_key][$acm_column_index]['col_idx'] = $acm_column_index; //push column index
|
||
$result['error_data'][$row_key][$acm_column_index]['error'][] = "This Acount Manager not exist in the system";
|
||
}
|
||
}
|
||
|
||
}
|
||
} catch (\Exception $e) {
|
||
$errorDetails = [
|
||
'error_message' => $e->getMessage(),
|
||
'file' => $e->getFile(),
|
||
'line' => $e->getLine(),
|
||
'stack_trace' => $e->getTraceAsString(),
|
||
];
|
||
$message = "Contact system admin";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
$this->myLogger->logme("error", 'Claim dump file data validation failed due to : ' . json_encode($errorDetails ?? []));
|
||
return $errorDetails;
|
||
}
|
||
|
||
if (isset($result['error_summary']) && count($result['error_summary'])) {
|
||
|
||
$result['error_summary'] = array_count_values($result['error_summary']);
|
||
$status = 'failed';
|
||
$failure_reason = ((json_encode($result)));
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => $status, 'reason' => $failure_reason])->update();
|
||
$this->myLogger->logme("error", '{file_id} uploaded failed', ['file_id' => $file_id]);
|
||
|
||
} else {
|
||
$r = Jobs::addJob(['job_name' => 'claimDumpOnBoardProcess', 'payload' => ['file_id' => $file_id]]);
|
||
}
|
||
|
||
return $result;
|
||
}
|
||
|
||
public function claimDumpOnBoardProcess($params)
|
||
{
|
||
//get file name
|
||
$file_id = $params['file_id'];
|
||
$file = $this->claimDumpFileModel->find($file_id);
|
||
$this->myLogger->logme('error', "Start the claim dump OnBoard Process with the file id : " . $file_id);
|
||
// dd($file);
|
||
|
||
if (!isset($file)) {
|
||
return array('status' => false, 'message' => 'File not found in Database');
|
||
}
|
||
|
||
$file_name_with_path = WRITEPATH . "/uploads/claim_dump_excel/" . $file['file_name'];
|
||
|
||
//check physical file
|
||
if (!file_exists($file_name_with_path)) {
|
||
$message = "Physical file not found";
|
||
$this->myLogger->logme('error', ($message . ' for file id ' . $file_id));
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
return array('error_summary' => [5], 'error_data' => $message);
|
||
}
|
||
|
||
//Read the excel file
|
||
try {
|
||
$excel_data_and_headers = $this->extractExcelData($file['file_name'], "modified_column");
|
||
$excel_data = $excel_data_and_headers['excel_data'];
|
||
unset($excel_data[0]); //remove header
|
||
} catch (\Exception $e) {
|
||
$errorDetails = [
|
||
'error_message' => $e->getMessage(),
|
||
'file' => $e->getFile(),
|
||
'line' => $e->getLine(),
|
||
'stack_trace' => $e->getTraceAsString(),
|
||
];
|
||
$message = "Contact system admin";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
$this->myLogger->logme("error", 'Excel data extraction failed due to : ' . json_encode($errorDetails ?? []));
|
||
return $errorDetails;
|
||
}
|
||
// dd($excel_data_and_headers);
|
||
|
||
//Claim dump excel colums
|
||
$columns_to_check = $excel_data_and_headers['claim_dump_excel_columns'];
|
||
|
||
//create the instance of the ticket master modal
|
||
$ticketMasterModal = new TicketMasterModel();
|
||
|
||
$inserted_claim_list = [];
|
||
//loop the excel data to be insert the ticket master modal
|
||
|
||
try{
|
||
foreach ($excel_data as $row_key => $row) {
|
||
|
||
//avoid empty rows
|
||
if (check_row_is_empty_or_null($row)) {
|
||
break;
|
||
}
|
||
|
||
$client_column_index = $columns_to_check['corporate']['col_idx'];
|
||
$policy_no_column_index = $columns_to_check['policy_no']['col_idx'];
|
||
$insurer_column_index = $columns_to_check['insurer']['col_idx'];
|
||
$tpa_column_index = $columns_to_check['tpa']['col_idx'];
|
||
$emp_id_column_index = $columns_to_check['emp_id']['col_idx'];
|
||
$emp_name_column_index = $columns_to_check['employee_name']['col_idx'];
|
||
$insured_name_column_index = $columns_to_check['insured_name']['col_idx'];
|
||
$claim_no_column_index = $columns_to_check['claim_id']['col_idx'];
|
||
$tpa_no_column_index = $columns_to_check['tpa_id']['col_idx'];
|
||
$relation_column_index = $columns_to_check['relationship']['col_idx'];
|
||
|
||
$params = [
|
||
'client_name' => $row[$client_column_index] ?? null,
|
||
'policy_no' => $row[$policy_no_column_index] ?? null,
|
||
'insurer_short_name' => $row[$insurer_column_index] ?? null,
|
||
'tpa_short_name' => $row[$tpa_column_index] ?? null,
|
||
'emp_code' => $row[$emp_id_column_index] ?? null,
|
||
'emp_name' => $row[$emp_name_column_index] ?? null,
|
||
'insured_name' => $row[$insured_name_column_index] ?? null,
|
||
'claim_no' => $row[$claim_no_column_index] ?? null,
|
||
'tpa_no' => $row[$tpa_no_column_index] ?? null,
|
||
'relationship' => $row[$relation_column_index] ?? null,
|
||
];
|
||
|
||
// get the policy data
|
||
$policy_data = $ticketMasterModal->getEmployeeAndEmployeePolicyDetails($params);
|
||
// dd($policy_data);
|
||
|
||
//construct the claim data to be insert
|
||
$data = $this->constructClaimData($row, $policy_data, $columns_to_check);
|
||
// dd($data);
|
||
|
||
if(!empty($data)){
|
||
|
||
$data['file_id'] = $file_id;
|
||
//insert the claim data to ticket master table
|
||
$insert = $ticketMasterModal->insert($data);
|
||
$inserted_claim_list[] = $insert;
|
||
|
||
$str = implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($params), $params)) ?? "";
|
||
$this->myLogger->logme("error",'Claim insert success --- :' . $str);
|
||
|
||
}else{
|
||
$str = implode(', ', array_map(fn($k, $v) => "$k=$v", array_keys($params), $params)) ?? "";
|
||
$this->myLogger->logme("error",'This employee claim dose not insert --- :' . $str);
|
||
}
|
||
|
||
|
||
}
|
||
}catch(\Exception $e){
|
||
$errorDetails = [
|
||
'error_message' => $e->getMessage(),
|
||
'file' => $e->getFile(),
|
||
'line' => $e->getLine(),
|
||
'stack_trace' => $e->getTraceAsString(),
|
||
];
|
||
$message = "Contact system admin";
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'failed', 'reason' => json_encode(['error_summary' => array_count_values([5]), 'error_data' => $message])])->update();
|
||
$this->myLogger->logme("error", 'Claim dump file Onboard Process failed due to : ' . json_encode( $errorDetails ?? []));
|
||
return $errorDetails;
|
||
}
|
||
|
||
$this->claimDumpFileModel->where('id', $file_id)->set(['status' => 'success','reason' => ''])->update();
|
||
$this->myLogger->logme("error",'{file_id} claim dump uploaded success',['file_id' => $file_id]);
|
||
return $inserted_claim_list;
|
||
}
|
||
|
||
public function extractExcelData($file_name, $returnType = null)
|
||
{
|
||
// $file_name = "claims_dump_form_client.xlsx";
|
||
// Load the Excel file
|
||
$file_name_with_path = WRITEPATH . "/uploads/claim_dump_excel/" . $file_name;
|
||
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
|
||
$worksheet = $spreadsheet->getActiveSheet();
|
||
|
||
// Get the highest row and column numbers
|
||
$highestRow = $worksheet->getHighestDataRow();
|
||
$highestColumn = $worksheet->getHighestDataColumn();
|
||
// dd($highestRow, $highestColumn);
|
||
|
||
// Get header row (assuming headers are in row 1)
|
||
// $headerRow = $worksheet->rangeToArray('A1:' . $highestColumn . '1', null, true, false)[0];
|
||
$excel_data = $worksheet->rangeToArray('A1:' . $highestColumn . $highestRow);
|
||
// print_rr($excel_data); die;
|
||
|
||
$header_with_column_index = $this->getTheColumnIndex($excel_data[0], $this->actualHeaders, $returnType);
|
||
|
||
//Sanitize the excel data
|
||
$excel_data = ExcelSanitizeHelper::sanitizeArrayData($excel_data);
|
||
// dd($excel_data);
|
||
|
||
$data = [
|
||
'claim_dump_excel_columns' => $header_with_column_index,
|
||
'excel_data' => $excel_data,
|
||
];
|
||
|
||
// dd($data);
|
||
return $data;
|
||
}
|
||
|
||
private function getTheColumnIndex($headerRow, $definedColumns, $returnType = null)
|
||
{
|
||
$result = [];
|
||
foreach ($definedColumns as $key => $value) {
|
||
foreach ($headerRow as $col_index => $col_name) {
|
||
|
||
if($returnType == null){
|
||
if(trim($col_name) == trim($value['col_name'])){
|
||
$columnLetter = Coordinate::stringFromColumnIndex(($col_index + 1));
|
||
$result[$col_index] = $value;
|
||
$result[$col_index]["col_idx"] = $col_index;
|
||
$result[$col_index]["col_cell_name"] = $columnLetter;
|
||
}
|
||
}else{
|
||
if(trim($col_name) == trim($value['col_name'])){
|
||
$columnLetter = Coordinate::stringFromColumnIndex(($col_index + 1));
|
||
$definedColumns[$key]["col_idx"] = $col_index;
|
||
$definedColumns[$key]["col_cell_name"] = $columnLetter;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// dd($result);
|
||
if($returnType == null){
|
||
return $result;
|
||
}
|
||
|
||
return $definedColumns;
|
||
|
||
}
|
||
|
||
private function constructClaimData($excel_data, $db_data, $columns_to_check)
|
||
{
|
||
// dd($db_data);
|
||
$client_column_index = $columns_to_check['corporate']['col_idx'];
|
||
$policy_no_column_index = $columns_to_check['policy_no']['col_idx'];
|
||
$insurer_column_index = $columns_to_check['insurer']['col_idx'];
|
||
$tpa_column_index = $columns_to_check['tpa']['col_idx'];
|
||
|
||
$emp_id_column_index = $columns_to_check['emp_id']['col_idx'];
|
||
$emp_name_column_index = $columns_to_check['employee_name']['col_idx'];
|
||
$insured_name_column_index = $columns_to_check['insured_name']['col_idx'];
|
||
$claim_no_column_index = $columns_to_check['claim_id']['col_idx'];
|
||
$tpa_no_column_index = $columns_to_check['tpa_id']['col_idx'];
|
||
$relation_column_index = $columns_to_check['relationship']['col_idx'];
|
||
|
||
$status_column_index = $columns_to_check['status']['col_idx'];
|
||
$acm_column_index = $columns_to_check['acm']['col_idx'];
|
||
$tpa_id_column_index = $columns_to_check['tpa_id']['col_idx'];
|
||
$claim_id_column_index = $columns_to_check['claim_id']['col_idx'];
|
||
$emp_mobile_column_index = $columns_to_check['emp_mobile']['col_idx'];
|
||
$emp_email_column_index = $columns_to_check['emp_email']['col_idx'];
|
||
$claim_collection_column_index = $columns_to_check['claim_collection']['col_idx'];
|
||
$source_detail_column_index = $columns_to_check['source_detail']['col_idx'];
|
||
$claim_type_column_index = $columns_to_check['claim_type']['col_idx'];
|
||
$hospital_column_index = $columns_to_check['hospital']['col_idx'];
|
||
$doa_column_index = $columns_to_check['doa']['col_idx'];
|
||
$dod_column_index = $columns_to_check['dod']['col_idx'];
|
||
$claim_amount_column_index = $columns_to_check['claim_amount']['col_idx'];
|
||
$date_claim_receipt_column_index = $columns_to_check['date_claim_receipt']['col_idx'];
|
||
$date_claim_registration_column_index = $columns_to_check['date_claim_registration']['col_idx'];
|
||
$date_latest_query_raise_column_index = $columns_to_check['date_latest_query_raise']['col_idx'];
|
||
$date_latest_query_resolution_index = $columns_to_check['date_latest_query_resolution']['col_idx'];
|
||
$approved_amt_column_index = $columns_to_check['approved_amt']['col_idx'];
|
||
$date_approval_column_index = $columns_to_check['date_approval']['col_idx'];
|
||
$utr_settlement_column_index = $columns_to_check['utr_settlement']['col_idx'];
|
||
$date_settlement_column_index = $columns_to_check['date_settlement']['col_idx'];
|
||
$reason_column_index = $columns_to_check['reason']['col_idx'];
|
||
$remarks_column_index = $columns_to_check['remarks']['col_idx'];
|
||
$approval_letter_column_index = $columns_to_check['approval_letter']['col_idx'];
|
||
$settlement_letter_column_index = $columns_to_check['settlement_letter']['col_idx'];
|
||
$denial_letter_column_index = $columns_to_check['denial_letter']['col_idx'];
|
||
|
||
$excel_status_data = $excel_data[$status_column_index] ?? null;
|
||
$excel_relationship_data = $excel_data[$relation_column_index] ?? null;
|
||
$excel_acm_data = $excel_data[$acm_column_index] ?? null;
|
||
$excel_tpa_id_data = $excel_data[$tpa_id_column_index] ?? null;
|
||
$excel_claim_id_data = $excel_data[$claim_id_column_index] ?? null;
|
||
$excel_emp_mobile_data = $excel_data[$emp_mobile_column_index] ?? null;
|
||
$excel_emp_email_data = $excel_data[$emp_email_column_index] ?? null;
|
||
$excel_claim_collection_data = $excel_data[$claim_collection_column_index] ?? null;
|
||
$excel_source_detail_data = $excel_data[$source_detail_column_index] ?? null;
|
||
$excel_claim_type_data = $excel_data[$claim_type_column_index] ?? null;
|
||
$excel_hospital_data = $excel_data[$hospital_column_index] ?? null;
|
||
$excel_doa_data = $excel_data[$doa_column_index] ?? null;
|
||
$excel_dod_data = $excel_data[$dod_column_index] ?? null;
|
||
$excel_claim_amount_data = $excel_data[$claim_amount_column_index] ?? null;
|
||
$excel_date_claim_receipt_data = $excel_data[$date_claim_receipt_column_index] ?? null;
|
||
$excel_date_claim_registration_data = $excel_data[$date_claim_registration_column_index] ?? null;
|
||
$excel_date_latest_query_raise_data = $excel_data[$date_latest_query_raise_column_index] ?? null;
|
||
$excel_date_latest_query_resolution_data = $excel_data[$date_latest_query_resolution_index] ?? null;
|
||
$excel_approved_amt_data = $excel_data[$approved_amt_column_index] ?? null;
|
||
$excel_date_approval_data = $excel_data[$date_approval_column_index] ?? null;
|
||
$excel_utr_settlement_data = $excel_data[$utr_settlement_column_index] ?? null;
|
||
$excel_date_settlement_data = $excel_data[$date_settlement_column_index] ?? null;
|
||
$excel_reason_data = $excel_data[$reason_column_index] ?? null;
|
||
$excel_remarks_data = $excel_data[$remarks_column_index] ?? null;
|
||
$excel_approval_letter_data = $excel_data[$approval_letter_column_index] ?? null;
|
||
$excel_settlement_letter_data = $excel_data[$settlement_letter_column_index] ?? null;
|
||
$excel_denial_letter_data = $excel_data[$denial_letter_column_index] ?? null;
|
||
|
||
|
||
//create the instance of the ticket master modal
|
||
$ticketMasterModal = new TicketMasterModel();
|
||
|
||
//excel file Account Manager Details like Name and Mobile Number
|
||
$excel_acm_data = $excel_data[$acm_column_index] ?? null;
|
||
|
||
$acm_name = null;
|
||
$acm_mobile = null;
|
||
|
||
//seperate the Account Manager Name and Mobile No
|
||
if (!empty($excel_acm_data)) {
|
||
$parts = array_map('trim', explode('-', $excel_acm_data, 2));
|
||
$acm_name = $parts[0] ?? null;
|
||
$acm_mobile = $parts[1] ?? null;
|
||
}
|
||
|
||
$params = [
|
||
"acm_name" => $acm_name,
|
||
"acm_mobile" => $acm_mobile,
|
||
];
|
||
|
||
//get the acountmanager data
|
||
$acm_data = $ticketMasterModal->getAcmUserDetails($params) ?? [];
|
||
// dd($acm_data);
|
||
|
||
//get the claim status id from the database
|
||
$claim_status_data = $this->ticketClaimStatusModel
|
||
->select('id, claim_status, ticket_type')
|
||
->where('is_active', 1)
|
||
->where('ticket_type', $db_data['ticket_type_id'])
|
||
->where('LOWER(claim_status)', strtolower($excel_status_data))
|
||
->first();
|
||
|
||
// dd($claim_status_data);
|
||
|
||
$claim_status_id = $claim_status_data['id'] ?? null;
|
||
|
||
//initialize Ticket controller for the other data
|
||
$ticketController = new TicketController();
|
||
$mode_of_intimation = array_flip($ticketController->modeOFIntimate);
|
||
|
||
//handle the Claim Type data key
|
||
$cliam_type_id = 1;
|
||
if(isset($db_data['ticket_type_id'])){
|
||
if($db_data['ticket_type_id'] == 2){
|
||
$claim_type = array_flip($ticketController->claimType[1]);
|
||
$cliam_type_id = $claim_type[$excel_claim_type_data] ?? 1;
|
||
}else{
|
||
$claim_type = array_flip($ticketController->claimType[2]);
|
||
$cliam_type_id = $claim_type[$excel_claim_type_data] ?? 1;
|
||
}
|
||
}
|
||
|
||
$db_data['insured_name'] = $excel_data[$insured_name_column_index] ?? null;
|
||
//get Insured emp name and Insured emp id
|
||
$insured_data = $ticketMasterModal->getInsuredDetails($db_data);
|
||
// dd($insured_data);
|
||
|
||
//handle remarks based on the status
|
||
$return_remarks = null;
|
||
$cancel_remarks = null;
|
||
$denial_reason = null;
|
||
if(strtolower($excel_status_data) == strtolower('RETURNED')){
|
||
$return_remarks = $excel_remarks_data ?? null;
|
||
}else if(strtolower($excel_status_data) == strtolower('CANCELLED')){
|
||
$cancel_remarks = $excel_remarks_data ?? null;
|
||
}else if(strtolower($excel_status_data) == strtolower('REJECTED')){
|
||
$denial_reason = $excel_reason_data ?? null;
|
||
}
|
||
|
||
$ticketMaster = [
|
||
'ticket_type_id' => $db_data['ticket_type_id'] ?? null,
|
||
'claim_status_id' => $claim_status_id ?? null,
|
||
'acm_id' => $acm_data['id'] ?? null,
|
||
'insurer_id' => $db_data['insurer_id'] ?? null,
|
||
'tpa_id' => $db_data['tpa_id'] ?? null,
|
||
'client_id' => $db_data['client_id'] ?? null,
|
||
'emp_id' => $db_data['emp_id'] ?? null,
|
||
'client_policy_id' => $db_data['client_policy_id'] ?? null,
|
||
'policy_no' => $db_data['policy_no'] ?? null,
|
||
'emp_code' => $db_data['emp_code'] ?? null,
|
||
'tpa_no' => $excel_tpa_id_data ?? $db_data['tpa_no'] ?? null,
|
||
'emp_name' => $db_data['emp_name'] ?? null,
|
||
'relationship' => strtolower($excel_relationship_data) ?? null,
|
||
'emp_mobile' => $excel_emp_mobile_data ?? $db_data['emp_mobile'] ?? null,
|
||
'emp_mail' => $excel_emp_email_data ?? $db_data['emp_mail'] ?? null,
|
||
|
||
'mode_of_intimation' => $mode_of_intimation[$excel_claim_collection_data] ?? null,
|
||
'claim_type' => $cliam_type_id ?? null,
|
||
|
||
'insured_emp_id' => $insured_data['emp_id'] ?? null,
|
||
'insured_name' => $insured_data['name'] ?? $excel_data[$insured_name_column_index] ?? null,
|
||
|
||
'hospital_name' => $excel_hospital_data ?? null,
|
||
'claim_amount' => $excel_claim_amount_data ?? null,
|
||
'claim_number' => $excel_claim_id_data ?? null,
|
||
'approved_letter' => $excel_approval_letter_data ?? null,
|
||
'approved_amount' => $excel_approved_amt_data ?? null,
|
||
'utr_details' => $excel_utr_settlement_data ?? null,
|
||
'settle_letter' => $excel_settlement_letter_data ?? null,
|
||
'return_remark' => $return_remarks,
|
||
'cancel_remark' => $cancel_remarks,
|
||
'denial_reason' => $denial_reason ?? null,
|
||
|
||
'doa' => normalizeDate($excel_doa_data),
|
||
'dod' => normalizeDate($excel_dod_data),
|
||
'raised_date' => normalizeDate($excel_date_latest_query_raise_data),
|
||
'registration_date' => normalizeDate($excel_date_claim_registration_data),
|
||
'query_received_date' => normalizeDate($excel_date_latest_query_resolution_data),
|
||
'approved_date' => normalizeDate($excel_date_approval_data),
|
||
'settled_date' => normalizeDate($excel_date_settlement_data),
|
||
|
||
'priority' => null,
|
||
'emp_personal_mail' => null,
|
||
'pod_no' => null,
|
||
'dob' => null,
|
||
'date_of_join' => null,
|
||
'date_of_incep' => null,
|
||
'date_of_accident' => null,
|
||
'date_of_death' => null,
|
||
'date_of_intimat' => null,
|
||
'si_amt' => null,
|
||
'denial_date' => null,
|
||
'awb_no_courier_name' => null,
|
||
'non_id_reason' => null,
|
||
'pay_initiate_date' => null,
|
||
'approved_description' => null
|
||
];
|
||
|
||
// dd($ticketMaster);
|
||
return $ticketMaster;
|
||
}
|
||
|
||
public function getClaimExcelErrorData($file_id)
|
||
{
|
||
try {
|
||
|
||
$file = $this->claimDumpFileModel->where('id', $file_id)->first();
|
||
$error_data = json_decode($file['reason']);
|
||
// dd($error_data);
|
||
|
||
$file_name_with_path = WRITEPATH . "/uploads/claim_dump_excel/" . $file['file_name'];
|
||
|
||
//check the file exist or not
|
||
if (!file_exists($file_name_with_path)) {
|
||
$error_message = "File not found";
|
||
$this->myLogger->logme('error', ($error_message . ' for file id ' . $file_id));
|
||
return 0;
|
||
}
|
||
|
||
$excel_data_and_headers = $this->extractExcelData($file['file_name']);
|
||
$excel_data = $excel_data_and_headers['excel_data'];
|
||
$excelErrorData['excel_header'] = $excel_data[0];
|
||
unset($excel_data[0]);
|
||
|
||
// Kint::dump($excel_data);
|
||
if ($error_data->error_type == 1) {
|
||
|
||
$finalArray = [];
|
||
foreach ($error_data->error_data as $key => $value) {
|
||
foreach ($value as $key2 => $value2) {
|
||
$error_data = $value2->error;
|
||
$data = ['value' => $excel_data[$key][$value2->col_idx], 'error' => $error_data,];
|
||
$excel_data[$key][$value2->col_idx] = $data;
|
||
}
|
||
array_push($finalArray, $excel_data[$key]);
|
||
}
|
||
|
||
foreach ($finalArray as $fkey => $value) {
|
||
foreach ($value as $vkey => $arrayData) {
|
||
if (!is_array($arrayData)) {
|
||
$data = ['value' => $arrayData];
|
||
$finalArray[$fkey][$vkey] = $data;
|
||
}
|
||
}
|
||
}
|
||
|
||
$excelErrorData['excel_data'] = $finalArray;
|
||
return $excelErrorData;
|
||
} else if ($error_data->error_type == 2) {
|
||
|
||
|
||
$allErrors = [];
|
||
$typeTowArray = [];
|
||
|
||
foreach ($error_data->error_data as $index => $item) {
|
||
|
||
foreach ($item as $field) {
|
||
if (!isset($allErrors[$index])) {
|
||
$allErrors[$index] = [];
|
||
}
|
||
$allErrors[$index] = array_merge($allErrors[$index], $field->error);
|
||
}
|
||
}
|
||
|
||
// dd(array_keys($allErrors));
|
||
foreach ($allErrors as $key => $value) {
|
||
// echo $key;
|
||
// print_r($value);
|
||
foreach ($excel_data as $excel_data_index => $excel_data_value) {
|
||
if ($excel_data_value[0] == $key) {
|
||
$data = ['value' => $excel_data[$excel_data_index][1], 'error' => $value,];
|
||
$excel_data[$excel_data_index][1] = $data;
|
||
array_push($typeTowArray, $excel_data[$excel_data_index]);
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
// dd($data);
|
||
foreach ($typeTowArray as $fkey => $value) {
|
||
foreach ($value as $vkey => $arrayData) {
|
||
if (!is_array($arrayData)) {
|
||
$data = ['value' => $arrayData];
|
||
$typeTowArray[$fkey][$vkey] = $data;
|
||
}
|
||
}
|
||
}
|
||
|
||
$excelErrorData['excel_data'] = $typeTowArray;
|
||
return $excelErrorData;
|
||
}
|
||
} catch (\Exception $e) {
|
||
// Handle any exceptions
|
||
$errorMessage = $e->getMessage(); //die();
|
||
$this->myLogger->logme('error', $errorMessage);
|
||
return false; // You can return an error response here
|
||
}
|
||
}
|
||
|
||
public function truncateClaimDumpFile($file_id)
|
||
{
|
||
|
||
}
|
||
|
||
}
|