diff --git a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php index ab5e2901..5e2f3bb6 100755 --- a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php @@ -192,9 +192,12 @@ class CorporateMemberController extends Controller 'ingestion_code' => $e->getCode(), 'ingestion_status' => $e->getMessage(), ]); - $singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($new_member_data)); - $writer->addRow($singleRow); - $failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage()]; + // try { + $singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($new_member_data)); + $writer->addRow($singleRow); + // } catch (\Exception $e) { + $failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage(), 'data' => $new_member_data]; + // } } catch (\Exception $e) { // Write Server Error to File $new_member_data = array_merge($new_member_data, [ diff --git a/Modules/Internal/Services/MemberEnrollmentService.php b/Modules/Internal/Services/MemberEnrollmentService.php index bc462730..6a02eb89 100755 --- a/Modules/Internal/Services/MemberEnrollmentService.php +++ b/Modules/Internal/Services/MemberEnrollmentService.php @@ -247,6 +247,10 @@ class MemberEnrollmentService $this->member = $member; } + public function dateParser($date_from_row) { + return is_string($date_from_row) ? Carbon::parse(strtotime($date_from_row)) : Carbon::parse($date_from_row); + } + protected function validateRow($row) { if (empty($row['record_type'])) { @@ -360,7 +364,7 @@ class MemberEnrollmentService "member_id" => $row['member_id'] ?? null, "payor_id" => $row['payor_id'] ?? null, "nik" => $row['nik'] ?? null, - "birth_date" => Carbon::parse(strtotime($row['date_of_birth'])), + "birth_date" => $this->dateParser($row['date_of_birth']), "gender" => Helper::genderNormalization($row['sex']), // "language" => $row['language'] ?? null, // "race" => $row['race'] ?? null, @@ -415,7 +419,7 @@ class MemberEnrollmentService ], [ 'name' => $row['name'] ?? null, - 'birth_date' => Carbon::parse(strtotime($row['date_of_birth'])), + 'birth_date' => $this->dateParser($row['date_of_birth']), 'gender' => Helper::genderPerson($row['sex']), 'language' => $row['language'] ?? null, 'race' => $row['race'] ?? null, @@ -462,7 +466,7 @@ class MemberEnrollmentService $person = Person::create([ 'name' => $row['name'], - 'birth_date' => Carbon::parse(strtotime($row['date_of_birth'])), + 'birth_date' => $this->dateParser($row['date_of_birth']), 'gender' => Helper::genderPerson($row['sex']), 'language' => $row['language'] ?? null, 'race' => $row['race'] ?? null, @@ -474,8 +478,8 @@ class MemberEnrollmentService $memberPolicy->fill([ 'member_id' => $member->member_id, 'policy_id' => $row['policy_number'], - 'start' => Carbon::parse(strtotime($row['member_effective_date'])), - 'end' => Carbon::parse(strtotime($row['member_expiry_date'])), + 'start' => $this->dateParser($row['member_effective_date']), + 'end' => $this->dateParser($row['member_expiry_date']), 'status' => 'active' ]); $memberPolicy->save(); @@ -505,8 +509,8 @@ class MemberEnrollmentService $member->memberPlans()->create([ 'plan_id' => $plan->id, 'status' => 'active', - 'start' => Carbon::parse(strtotime($row['member_effective_date'])), - 'end' => Carbon::parse(strtotime($row['member_expiry_date'])), + 'start' => $this->dateParser($row['member_effective_date']), + 'end' => $this->dateParser($row['member_expiry_date']), ]); } DB::commit(); @@ -620,13 +624,13 @@ class MemberEnrollmentService } - if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) { + if ($this->dateParser($row['member_effective_date']) > $this->dateParser($row['member_expiry_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row); } if ( - Carbon::parse($memberPolicy->end) > Carbon::parse(strtotime($row['member_expiry_date'])) - || $memberPolicy->end > Carbon::parse(strtotime($row['member_expiry_date'])) + Carbon::parse($memberPolicy->end) > $this->dateParser($row['member_expiry_date']) + || $memberPolicy->end > $this->dateParser($row['member_expiry_date']) ) { throw new ImportRowException(__('enrollment.MEMBER_RENEWAL_STILL_ACTIVE'), 0, null, $row); } @@ -663,13 +667,13 @@ class MemberEnrollmentService ]), 0, null, $row); } - if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) { + if ($this->dateParser($row['member_effective_date']) > $this->dateParser($row['member_expiry_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row); } if ( - Carbon::parse($memberPolicy->end) > Carbon::parse(strtotime($row['member_expiry_date'])) - || $memberPolicy->end > Carbon::parse(strtotime($row['member_expiry_date'])) + Carbon::parse($memberPolicy->end) > $this->dateParser($row['member_expiry_date']) + || $memberPolicy->end > $this->dateParser($row['member_expiry_date']) ) { throw new ImportRowException(__('enrollment.MEMBER_RENEWAL_STILL_ACTIVE'), 0, null, $row); } @@ -850,11 +854,11 @@ class MemberEnrollmentService ]), 0, null, $row); } - if (Carbon::parse(strtotime($row['member_effective_date'])) < now() || Carbon::parse(strtotime($row['member_expiry_date'])) < now()) { + if ($this->dateParser($row['member_effective_date']) < now() || $this->dateParser($row['member_expiry_date']) < now()) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_MUST_BE_AFTER_TODAY'), 0, null, $row); } - if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) { + if ($this->dateParser($row['member_effective_date']) > $this->dateParser($row['member_expiry_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row); } @@ -889,8 +893,8 @@ class MemberEnrollmentService $newMemberPolicy->fill([ 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'], - 'start' => Carbon::parse(strtotime($row['member_effective_date'])), - 'end' => Carbon::parse(strtotime($row['member_expiry_date'])), + 'start' => $this->dateParser($row['member_effective_date']), + 'end' => $this->dateParser($row['member_expiry_date']), 'status' => 'active' ]); $newMemberPolicy->save(); @@ -931,7 +935,7 @@ class MemberEnrollmentService throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_NO_CHANGE'), 0, null, $row); } - if (Carbon::parse(strtotime($row['member_effective_date'])) > Carbon::parse(strtotime($row['member_expiry_date']))) { + if ($this->dateParser($row['member_effective_date']) > $this->dateParser($row['member_expiry_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row); } @@ -1016,7 +1020,7 @@ class MemberEnrollmentService $cells = []; foreach ($this->result_doc_headers as $header) { $value = $row_data[$this->doc_headers_to_field_map[$header]] ?? null; - $cells[] = WriterEntityFactory::createCell($value); + $cells[] = WriterEntityFactory::createCell(is_string($value) ? $value : 'error not string'); } return $cells; diff --git a/Modules/Internal/Transformers/CorporateServiceConfigResource.php b/Modules/Internal/Transformers/CorporateServiceConfigResource.php index 339e04db..a9d9589b 100755 --- a/Modules/Internal/Transformers/CorporateServiceConfigResource.php +++ b/Modules/Internal/Transformers/CorporateServiceConfigResource.php @@ -20,8 +20,8 @@ class CorporateServiceConfigResource extends JsonResource 'corporate_id' => $this->corporate_id, 'service_code' => $this->service_code, 'status' => $this->status, - 'name' => $this->service->name, - 'description' => $this->service->description, + 'name' => $this->service->name ?? '-', + 'description' => $this->service->description ?? '-', 'configurations' => $this->configs->pluck('value', 'name'), 'selected_specialities' => $this->corporateServiceSpecialities->where('active', true)->pluck('speciality.name', 'speciality_id'), 'exclusions' => $this->corporateServiceSpecialities->map(function ($speciality) { diff --git a/database/seeders/ServiceSeeder.php b/database/seeders/ServiceSeeder.php index b66ba331..f98f6bf2 100755 --- a/database/seeders/ServiceSeeder.php +++ b/database/seeders/ServiceSeeder.php @@ -47,6 +47,12 @@ class ServiceSeeder extends Seeder 'code' => 'OPT', 'description' => 'Optical', ], + [ + 'id' => 6, + 'name' => 'Medical Check Up', + 'code' => 'MCU', + 'description' => 'Medical Check Up', + ], ]; @@ -56,12 +62,14 @@ class ServiceSeeder extends Seeder $service = Service::updateOrCreate(['id' => $service['id']], $service); foreach ($corporates as $corporate) { - $corporateService = $corporate->corporateServices()->create([ + $corporateService = $corporate->corporateServices()->firstOrCreate([ + 'service_code' => $service->code + ],[ 'service_code' => $service->code, - 'status' => 'active' + 'status' => 'inactive' ]); - $corporateService->configs()->insert([ + $corporate_service_configs_data = [ [ 'corporate_service_id' => $corporateService->id, 'name' => 'gp_external_doctor_online', @@ -122,7 +130,14 @@ class ServiceSeeder extends Seeder 'name' => 'specialist_practitioner_fee', 'value' => false, ], - ]); + ]; + + foreach ($corporate_service_configs_data as $config) { + $corporateService->configs()->firstOrCreate([ + 'corporate_service_id' => $config['corporate_service_id'], + 'name' => $config['name'] + ], $config); + } } } }