Fix Member Enrollment Handle Import with custom format
This commit is contained in:
@@ -123,11 +123,10 @@ class MemberController extends Controller
|
|||||||
$writer = WriterEntityFactory::createXLSXWriter();
|
$writer = WriterEntityFactory::createXLSXWriter();
|
||||||
$writer->openToFile(Storage::disk('public')->path('temp/result-'.$file_name));
|
$writer->openToFile(Storage::disk('public')->path('temp/result-'.$file_name));
|
||||||
|
|
||||||
$headers_map_to_table_fields = Member::$doc_headers_to_field_map;
|
$headers_map_to_table_fields = $this->memberEnrollmentService->doc_headers_to_field_map;
|
||||||
|
|
||||||
// Write Header to File
|
// Write Header to File with certain Format from MemberEnrollmentService::$result_doc_headers
|
||||||
$result_headers = array_keys($headers_map_to_table_fields);
|
$result_headers = $this->memberEnrollmentService->result_doc_headers;
|
||||||
array_push($result_headers, 'Ingestion Status');
|
|
||||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($result_headers));
|
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($result_headers));
|
||||||
$writer->addRow($singleRow);
|
$writer->addRow($singleRow);
|
||||||
|
|
||||||
@@ -147,6 +146,7 @@ class MemberController extends Controller
|
|||||||
$doc_headers_indexes[$index] = $title;
|
$doc_headers_indexes[$index] = $title;
|
||||||
}
|
}
|
||||||
} else { // Next Row Should be Data
|
} else { // Next Row Should be Data
|
||||||
|
// Collecting Values from table rows and map it to correct fields
|
||||||
$new_member_data = [];
|
$new_member_data = [];
|
||||||
foreach ($row->getCells() as $header_index => $cell) {
|
foreach ($row->getCells() as $header_index => $cell) {
|
||||||
if (isset($headers_map_to_table_fields[$doc_headers_indexes[$header_index]])) {
|
if (isset($headers_map_to_table_fields[$doc_headers_indexes[$header_index]])) {
|
||||||
@@ -155,23 +155,29 @@ class MemberController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// dd($new_member_data);
|
||||||
$rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data);
|
$rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data);
|
||||||
|
|
||||||
// Write Success Result to File
|
// Write Success Result to File
|
||||||
array_push($new_member_data, 'SUCCESS');
|
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($new_member_data));
|
||||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($new_member_data));
|
|
||||||
$writer->addRow($singleRow);
|
$writer->addRow($singleRow);
|
||||||
$imported_member_data++;
|
$imported_member_data++;
|
||||||
} catch (ImportRowException $e) {
|
} catch (ImportRowException $e) {
|
||||||
// Write Data Validation Error to File
|
// Write Data Validation Error to File
|
||||||
array_push($new_member_data, $e->getMessage());
|
$new_member_data = array_merge($new_member_data, [
|
||||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($new_member_data));
|
'ingestion_code' => $e->getCode(),
|
||||||
|
'ingestion_status' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($new_member_data));
|
||||||
$writer->addRow($singleRow);
|
$writer->addRow($singleRow);
|
||||||
$failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage()];
|
$failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage()];
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
// Write Server Error to File
|
// Write Server Error to File
|
||||||
array_push($new_member_data, "Server Error");
|
$new_member_data = array_merge($new_member_data, [
|
||||||
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRow($new_member_data));
|
'ingestion_code' => $e->getCode(),
|
||||||
|
'ingestion_status' => $e->getMessage(),
|
||||||
|
]);
|
||||||
|
$singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($new_member_data));
|
||||||
$writer->addRow($singleRow);
|
$writer->addRow($singleRow);
|
||||||
$failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage()];
|
$failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage()];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,230 @@ use DB;
|
|||||||
|
|
||||||
class MemberEnrollmentService
|
class MemberEnrollmentService
|
||||||
{
|
{
|
||||||
|
public $doc_headers_to_field_map = [
|
||||||
|
"Record Mode" => "record_mode",
|
||||||
|
"Record Type" => "record_type",
|
||||||
|
"Payor ID" => "payor_id",
|
||||||
|
"Member ID" => "member_id",
|
||||||
|
"Mapping ID" => "principal_id",
|
||||||
|
"Halodoc Member ID" => "halodoc_member_id",
|
||||||
|
"Corporate ID" => "corporate_id",
|
||||||
|
"NIK" => "nik",
|
||||||
|
"Division" => "division_code",
|
||||||
|
"Branch Code" => "branch_code",
|
||||||
|
"Bank Info" => "banks_info",
|
||||||
|
"Language" => "language",
|
||||||
|
"Type of work" => "type_of_work",
|
||||||
|
"Race" => "race",
|
||||||
|
"Policy Number" => "policy_number",
|
||||||
|
"Policy No." => "policy_number",
|
||||||
|
"Marital Status" => "marital_status",
|
||||||
|
"Relationship" => "relationship_with_principal",
|
||||||
|
"Member's Effective Date" => "member_effective_date",
|
||||||
|
"Member's Expiry Date" => "member_expiry_date",
|
||||||
|
"Faskes FKTP (First Level Provider) or Individual preferred provider" => "faskes_fktp",
|
||||||
|
"Faskes FKRTL (Next Level Provider) or Individual group preferred provider" => "faskes_fkrtl",
|
||||||
|
"The Right Classes Room of BPJS Participants" => "bpjs_class",
|
||||||
|
"Name of Faskes" => "faskes_name",
|
||||||
|
"Rule_BPJSK ('Y' or 'N')" => "bpjsk",
|
||||||
|
"Agent Code / intermediary code" => "agent_code",
|
||||||
|
"Member Name" => "name",
|
||||||
|
"Address1" => "address1",
|
||||||
|
"Address 1" => "address1",
|
||||||
|
"Address2" => "address2",
|
||||||
|
"Address3" => "address3",
|
||||||
|
"Address4" => "address4",
|
||||||
|
"City" => "city",
|
||||||
|
"State" => "state",
|
||||||
|
"Post Code" => "post_code",
|
||||||
|
"Telephone - Mobile" => "telephone_mobile",
|
||||||
|
"Telephone – Mobile" => "telephone_mobile",
|
||||||
|
"Telephone - mobile" => "telephone_mobile",
|
||||||
|
"Telephone – Res" => "telephone_res",
|
||||||
|
"Telephone Res" => "telephone_res",
|
||||||
|
"Telephone - Res" => "telephone_res",
|
||||||
|
"Telephone – Office" => "telephone_office",
|
||||||
|
"Telephone - Office" => "telephone_office",
|
||||||
|
"NRIC" => "nric",
|
||||||
|
"Passport No" => "passport_number",
|
||||||
|
"Passport Country" => "passport_country",
|
||||||
|
"Email" => "email",
|
||||||
|
"Identification Code" => "identification_code",
|
||||||
|
"Date of Birth" => "date_of_birth",
|
||||||
|
"Sex" => "sex",
|
||||||
|
"Internal Use" => "internal_use",
|
||||||
|
"Plan-ID" => "plan_id",
|
||||||
|
"Employment-Status" => "employment_status",
|
||||||
|
"Internal Use" => "internal_use_1",
|
||||||
|
"Internal Use" => "internal_use_2",
|
||||||
|
"Internal Use" => "internal_use_3",
|
||||||
|
"Date Terminated" => "date_terminated",
|
||||||
|
"Pre Existing" => "pre_existing",
|
||||||
|
"BPJS ID" => "bpjs_id",
|
||||||
|
"Endorsement Date" => "endorsement_date",
|
||||||
|
"Remarks" => "remarks",
|
||||||
|
"Internal Use" => "internal_use_4",
|
||||||
|
"Member Since" => "member_since",
|
||||||
|
"Internal Use" => "internal_use_5",
|
||||||
|
"Policy In Force" => "policy_in_force",
|
||||||
|
"Member Suspended" => "member_suspended",
|
||||||
|
"Activation Date" => "activation_date",
|
||||||
|
"Internal Use" => "internal_use_6",
|
||||||
|
"StartNoClaim" => "start_no_claim",
|
||||||
|
"EndNoClaim" => "end_no_claim",
|
||||||
|
"Option Mode" => "option_mode",
|
||||||
|
"Policy Inforce" => "policy_inforce",
|
||||||
|
"Renewal activation date" => "renewal_activation_date",
|
||||||
|
"Renewal Activation Date" => "renewal_activation_date",
|
||||||
|
"Ingestion Code" => "ingestion_code", // TODO I think this should not be here because if user uploading result then ingestion code and status will be filled
|
||||||
|
"Ingestion Status" => "ingestion_status",
|
||||||
|
];
|
||||||
|
|
||||||
|
public $field_to_doc_headers_map = [
|
||||||
|
"record_mode" => "Record Mode",
|
||||||
|
"record_type" => "Record Type",
|
||||||
|
"payor_id" => "Payor ID",
|
||||||
|
"member_id" => "Member ID",
|
||||||
|
"principal_id" => "Mapping ID",
|
||||||
|
"halodoc_member_id" => "Halodoc Member ID",
|
||||||
|
"corporate_id" => "Corporate ID",
|
||||||
|
"nik" => "NIK",
|
||||||
|
"division_code" => "Division",
|
||||||
|
"branch_code" => "Branch Code",
|
||||||
|
"banks_info" => "Bank Info",
|
||||||
|
"language" => "Language",
|
||||||
|
"type_of_work" => "Type of work",
|
||||||
|
"race" => "Race",
|
||||||
|
"policy_number" => "Policy Number",
|
||||||
|
"policy_number" => "Policy No.",
|
||||||
|
"marital_status" => "Marital Status",
|
||||||
|
"relationship_with_principal" => "Relationship",
|
||||||
|
"member_effective_date" => "Member's Effective Date",
|
||||||
|
"member_expiry_date" => "Member's Expiry Date",
|
||||||
|
"faskes_fktp" => "Faskes FKTP (First Level Provider) or Individual preferred provider",
|
||||||
|
"faskes_fkrtl" => "Faskes FKRTL (Next Level Provider) or Individual group preferred provider",
|
||||||
|
"bpjs_class" => "The Right Classes Room of BPJS Participants",
|
||||||
|
"faskes_name" => "Name of Faskes",
|
||||||
|
"bpjsk" => "Rule_BPJSK ('Y' or 'N')",
|
||||||
|
"agent_code" => "Agent Code / intermediary code",
|
||||||
|
"name" => "Member Name",
|
||||||
|
"address1" => "Address1",
|
||||||
|
"address1" => "Address 1",
|
||||||
|
"address2" => "Address2",
|
||||||
|
"address3" => "Address3",
|
||||||
|
"address4" => "Address4",
|
||||||
|
"city" => "City",
|
||||||
|
"state" => "State",
|
||||||
|
"post_code" => "Post Code",
|
||||||
|
"telephone_mobile" => "Telephone - Mobile",
|
||||||
|
"telephone_res" => "Telephone - Res",
|
||||||
|
"telephone_office" => "Telephone - Office",
|
||||||
|
"nric" => "NRIC",
|
||||||
|
"passport_number" => "Passport No",
|
||||||
|
"passport_country" => "Passport Country",
|
||||||
|
"email" => "Email",
|
||||||
|
"identification_code" => "Identification Code",
|
||||||
|
"date_of_birth" => "Date of Birth",
|
||||||
|
"sex" => "Sex",
|
||||||
|
"internal_use" => "Internal Use",
|
||||||
|
"plan_id" => "Plan-ID",
|
||||||
|
"employment_status" => "Employment-Status",
|
||||||
|
"internal_use_1" => "Internal Use",
|
||||||
|
"internal_use_2" => "Internal Use",
|
||||||
|
"internal_use_3" => "Internal Use",
|
||||||
|
"date_terminated" => "Date Terminated",
|
||||||
|
"pre_existing" => "Pre Existing",
|
||||||
|
"bpjs_id" => "BPJS ID",
|
||||||
|
"endorsement_date" => "Endorsement Date",
|
||||||
|
"remarks" => "Remarks",
|
||||||
|
"internal_use_4" => "Internal Use",
|
||||||
|
"member_since" => "Member Since",
|
||||||
|
"internal_use_5" => "Internal Use",
|
||||||
|
"policy_in_force" => "Policy In Force",
|
||||||
|
"member_suspended" => "Member Suspended",
|
||||||
|
"activation_date" => "Activation Date",
|
||||||
|
"internal_use_6" => "Internal Use",
|
||||||
|
"start_no_claim" => "StartNoClaim",
|
||||||
|
"end_no_claim" => "EndNoClaim",
|
||||||
|
"option_mode" => "Option Mode",
|
||||||
|
"policy_inforce" => "Policy Inforce",
|
||||||
|
"renewal_activation_date" => "Renewal Activation Date",
|
||||||
|
"ingestion_code" => "Ingestion Code",
|
||||||
|
"ingestion_status" => "Ingestion Status",
|
||||||
|
];
|
||||||
|
public $result_doc_headers = [
|
||||||
|
"Record Mode",
|
||||||
|
"Record Type",
|
||||||
|
"Payor ID",
|
||||||
|
"Member ID",
|
||||||
|
"Mapping ID",
|
||||||
|
"Halodoc Member ID",
|
||||||
|
"Corporate ID",
|
||||||
|
"NIK",
|
||||||
|
"Division",
|
||||||
|
"Branch Code",
|
||||||
|
"Bank Info",
|
||||||
|
"Language",
|
||||||
|
"Type of work",
|
||||||
|
"Race",
|
||||||
|
"Policy Number",
|
||||||
|
"Policy No.",
|
||||||
|
"Marital Status",
|
||||||
|
"Relationship",
|
||||||
|
"Member's Effective Date",
|
||||||
|
"Member's Expiry Date",
|
||||||
|
"Faskes FKTP (First Level Provider) or Individual preferred provider",
|
||||||
|
"Faskes FKRTL (Next Level Provider) or Individual group preferred provider",
|
||||||
|
"The Right Classes Room of BPJS Participants",
|
||||||
|
"Name of Faskes",
|
||||||
|
"Rule_BPJSK ('Y' or 'N')",
|
||||||
|
"Agent Code / intermediary code",
|
||||||
|
"Member Name",
|
||||||
|
"Address1",
|
||||||
|
"Address 1",
|
||||||
|
"Address2",
|
||||||
|
"Address3",
|
||||||
|
"Address4",
|
||||||
|
"City",
|
||||||
|
"State",
|
||||||
|
"Post Code",
|
||||||
|
"Telephone - Mobile",
|
||||||
|
"Telephone - Res",
|
||||||
|
"Telephone - Office",
|
||||||
|
"NRIC",
|
||||||
|
"Passport No",
|
||||||
|
"Passport Country",
|
||||||
|
"Email",
|
||||||
|
"Identification Code",
|
||||||
|
"Date of Birth",
|
||||||
|
"Sex",
|
||||||
|
"Internal Use",
|
||||||
|
"Plan-ID",
|
||||||
|
"Employment-Status",
|
||||||
|
"Internal Use",
|
||||||
|
"Internal Use",
|
||||||
|
"Internal Use",
|
||||||
|
"Date Terminated",
|
||||||
|
"Pre Existing",
|
||||||
|
"BPJS ID",
|
||||||
|
"Endorsement Date",
|
||||||
|
"Remarks",
|
||||||
|
"Internal Use",
|
||||||
|
"Member Since",
|
||||||
|
"Internal Use",
|
||||||
|
"Policy In Force",
|
||||||
|
"Member Suspended",
|
||||||
|
"Activation Date",
|
||||||
|
"Internal Use",
|
||||||
|
"StartNoClaim",
|
||||||
|
"EndNoClaim",
|
||||||
|
"Option Mode",
|
||||||
|
"Policy Inforce",
|
||||||
|
"Renewal Activation Date",
|
||||||
|
"Ingestion Code",
|
||||||
|
"Ingestion Status",
|
||||||
|
];
|
||||||
|
|
||||||
public function __construct(Member $member)
|
public function __construct(Member $member)
|
||||||
{
|
{
|
||||||
$this->member = $member;
|
$this->member = $member;
|
||||||
@@ -102,9 +326,9 @@ class MemberEnrollmentService
|
|||||||
if (empty($row['name'])) {
|
if (empty($row['name'])) {
|
||||||
throw new ImportRowException(__('enrollment.NAME_REQUIRED'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.NAME_REQUIRED'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!empty($row['telephone_mobile'])
|
if (!empty($row['telephone_mobile'])
|
||||||
&& substr($row['telephone_mobile'], 0, 4) != '+628') {
|
&& !(substr($row['telephone_mobile'], 0, 4) == '+628' || substr($row['telephone_mobile'], 0, 3) == '628')) {
|
||||||
throw new ImportRowException(__('enrollment.PHONE_INVALID'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.PHONE_INVALID'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,50 +345,46 @@ class MemberEnrollmentService
|
|||||||
if (empty($row['sex'])) {
|
if (empty($row['sex'])) {
|
||||||
throw new ImportRowException(__('enrollment.SEX_REQUIRED'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.SEX_REQUIRED'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($row['sex'])) {
|
|
||||||
throw new ImportRowException(__('enrollment.SEX_REQUIRED'), 0, null, $row);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handleImportRow(Corporate $corporate, $row)
|
public function handleImportRow(Corporate $corporate, $row)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$member_data = [
|
$member_data = [
|
||||||
"name" => $row['name'],
|
"name" => $row['name'] ?? null,
|
||||||
"member_id" => $row['member_id'],
|
"member_id" => $row['member_id'] ?? null,
|
||||||
"payor_id" => $row['payor_id'],
|
"payor_id" => $row['payor_id'] ?? null,
|
||||||
"nik" => $row['nik'],
|
"nik" => $row['nik'] ?? null,
|
||||||
"birth_date" => Carbon::parse(strtotime($row['date_of_birth'])),
|
"birth_date" => Carbon::parse(strtotime($row['date_of_birth'])),
|
||||||
"gender" => Helper::genderNormalization($row['sex']),
|
"gender" => Helper::genderNormalization($row['sex']),
|
||||||
"language" => $row['language'],
|
"language" => $row['language'] ?? null,
|
||||||
"race" => $row['race'],
|
"race" => $row['race'] ?? null,
|
||||||
"marital_status" => $row['marital_status'],
|
"marital_status" => $row['marital_status'] ?? null,
|
||||||
"record_type" => $row['record_type'],
|
"record_type" => $row['record_type'] ?? null,
|
||||||
"principal_id" => $row['principal_id'],
|
"principal_id" => $row['principal_id'] ?? null,
|
||||||
"relation_with_principal" => $row['relationship_with_principal'],
|
"relation_with_principal" => $row['relationship_with_principal'] ?? null,
|
||||||
"bpjs_class" => $row['bpjs_class'],
|
"bpjs_class" => $row['bpjs_class'] ?? null,
|
||||||
"nric" => $row['nric'],
|
"nric" => $row['nric'] ?? null,
|
||||||
"email" => $row['email'],
|
"email" => $row['email'] ?? null,
|
||||||
"bank_info" => $row['banks_info'],
|
"bank_info" => $row['banks_info'] ?? null,
|
||||||
"agent_code" => $row['agent_code'],
|
"agent_code" => $row['agent_code'] ?? null,
|
||||||
"address1" => $row['address1'],
|
"address1" => $row['address1'] ?? null,
|
||||||
"address2" => $row['address2'],
|
"address2" => $row['address2'] ?? null,
|
||||||
"address3" => $row['address3'],
|
"address3" => $row['address3'] ?? null,
|
||||||
"address4" => $row['address4'],
|
"address4" => $row['address4'] ?? null,
|
||||||
"city" => $row['city'],
|
"city" => $row['city'] ?? null,
|
||||||
"state" => $row['state'],
|
"state" => $row['state'] ?? null,
|
||||||
"postal_code" => $row['post_code'],
|
"postal_code" => $row['post_code'] ?? null,
|
||||||
"passport_no" => $row['passport_number'],
|
"passport_no" => $row['passport_number'] ?? null,
|
||||||
"passport_country" => $row['passport_country'],
|
"passport_country" => $row['passport_country'] ?? null,
|
||||||
"identification_code" => $row['identification_code'],
|
"identification_code" => $row['identification_code'] ?? null,
|
||||||
"pre_existing" => $row['pre_existing'],
|
"pre_existing" => $row['pre_existing'] ?? null,
|
||||||
"bpjs_id" => $row['bpjs_id'],
|
"bpjs_id" => $row['bpjs_id'] ?? null,
|
||||||
"endorsement_date" => $row['endorsement_date'],
|
"endorsement_date" => $row['endorsement_date'] ?? null,
|
||||||
"remarks" => $row['remarks'],
|
"remarks" => $row['remarks'] ?? null,
|
||||||
"policy_in_force" => $row['policy_in_force'],
|
"policy_in_force" => $row['policy_in_force'] ?? null,
|
||||||
"start_no_claim" => $row['start_no_claim'],
|
"start_no_claim" => $row['start_no_claim'] ?? null,
|
||||||
"end_no_claim" => $row['end_no_claim'],
|
"end_no_claim" => $row['end_no_claim'] ?? null,
|
||||||
];
|
];
|
||||||
|
|
||||||
if (!isset($corporate->currentPolicy) || $corporate->currentPolicy->code != $row['policy_number']) {
|
if (!isset($corporate->currentPolicy) || $corporate->currentPolicy->code != $row['policy_number']) {
|
||||||
@@ -261,8 +481,8 @@ class MemberEnrollmentService
|
|||||||
if (!$memberPolicy->member->isDirty()) {
|
if (!$memberPolicy->member->isDirty()) {
|
||||||
throw new ImportRowException(__('enrollment.MEMBER_NO_CHANGE'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.MEMBER_NO_CHANGE'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $memberPolicy->member->save();
|
$memberPolicy->member->save();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "3": // Member Deletion
|
case "3": // Member Deletion
|
||||||
@@ -288,7 +508,7 @@ class MemberEnrollmentService
|
|||||||
$member = $memberPolicy->member;
|
$member = $memberPolicy->member;
|
||||||
$member->active = false;
|
$member->active = false;
|
||||||
|
|
||||||
return $member->save();
|
$member->save();
|
||||||
break;
|
break;
|
||||||
case "4": // Member Update Start and End Date
|
case "4": // Member Update Start and End Date
|
||||||
$memberPolicy = MemberPolicy::query()
|
$memberPolicy = MemberPolicy::query()
|
||||||
@@ -323,7 +543,7 @@ class MemberEnrollmentService
|
|||||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $memberPolicy->save();
|
$memberPolicy->save();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "5": // Member Renewal Policy (without card)
|
case "5": // Member Renewal Policy (without card)
|
||||||
@@ -364,7 +584,8 @@ class MemberEnrollmentService
|
|||||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $memberPolicy->save();
|
$memberPolicy->save();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "6": // Member Renewal Policy (with card)
|
case "6": // Member Renewal Policy (with card)
|
||||||
$memberPolicy = MemberPolicy::query()
|
$memberPolicy = MemberPolicy::query()
|
||||||
@@ -404,7 +625,8 @@ class MemberEnrollmentService
|
|||||||
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $memberPolicy->save();
|
$memberPolicy->save();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case "7": // Requesting to Change the Unique Data of the Member
|
case "7": // Requesting to Change the Unique Data of the Member
|
||||||
$memberPolicy = MemberPolicy::query()
|
$memberPolicy = MemberPolicy::query()
|
||||||
@@ -492,7 +714,7 @@ class MemberEnrollmentService
|
|||||||
'end' => $row['member_expiry_date']
|
'end' => $row['member_expiry_date']
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return $memberPolicy->save();
|
$memberPolicy->save();
|
||||||
break;
|
break;
|
||||||
// case "10": // No Information Available
|
// case "10": // No Information Available
|
||||||
|
|
||||||
@@ -555,10 +777,31 @@ class MemberEnrollmentService
|
|||||||
throw new ImportRowException(__("enrollment.MODE_UNAVAILABLE"), 0, null, $row);
|
throw new ImportRowException(__("enrollment.MODE_UNAVAILABLE"), 0, null, $row);
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
// dd($row, $e->getMessage());
|
||||||
throw new ImportRowException($e->getMessage(), (int) $e->getCode(), $e, $row);
|
throw new ImportRowException($e->getMessage(), (int) $e->getCode(), $e, $row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Should be success then returning new member data with extra ingestion code & status
|
||||||
|
$member_data['ingestion_code'] = "200";
|
||||||
|
$member_data['ingestion_status'] = "SUCCESS";
|
||||||
|
|
||||||
|
return $member_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// This returning row with format or order following $result_doc_headers
|
||||||
|
public function makeResultRowWithResultFormat($row_data)
|
||||||
|
{
|
||||||
|
$cells = [];
|
||||||
|
foreach ($this->result_doc_headers as $header) {
|
||||||
|
$value = $row_data[$this->doc_headers_to_field_map[$header]] ?? null;
|
||||||
|
$cells[] = WriterEntityFactory::createCell($value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $cells;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This returning row with format or order as it is
|
||||||
public function makeResultRow($row_data)
|
public function makeResultRow($row_data)
|
||||||
{
|
{
|
||||||
$cells = [];
|
$cells = [];
|
||||||
|
|||||||
@@ -56,73 +56,6 @@ class Member extends Model
|
|||||||
"end_no_claim",
|
"end_no_claim",
|
||||||
];
|
];
|
||||||
|
|
||||||
public static $doc_headers_to_field_map = [
|
|
||||||
"Record Mode" => "record_mode",
|
|
||||||
"Record Type" => "record_type",
|
|
||||||
"Payor ID" => "payor_id",
|
|
||||||
"Member ID" => "member_id",
|
|
||||||
"Mapping ID" => "principal_id",
|
|
||||||
"Halodoc Member ID" => "halodoc_member_id",
|
|
||||||
"Corporate ID" => "corporate_id",
|
|
||||||
"NIK" => "nik",
|
|
||||||
"Division" => "division_code",
|
|
||||||
"Branch Code" => "branch_code",
|
|
||||||
"Bank Info" => "banks_info",
|
|
||||||
"Language" => "language",
|
|
||||||
"Type of work" => "type_of_work",
|
|
||||||
"Race" => "race",
|
|
||||||
"Policy Number" => "policy_number",
|
|
||||||
"Marital Status" => "marital_status",
|
|
||||||
"Relationship" => "relationship_with_principal",
|
|
||||||
"Member's Effective Date" => "member_effective_date",
|
|
||||||
"Member's Expiry Date" => "member_expiry_date",
|
|
||||||
"Faskes FKTP (First Level Provider) or Individual preferred provider" => "faskes_fktp",
|
|
||||||
"Faskes FKRTL (Next Level Provider) or Individual group preferred provider" => "faskes_fkrtl",
|
|
||||||
"The Right Classes Room of BPJS Participants" => "bpjs_class",
|
|
||||||
"Name of Faskes" => "faskes_name",
|
|
||||||
"Rule_BPJSK ('Y' or 'N')" => "bpjsk",
|
|
||||||
"Agent Code / intermediary code" => "agent_code",
|
|
||||||
"Member Name" => "name",
|
|
||||||
"Address1" => "address1",
|
|
||||||
"Address2" => "address2",
|
|
||||||
"Address3" => "address3",
|
|
||||||
"Address4" => "address4",
|
|
||||||
"City" => "city",
|
|
||||||
"State" => "state",
|
|
||||||
"Post Code" => "post_code",
|
|
||||||
"Telephone – Mobile" => "telephone_mobile",
|
|
||||||
"Telephone – Res" => "telephone_res",
|
|
||||||
"Telephone – Office" => "telephone_office",
|
|
||||||
"NRIC" => "nric",
|
|
||||||
"Passport No" => "passport_number",
|
|
||||||
"Passport Country" => "passport_country",
|
|
||||||
"Email" => "email",
|
|
||||||
"Identification Code" => "identification_code",
|
|
||||||
"Date of Birth" => "date_of_birth",
|
|
||||||
"Sex" => "sex",
|
|
||||||
"Internal Use" => "internal_use",
|
|
||||||
"Plan-ID" => "plan_id",
|
|
||||||
"Employment-Status" => "employment_status",
|
|
||||||
"Internal Use" => "internal_use_1",
|
|
||||||
"Internal Use" => "internal_use_2",
|
|
||||||
"Internal Use" => "internal_use_3",
|
|
||||||
"Date Terminated" => "date_terminated",
|
|
||||||
"Pre Existing" => "pre_existing",
|
|
||||||
"BPJS ID" => "bpjs_id",
|
|
||||||
"Endorsement Date" => "endorsement_date",
|
|
||||||
"Remarks" => "remarks",
|
|
||||||
"Internal Use" => "internal_use_4",
|
|
||||||
"Member Since" => "member_since",
|
|
||||||
"Internal Use" => "internal_use_5",
|
|
||||||
"Policy In Force" => "policy_in_force",
|
|
||||||
"Member Suspended" => "member_suspended",
|
|
||||||
"Activation Date" => "activation_date",
|
|
||||||
"Internal Use" => "internal_use_6",
|
|
||||||
"StartNoClaim" => "start_no_claim",
|
|
||||||
"EndNoClaim" => "end_no_claim",
|
|
||||||
"Option Mode" => "option_mode",
|
|
||||||
];
|
|
||||||
|
|
||||||
public function employeds()
|
public function employeds()
|
||||||
{
|
{
|
||||||
return $this->hasMany(CorporateEmployee::class, 'member_id');
|
return $this->hasMany(CorporateEmployee::class, 'member_id');
|
||||||
|
|||||||
@@ -17,7 +17,8 @@
|
|||||||
"settings": {
|
"settings": {
|
||||||
"import/resolver": {
|
"import/resolver": {
|
||||||
"typescript": {
|
"typescript": {
|
||||||
"alwaysTryTypes": true
|
"alwaysTryTypes": true,
|
||||||
|
"exceptAfterSingleLine": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -262,14 +262,14 @@ export default function CorporatePlanList() {
|
|||||||
<TableCell align="left">{row.member_id}</TableCell>
|
<TableCell align="left">{row.member_id}</TableCell>
|
||||||
<TableCell align="left">{row.principal_id}</TableCell>
|
<TableCell align="left">{row.principal_id}</TableCell>
|
||||||
<TableCell align="left">{row.employeds[0]?.nik}</TableCell>
|
<TableCell align="left">{row.employeds[0]?.nik}</TableCell>
|
||||||
<TableCell align="left">{row.current_policy.policy_id}</TableCell>
|
<TableCell align="left">{row.current_policy?.policy_id}</TableCell>
|
||||||
<TableCell align="left">{row.current_policy.start}</TableCell>
|
<TableCell align="left">{row.current_policy?.start}</TableCell>
|
||||||
<TableCell align="left">{row.name}</TableCell>
|
<TableCell align="left">{row.name}</TableCell>
|
||||||
<TableCell align="left">{row.nric}</TableCell>
|
<TableCell align="left">{row.nric}</TableCell>
|
||||||
<TableCell align="left">{row.email}</TableCell>
|
<TableCell align="left">{row.email}</TableCell>
|
||||||
<TableCell align="left">{row.plan_id}</TableCell>
|
<TableCell align="left">{row.plan_id}</TableCell>
|
||||||
<TableCell align="left">{row.current_policy.start}</TableCell>
|
<TableCell align="left">{row.current_policy?.start}</TableCell>
|
||||||
<TableCell align="left">{row.current_policy.end}</TableCell>
|
<TableCell align="left">{row.current_policy?.end}</TableCell>
|
||||||
{( row.active ? (<TableCell align="right"><Button variant="outlined" color="success" size="small">Active</Button></TableCell>)
|
{( row.active ? (<TableCell align="right"><Button variant="outlined" color="success" size="small">Active</Button></TableCell>)
|
||||||
: (<TableCell align="right"><Button variant="outlined" color="error" size="small">Inactive</Button></TableCell>)
|
: (<TableCell align="right"><Button variant="outlined" color="error" size="small">Inactive</Button></TableCell>)
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user