diff --git a/Modules/Internal/Http/Controllers/Api/CorporateController.php b/Modules/Internal/Http/Controllers/Api/CorporateController.php index 7fee5620..b00e27e7 100644 --- a/Modules/Internal/Http/Controllers/Api/CorporateController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateController.php @@ -404,10 +404,11 @@ class CorporateController extends Controller $file_name = now()->getPreciseTimestamp(3) . '-' . $request->file('file')->getClientOriginalName(); $file = $request->file('file')->storeAs('temp', $file_name); $corporate = Corporate::with(['plans'])->findOrFail($corporate_id); - + $fileWrite = Storage::disk('public')->path('temp/result-' . $file_name); + $fileRead = Storage::path('temp/' . $file_name); $import = new ImportService(); - $import->read(Storage::path('temp/' . $file_name)); - $import->write(Storage::disk('public')->path('temp/result-' . $file_name), 'xsls'); + $import->read($fileRead); + $import->write($fileWrite, 'xsls'); foreach ($import->sheetsIterator() as $sheetIndex => $sheet) { if (!in_array($sheet->getName(), ['Plan', 'Benefit'])) { @@ -431,7 +432,8 @@ class CorporateController extends Controller $result_headers = array_keys($headers_map_to_table_fields); $result_headers = array_merge($result_headers, ['Ingest Code', 'Ingest Note']); - // dd($result_headers); + $import->read($fileRead); + $import->write($fileWrite, 'xsls'); $import->addArrayToRow($result_headers); } $doc_headers_indexes = []; @@ -460,12 +462,16 @@ class CorporateController extends Controller $corporateService->handleBenefitRow($corporate, $row_data); } // Write Success Result to File - $import->addArrayToRow(array_merge($row_data, [ - 'Ingest Code' => 200, - 'Ingest Note' => 'Success', - ]), $sheet->getName()); + $import->read($fileRead); + $import->write($fileWrite, 'xsls'); + $result_headers = array_merge($row_data, ['Ingest Code' =>200, 'Ingest Note' => 'Success']); + + $import->addArrayToRow($result_headers, $sheet->getName()); + } catch (ImportRowException $e) { // Write Data Validation Error to File + $import->read($fileRead); + $import->write($fileWrite, 'xsls'); $import->addArrayToRow(array_merge($row_data, [ 'Ingest Code' => $e->getCode(), 'Ingest Note' => $e->getMessage(), @@ -473,6 +479,8 @@ class CorporateController extends Controller } catch (\Exception $e) { // throw new \Exception($e); // Write Server Error to File + $import->read($fileRead); + $import->write($fileWrite, 'xsls'); $import->addArrayToRow(array_merge($row_data, [ 'Ingest Code' => 500, 'Ingest Note' => env('APP_DEBUG') ? $e->getMessage() : 'Server Error', diff --git a/Modules/Internal/Services/MemberEnrollmentService.php b/Modules/Internal/Services/MemberEnrollmentService.php index c61d1349..257842ba 100644 --- a/Modules/Internal/Services/MemberEnrollmentService.php +++ b/Modules/Internal/Services/MemberEnrollmentService.php @@ -335,7 +335,7 @@ class MemberEnrollmentService public function validateDate($dateString, $dateFormat = 'Ymd'){ $date = DateTime::createFromFormat($dateFormat, $dateString); - if ($date && $date->format($dateFormat) == $dateString) { + if ($date && ($date->format($dateFormat) == $dateString)) { return true; } else { return false; @@ -437,32 +437,32 @@ class MemberEnrollmentService if (empty($row['member_effective_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EFFECTIVE_REQUIRED'), 0, null, $row); } - if(!$this->validateDate($row['member_effective_date'])){ - throw new ImportRowException(__('enrollment.INVALID_DATE', [ - 'title' => $title['member_effective_date'] - ]), 0, null, $row); - } + // if(!$this->validateDate($row['member_effective_date'])){ + // throw new ImportRowException(__('enrollment.INVALID_DATE', [ + // 'title' => $title['member_effective_date'] + // ]), 0, null, $row); + // } if (empty($row['member_expiry_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_REQUIRED'), 0, null, $row); } - if(!$this->validateDate($row['member_expiry_date'])){ - throw new ImportRowException(__('enrollment.INVALID_DATE', [ - 'title' => $title['member_expiry_date'] - ]), 0, null, $row); - } + // if(!$this->validateDate($row['member_expiry_date'])){ + // throw new ImportRowException(__('enrollment.INVALID_DATE', [ + // 'title' => $title['member_expiry_date'] + // ]), 0, null, $row); + // } // TODO EFFECTIVE DATE VALIDATION // if (empty($row['activation_date'])) { // throw new ImportRowException(__('enrollment.ACTIVATION_DATE_REQUIRED'), 0, null, $row); // } - if(!empty($row['activation_date'])){ - if(!$this->validateDate($row['activation_date'])){ - throw new ImportRowException(__('enrollment.INVALID_DATE', [ - 'title' => $title['activation_date'] - ]), 0, null, $row); - } - } + // if(!empty($row['activation_date'])){ + // if(!$this->validateDate($row['activation_date'])){ + // throw new ImportRowException(__('enrollment.INVALID_DATE', [ + // 'title' => $title['activation_date'] + // ]), 0, null, $row); + // } + // } // TODO FKTP VALIDATION // TODO FKRTL VALIDATION @@ -495,22 +495,22 @@ class MemberEnrollmentService if (empty($row['date_of_birth'])) { throw new ImportRowException(__('enrollment.DATE_OF_BIRTH_REQUIRED'), 0, null, $row); } - if(!$this->validateDate($row['date_of_birth'])){ - throw new ImportRowException(__('enrollment.INVALID_DATE', [ - 'title' => $title['date_of_birth'] - ]), 0, null, $row); - } + // if(!$this->validateDate($row['date_of_birth'])){ + // throw new ImportRowException(__('enrollment.INVALID_DATE', [ + // 'title' => $title['date_of_birth'] + // ]), 0, null, $row); + // } // if (empty($row['date_terminated'])) { // throw new ImportRowException(__('enrollment.DATE_OF_TERMINATED'), 0, null, $row); // } - if (!empty($row['date_terminated'])) { - if(!$this->validateDate($row['date_terminated'])){ - throw new ImportRowException(__('enrollment.INVALID_DATE', [ - 'title' => $title['date_terminated'] - ]), 0, null, $row); - } - } + // if (!empty($row['date_terminated'])) { + // if(!$this->validateDate($row['date_terminated'])){ + // throw new ImportRowException(__('enrollment.INVALID_DATE', [ + // 'title' => $title['date_terminated'] + // ]), 0, null, $row); + // } + // } // TODO DOB FORMAT VALIDATION if (empty($row['sex'])) { @@ -705,6 +705,7 @@ class MemberEnrollmentService 'gender' => Helper::genderPerson($row['sex']), 'language' => $row['language'] ?? null, 'race' => $row['race'] ?? null, + 'phone' => $row['telephone_mobile'] ?? null ] ); $member->person_id = $person->id; @@ -749,6 +750,7 @@ class MemberEnrollmentService 'gender' => Helper::genderPerson($row['sex']), 'language' => $row['language'] ?? null, 'race' => $row['race'] ?? null, + 'phone' => $row['telephone_mobile'], ]); $member->person_id = $person->id; $member->save(); @@ -799,7 +801,7 @@ class MemberEnrollmentService } break; case "2": // Member Information Update (Without Replacement Card) - + // $this->validateRow($row); $member = Member::query() ->where('member_id', $row['member_id']) @@ -812,7 +814,27 @@ class MemberEnrollmentService 'policy_id' => $row['policy_number'] ]), 0, null, $row); } + + + $person = Person::updateOrCreate( + [ + 'id' => $member->person_id + ], + [ + 'name' => $row['name'] ?? null, + // 'birth_date' => $this->dateParser($row['date_of_birth']), + 'birth_date' => $row['date_of_birth'], + 'gender' => Helper::genderPerson($row['sex']), + 'language' => $row['language'] ?? null, + 'race' => $row['race'] ?? null, + 'phone' => $row['telephone_mobile'] + ] + ); + + $member->person_id = $person->id; + $member->save(); try { + $memberPolicy = MemberPolicy::query() ->where('policy_id', $row['policy_number']) ->where('member_id', $row['member_id']) diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index 037800f9..a5f91133 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -64,22 +64,22 @@ class ImportService{ public function addArrayToRow($array, $sheetName = null) { - // Switch to the correct Sheet Before Write - if ($sheetName) { - if ($sheetName != $this->writer->getCurrentSheet()->getName()) { - - foreach ($this->writer->getSheetIterator() as $sheet) { - if ($sheet->getName() == $sheet) { - $this->writer->setCurrentSheet($sheet); - break; + // Switch to the correct Sheet Before Write + if ($sheetName) { + $currentSheet = $this->writer->getCurrentSheet(); + if ($sheetName != $currentSheet->getName()) { + $sheets = $this->writer->getSheets(); + foreach ($sheets as $sheet) { + if ($sheet->getName() == $sheetName) { + $this->writer->setCurrentSheet($sheet); // Set the correct sheet + break; + } + } } - } } - } - - $newRow = $this->makeRow($array); - $this->writer->addRow($newRow); - - return $this; + $newRow = $this->makeRow($array); + // $this->writer->addRow($newRow); + return $this; } + } diff --git a/frontend/dashboard/src/pages/Corporates/Member/List.tsx b/frontend/dashboard/src/pages/Corporates/Member/List.tsx index da62e0ef..4374d949 100644 --- a/frontend/dashboard/src/pages/Corporates/Member/List.tsx +++ b/frontend/dashboard/src/pages/Corporates/Member/List.tsx @@ -560,6 +560,12 @@ export default function CorporatePlanList({handleSubmitSuccess}) { : {row.email ?? '-'} + + Phone + + + : {row.person?.phone ?? '-'} +