diff --git a/Modules/Client/Transformers/DashboardResources.php b/Modules/Client/Transformers/DashboardResources.php new file mode 100644 index 00000000..37b7dc2e --- /dev/null +++ b/Modules/Client/Transformers/DashboardResources.php @@ -0,0 +1,37 @@ +currentPolicy->limit_balance; + $myLimitTotal = (int)$this->currentPolicy->total_premi; + + $lockBalance = (int)$this->currentPolicy->minimal_stop_service_net; + $lockPercentage = (int)$this->currentPolicy->minimal_stop_service_percentage; + + return [ + 'policy' => [ + 'myLimit' => [ + 'balance' => $myLimitBalance, + 'total' => $myLimitTotal, + 'percentage' => ($myLimitBalance / $myLimitTotal) * 100, + ], + 'lockLimit' => [ + 'balance' => $lockBalance, + 'percentage' => $lockPercentage + ] + ], + ]; + } +} diff --git a/Modules/Internal/Http/Controllers/Api/CorporateController.php b/Modules/Internal/Http/Controllers/Api/CorporateController.php index 519eb2d7..e1e0fd82 100755 --- a/Modules/Internal/Http/Controllers/Api/CorporateController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateController.php @@ -26,18 +26,17 @@ class CorporateController extends Controller public function index(Request $request) { $corporates = Corporate::query() - ->when($request->search, function ($query, $search) { - return $query->where('name', 'LIKE', '%'.$search.'%') - ->orWhere('code', 'LIKE', '%'.$search.'%'); - }) - ->with('currentPolicy', 'subCorporates') - ->withCount([ - 'employees', - 'corporatePlans', - 'corporateBenefits', - ]) - ->where('type', 'corporate') - ->paginate(10); + ->when($request->search, function ($query, $search) { + return $query->where('name', 'LIKE', '%' . $search . '%') + ->orWhere('code', 'LIKE', '%' . $search . '%'); + }) + ->with('currentPolicy', 'subCorporates') + ->withCount([ + 'employees', + 'corporateBenefits', + ]) + ->where('type', 'corporate') + ->paginate(10); return $corporates; } @@ -48,10 +47,10 @@ class CorporateController extends Controller */ public function create() { - $corporateGroups = Corporate::whereNull('parent_id')->get()->map(function($corporate) { + $corporateGroups = Corporate::whereNull('parent_id')->get()->map(function ($corporate) { return [ 'value' => $corporate->id, - 'label' => $corporate->name.' ('.$corporate->code.')', + 'label' => $corporate->name . ' (' . $corporate->code . ')', ]; }); @@ -80,7 +79,7 @@ class CorporateController extends Controller 'policy_stop_service_percentage' => 'required_with:policy_code', 'policy_stop_service_net' => 'required_with:policy_code', ]); - + try { DB::beginTransaction(); $corporate_data = $request->all(); @@ -155,7 +154,7 @@ class CorporateController extends Controller 'policy_stop_service_percentage' => 'required_with:policy_code', 'policy_stop_service_net' => 'required_with:policy_code', ]); - + try { DB::beginTransaction(); @@ -199,7 +198,8 @@ class CorporateController extends Controller // } - public function activation(Request $request, $corporate_id) { + public function activation(Request $request, $corporate_id) + { $request->validate([ 'active' => 'required' ]); @@ -223,16 +223,16 @@ class CorporateController extends Controller 'file' => 'required|file|mimes:xls,xlsx,csv,txt', ]); // dd($request->toArray()); - $file_name = now()->getPreciseTimestamp(3).'-'.$request->file('file')->getClientOriginalName(); + $file_name = now()->getPreciseTimestamp(3) . '-' . $request->file('file')->getClientOriginalName(); $file = $request->file('file')->storeAs('temp', $file_name); $corporate = Corporate::findOrFail($corporate_id); - + $import = new ImportService(); - $import->read(Storage::path('temp/'.$file_name)); - $import->write(Storage::disk('public')->path('temp/result-'.$file_name), 'xsls'); + $import->read(Storage::path('temp/' . $file_name)); + $import->write(Storage::disk('public')->path('temp/result-' . $file_name), 'xsls'); foreach ($import->sheetsIterator() as $sheetIndex => $sheet) { - if ( !in_array($sheet->getName(), ['Plan', 'Benefit']) ) { + if (!in_array($sheet->getName(), ['Plan', 'Benefit'])) { continue; } else { if ($sheetIndex == 1) { // Rename First Sheet to Writer @@ -243,9 +243,9 @@ class CorporateController extends Controller $nextWriterSheet->setName($sheet->getName()); } - if ( $sheet->getName() == 'Plan' ) { + if ($sheet->getName() == 'Plan') { $headers_map_to_table_fields = Plan::$doc_headers_to_field_map; - } else if ( $sheet->getName() == 'Benefit' ) { + } else if ($sheet->getName() == 'Benefit') { $headers_map_to_table_fields = Benefit::$doc_headers_to_field_map; } @@ -253,7 +253,6 @@ class CorporateController extends Controller $result_headers = array_keys($headers_map_to_table_fields); $result_headers = array_merge($result_headers, ['Ingest Code', 'Ingest Note']); $import->addArrayToRow($result_headers); - } $doc_headers_indexes = []; @@ -261,8 +260,8 @@ class CorporateController extends Controller if ($index == 1) { // First Row Must be Header foreach ($row->getCells() as $index => $cell) { $title = $cell->getValue(); - $title = preg_replace( "/\r|\n/", " ", $title ); - $title = preg_replace('/\xc2\xa0/', " ", $title ); + $title = preg_replace("/\r|\n/", " ", $title); + $title = preg_replace('/\xc2\xa0/', " ", $title); $title = rtrim($title); $title = ltrim($title); $doc_headers_indexes[$index] = $title; @@ -278,9 +277,9 @@ class CorporateController extends Controller try { // Process the Row Data $corporateService = new CorporateService(); - if ( $sheet->getName() == 'Plan' ) { + if ($sheet->getName() == 'Plan') { $corporateService->handlePlanRow($corporate, $row_data); - } else if ( $sheet->getName() == 'Benefit' ) { + } else if ($sheet->getName() == 'Benefit') { $corporateService->handleBenefitRow($corporate, $row_data); } @@ -289,7 +288,6 @@ class CorporateController extends Controller 'Ingest Code' => 200, 'Ingest Note' => 'Success', ]), $sheet->getName()); - } catch (ImportRowException $e) { // Write Data Validation Error to File $import->addArrayToRow(array_merge($row_data, [ @@ -308,7 +306,7 @@ class CorporateController extends Controller } } $import->reader->close(); - Storage::delete('temp/'.$file_name); + Storage::delete('temp/' . $file_name); $import->writer->close(); return [ @@ -316,8 +314,8 @@ class CorporateController extends Controller // 'total_failed_row' => count($failed_plan_data), // 'failed_row' => $failed_plan_data, 'result_file' => [ - 'url' => Storage::disk('public')->url('temp/result-'.$file_name), - 'name' => 'result-'.$file_name, + 'url' => Storage::disk('public')->url('temp/result-' . $file_name), + 'name' => 'result-' . $file_name, ] ]; } diff --git a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php index c44197ba..620f54e3 100755 --- a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php @@ -27,22 +27,22 @@ class CorporateMemberController extends Controller public function index(Request $request, $corporate_id) { $members = Member::query() - ->filter($request->all()) - // ->where('corporate_id', $corporate_id) - ->whereHas('employeds', function ($employeds) use ($corporate_id) { - $employeds->where('corporate_id', $corporate_id); - }) - ->with([ - 'employeds', - 'currentPolicy', - 'claims' => function ($claim) { - return $claim->used(); - } - ]) - ->with('currentPlan') - ->paginate() - ->appends($request->all()); - + ->filter($request->all()) + // ->where('corporate_id', $corporate_id) + ->whereHas('employeds', function ($employeds) use ($corporate_id) { + $employeds->where('corporate_id', $corporate_id); + }) + ->with([ + 'employeds', + 'currentPolicy', + // 'claims' => function ($claim) { + // return $claim->used(); + // } + ]) + ->with('currentPlan') + ->paginate() + ->appends($request->all()); + return $members; } @@ -111,17 +111,17 @@ class CorporateMemberController extends Controller { $request->validate([ 'file' => 'required|file|mimes:xls,xlsx,csv,txt', - ]); + ]); $corporate = Corporate::findOrFail($corporate_id)->load('currentPolicy'); - - $file_name = now()->getPreciseTimestamp(3).'-'.$request->file('file')->getClientOriginalName(); + + $file_name = now()->getPreciseTimestamp(3) . '-' . $request->file('file')->getClientOriginalName(); $file = $request->file('file')->storeAs('temp', $file_name); - $reader = ReaderEntityFactory::createReaderFromFile(Storage::path('temp/'.$file_name)); - $reader->open(Storage::path('temp/'.$file_name)); - + $reader = ReaderEntityFactory::createReaderFromFile(Storage::path('temp/' . $file_name)); + $reader->open(Storage::path('temp/' . $file_name)); + $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 = $this->memberEnrollmentService->doc_headers_to_field_map; @@ -139,8 +139,8 @@ class CorporateMemberController extends Controller foreach ($row->getCells() as $index => $cell) { // Clear up the string and remove all spaces $title = $cell->getValue(); - $title = preg_replace( "/\r|\n/", " ", $title ); - $title = preg_replace('/\xc2\xa0/', " ", $title ); + $title = preg_replace("/\r|\n/", " ", $title); + $title = preg_replace('/\xc2\xa0/', " ", $title); $title = rtrim($title); $title = ltrim($title); $doc_headers_indexes[$index] = $title; @@ -157,7 +157,7 @@ class CorporateMemberController extends Controller try { // dd($new_member_data); $rowResponse = $this->memberEnrollmentService->handleImportRow($corporate, $new_member_data); - + // Write Success Result to File $singleRow = WriterEntityFactory::createRow($this->memberEnrollmentService->makeResultRowWithResultFormat($rowResponse)); $writer->addRow($singleRow); @@ -182,14 +182,13 @@ class CorporateMemberController extends Controller $failed_member_data[] = ['row_number' => $index, 'error' => $e->getMessage()]; } } - } - + break; //only read first sheet } $reader->close(); $writer->close(); - Storage::delete('temp/'.$file_name); + Storage::delete('temp/' . $file_name); // throw(404); return [ @@ -197,8 +196,8 @@ class CorporateMemberController extends Controller 'total_failed_row' => count($failed_member_data), 'failed_row' => $failed_member_data, 'result_file' => [ - 'url' => Storage::disk('public')->url('temp/result-'.$file_name), - 'name' => 'result-'.$file_name, + 'url' => Storage::disk('public')->url('temp/result-' . $file_name), + 'name' => 'result-' . $file_name, ] ]; } diff --git a/Modules/Internal/Http/Controllers/Api/DivisionController.php b/Modules/Internal/Http/Controllers/Api/DivisionController.php index fd8a690b..3584abff 100755 --- a/Modules/Internal/Http/Controllers/Api/DivisionController.php +++ b/Modules/Internal/Http/Controllers/Api/DivisionController.php @@ -17,11 +17,11 @@ class DivisionController extends Controller public function index(Request $request, $corporate_id) { $benefits = CorporateDivision::query() - ->filter($request->all()) - ->where('corporate_id', $corporate_id) - ->paginate(0) - ->appends($request->all()); - + ->filter($request->all()) + ->where('corporate_id', $corporate_id) + ->paginate(0) + ->appends($request->all()); + return $benefits; } @@ -44,7 +44,6 @@ class DivisionController extends Controller $request->validate([ 'code' => [ 'required', - Rule::unique('corporate_plans')->where('corporate_id', $corporate_id) ], 'name' => 'required' ]); diff --git a/Modules/Internal/Services/MemberEnrollmentService.php b/Modules/Internal/Services/MemberEnrollmentService.php index 50a7c283..b7b7e33b 100755 --- a/Modules/Internal/Services/MemberEnrollmentService.php +++ b/Modules/Internal/Services/MemberEnrollmentService.php @@ -27,7 +27,7 @@ class MemberEnrollmentService "Halodoc Member ID" => "halodoc_member_id", "Corporate ID" => "corporate_id", "NIK" => "nik", - "Division" => "division_code", + "Division" => "division_name", "Branch Code" => "branch_code", "Bank Info" => "banks_info", "Language" => "language", @@ -89,7 +89,7 @@ class MemberEnrollmentService "Internal Use" => "internal_use_6", "StartNoClaim" => "start_no_claim", "EndNoClaim" => "end_no_claim", - "Option Mode" => "option_mode", + "Option Mode" => "option_mode", "Policy Inforce" => "policy_in_force", "Renewal activation date" => "renewal_activation_date", "Renewal Activation Date" => "renewal_activation_date", @@ -106,7 +106,7 @@ class MemberEnrollmentService "halodoc_member_id" => "Halodoc Member ID", "corporate_id" => "Corporate ID", "nik" => "NIK", - "division_code" => "Division", + "division_name" => "Division", "branch_code" => "Branch Code", "banks_info" => "Bank Info", "language" => "Language", @@ -264,7 +264,7 @@ class MemberEnrollmentService if (!empty($row['principal_id'])) { throw new ImportRowException(__('enrollment.PRINCIPAL_ID_NOT_REQUIRED'), 0, null, $row); } - + if (empty($row['corporate_id'])) { throw new ImportRowException(__('enrollment.CORPORATE_ID_REQUIRED'), 0, null, $row); } @@ -306,34 +306,38 @@ class MemberEnrollmentService throw new ImportRowException(__('enrollment.INVALID_MARITAL_STATUS'), 0, null, $row); } - if (empty($row['member_effective_date']) ) { + if (empty($row['member_effective_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EFFECTIVE_REQUIRED'), 0, null, $row); } // TODO EFFECTIVE DATE VALIDATION - if (empty($row['member_expiry_date']) ) { + if (empty($row['member_expiry_date'])) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_REQUIRED'), 0, null, $row); } // TODO EFFECTIVE DATE VALIDATION // TODO FKTP VALIDATION // TODO FKRTL VALIDATION - + if (!empty($row['marital_status']) && !in_array($row['marital_status'], ['S', 'M', 'D'])) { throw new ImportRowException(__('enrollment.INVALID_MARITAL_STATUS'), 0, null, $row); } - + if (empty($row['name'])) { throw new ImportRowException(__('enrollment.NAME_REQUIRED'), 0, null, $row); } - if (!empty($row['telephone_mobile']) - && !(substr($row['telephone_mobile'], 0, 4) == '+628' || substr($row['telephone_mobile'], 0, 3) == '628')) { + if ( + !empty($row['telephone_mobile']) + && !(substr($row['telephone_mobile'], 0, 4) == '+628' || substr($row['telephone_mobile'], 0, 3) == '628') + ) { throw new ImportRowException(__('enrollment.PHONE_INVALID'), 0, null, $row); } - - if (!empty($row['email']) - && !filter_var($row['email'], FILTER_VALIDATE_EMAIL)) { + + if ( + !empty($row['email']) + && !filter_var($row['email'], FILTER_VALIDATE_EMAIL) + ) { throw new ImportRowException(__('enrollment.EMAIL_INVALID'), 0, null, $row); } @@ -396,16 +400,16 @@ class MemberEnrollmentService switch ($row['record_mode']) { case "1": // New Member $member = Member::query() - ->where('member_id', $row['member_id']) - // ->whereHas('employeds', function ($query) use ($corporate) { - // $query->where('corporate_id', $corporate->id); - // }) - ->first(); - + ->where('member_id', $row['member_id']) + // ->whereHas('employeds', function ($query) use ($corporate) { + // $query->where('corporate_id', $corporate->id); + // }) + ->first(); + // Validate If Exist Member if ($member) { throw new ImportRowException(__('enrollment.MEMBER_UNIQUE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } else { @@ -418,7 +422,7 @@ class MemberEnrollmentService if ($memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -449,8 +453,28 @@ class MemberEnrollmentService ]); $memberPolicy->save(); - if (!empty($row['division'])) { - $division_id = CorporateDivision::where('code', $row['division_code'])->where('')->pluck('id'); + if (!empty($row['division_name'])) { + $division_id = CorporateDivision::query()->where('code', $row['division_name'])->pluck('id')->first(); + + if (empty($division_id)) { + $corporateCodeArray = explode(' ', $row['division_name']); + + if (!empty($corporateCodeArray[1])) { + $corporateCode = substr($corporateCodeArray[0], 0, 1) . substr($corporateCodeArray[1], 0, 1); + } elseif (!empty($corporateCodeArray[2])) { + $corporateCode = substr($corporateCodeArray[0], 0, 1) . substr($corporateCodeArray[1], 0, 1); + } else { + $corporateCode = substr($row['division_name'], 0, 1); + } + + $division = CorporateDivision::query()->create([ + 'corporate_id' => $corporate->id, + 'name' => $row['division_name'], + 'code' => $corporateCode, + ]); + + $division_id = $division->id; + } } $member->employeds()->create([ @@ -476,13 +500,13 @@ class MemberEnrollmentService break; case "2": // Member Information Update (Without Replacement Card) $member = Member::query() - ->where('member_id', $row['member_id']) - ->first(); - + ->where('member_id', $row['member_id']) + ->first(); + // Validate If Exist Member if (!$member) { throw new ImportRowException(__('enrollment.MEMBER_NOT_FOUND', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -496,23 +520,23 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } - + if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } - + $memberPolicy->member->fill($member_data); if (!$memberPolicy->member->isDirty()) { throw new ImportRowException(__('enrollment.MEMBER_NO_CHANGE'), 0, null, $row); } - + $memberPolicy->member->save(); DB::commit(); } catch (\Exception $e) { @@ -523,13 +547,13 @@ class MemberEnrollmentService break; case "3": // Member Deletion $member = Member::query() - ->where('member_id', $row['member_id']) - ->first(); - + ->where('member_id', $row['member_id']) + ->first(); + // Validate If Exist Member if (!$member) { throw new ImportRowException(__('enrollment.MEMBER_NOT_FOUND', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -541,21 +565,21 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } $member = $memberPolicy->member; $member->active = false; - + $member->save(); break; case "5": // Member Renewal Policy (without card) @@ -566,14 +590,14 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } - + if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -583,9 +607,10 @@ class MemberEnrollmentService 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'])) - ) { + if ( + Carbon::parse($memberPolicy->end) > Carbon::parse(strtotime($row['member_expiry_date'])) + || $memberPolicy->end > Carbon::parse(strtotime($row['member_expiry_date'])) + ) { throw new ImportRowException(__('enrollment.MEMBER_RENEWAL_STILL_ACTIVE'), 0, null, $row); } @@ -609,14 +634,14 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } - + if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -625,9 +650,10 @@ class MemberEnrollmentService 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'])) - ) { + if ( + Carbon::parse($memberPolicy->end) > Carbon::parse(strtotime($row['member_expiry_date'])) + || $memberPolicy->end > Carbon::parse(strtotime($row['member_expiry_date'])) + ) { throw new ImportRowException(__('enrollment.MEMBER_RENEWAL_STILL_ACTIVE'), 0, null, $row); } @@ -651,7 +677,7 @@ class MemberEnrollmentService // 'policy_id' => $row['policy_number'] // ]), 0, null, $row); // } - + // // Read Option Mode // $option_mode = explode('!', $row['option_mode']); // $corp_code = $option_mode[1] ?? null; @@ -677,7 +703,7 @@ class MemberEnrollmentService $member_id_old = $member_id[0] ?? null; $member_id_new = $member_id[1] ?? null; - + $memberPolicy = MemberPolicy::query() ->where('policy_id', $policy_number_old) ->where('member_id', $member_id_old) @@ -686,14 +712,14 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $member_id_old, + 'member_id' => $member_id_old, 'policy_id' => $policy_number_old ]), 0, null, $row); } - + if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $member_id_old, + 'member_id' => $member_id_old, 'policy_id' => $policy_number_old ]), 0, null, $row); } @@ -702,12 +728,12 @@ class MemberEnrollmentService if (!empty($row['principal_id'])) { throw new ImportRowException(__('enrollment.PRINCIPAL_ID_NOT_REQUIRED'), 0, null, $row); } - + if (empty($row['corporate_id'])) { throw new ImportRowException(__('enrollment.CORPORATE_ID_REQUIRED'), 0, null, $row); } } - + if ($record_type_new == 'D') { if (empty($row['principal_id'])) { throw new ImportRowException(__('enrollment.PRINCIPAL_ID_REQUIRED'), 0, null, $row); @@ -739,19 +765,19 @@ class MemberEnrollmentService // 'policy_id' => $row['policy_number'] // ]), 0, null, $row); // } - + try { DB::beginTransaction(); - - if ( !empty($record_type_new) ) { + + if (!empty($record_type_new)) { $member = $memberPolicy->member; $member->record_type = $record_type_new; $member->principal_id = $row['principal_id']; $member->save(); } - - if ( !empty($corp_code_new) ) { + + if (!empty($corp_code_new)) { $oldCorporate = Corporate::where('code', $corp_code_old)->first(); $newCorporate = Corporate::where('code', $corp_code_new)->first(); @@ -759,24 +785,26 @@ class MemberEnrollmentService throw new ImportRowException(__('enrollment.CORPORATE_NOT_FOUND'), 0, null, $row); } $corporateEmployee = CorporateEmployee::where('corporate_id', $oldCorporate->id) - ->where('member_id', $memberPolicy->member->id) - ->first(); - $newCorporateEmployee = CorporateEmployee::updateOrCreate([ - 'corporate_id' => $oldCorporate->id, - 'member_id' => $memberPolicy->member->id - ], - [ - 'corporate_id' => $newCorporate->id, - 'member_id' => $memberPolicy->member->id - ]); + ->where('member_id', $memberPolicy->member->id) + ->first(); + $newCorporateEmployee = CorporateEmployee::updateOrCreate( + [ + 'corporate_id' => $oldCorporate->id, + 'member_id' => $memberPolicy->member->id + ], + [ + 'corporate_id' => $newCorporate->id, + 'member_id' => $memberPolicy->member->id + ] + ); } - if ( !empty($policy_number_new) ) { + if (!empty($policy_number_new)) { $memberPolicy->policy_id = $policy_number_new; $memberPolicy->save(); } - if ( !empty($member_id_new) ) { + if (!empty($member_id_new)) { $memberPolicy->member_id = $member_id_new; $memberPolicy->save(); @@ -800,7 +828,7 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -808,7 +836,7 @@ class MemberEnrollmentService if (Carbon::parse(strtotime($row['member_effective_date'])) < now() || Carbon::parse(strtotime($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']))) { throw new ImportRowException(__('enrollment.MEMBER_EXPIRY_DATE_INVALID'), 0, null, $row); } @@ -828,14 +856,14 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -851,10 +879,10 @@ class MemberEnrollmentService $newMemberPolicy->save(); break; - - - // THESE MODES BELOW ARE DISABLED + + + // THESE MODES BELOW ARE DISABLED case "4": // Member Update Start and End Date throw new ImportRowException(__('MODE 4 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row); break; @@ -865,14 +893,14 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } - + if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -896,9 +924,9 @@ class MemberEnrollmentService case "8": // Member Information Update (With Replacement Card) throw new ImportRowException(__('MODE 8 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row); break; - // case "10": // No Information Available + // case "10": // No Information Available - // break; + // break; case "11": // Advance Renewal with OLD Card No. (PRINT) throw new ImportRowException(__('MODE 11 NOT HANDLED PROPERLY, TRY TO USE MODE 13'), 0, null, $row); @@ -907,9 +935,9 @@ class MemberEnrollmentService throw new ImportRowException(__('MODE 12 NOT HANDLED PROPERLY, TRY TO USE MODE 13'), 0, null, $row); break; - // case "14": // No Information Available + // case "14": // No Information Available - // break; + // break; case "15": // Lost Card / Change Card with new card number (Print) (Rarely Used) throw new ImportRowException(__('MODE 15 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row); @@ -918,10 +946,10 @@ class MemberEnrollmentService throw new ImportRowException(__('MODE 16 NOT HANDLED PROPERLY, TRY TO USE MODE 2'), 0, null, $row); break; $plan = CorporatePlan::query() - ->where('corporate_id', $corporate->id) - ->where('code', $row['plan_id']) - ->where('active', true) - ->first(); + ->where('corporate_id', $corporate->id) + ->where('code', $row['plan_id']) + ->where('active', true) + ->first(); if (!$plan) { throw new ImportRowException(__('enrollment.PLAN_NOT_FOUND'), 0, null, $row); } @@ -933,14 +961,14 @@ class MemberEnrollmentService if (!$memberPolicy) { throw new ImportRowException(__('enrollment.MEMBER_NOT_EXISTS', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } - + if ($memberPolicy->status != 'active') { throw new ImportRowException(__('enrollment.MEMBER_INACTIVE', [ - 'member_id' => $row['member_id'], + 'member_id' => $row['member_id'], 'policy_id' => $row['policy_number'] ]), 0, null, $row); } @@ -978,7 +1006,7 @@ class MemberEnrollmentService } // This returning row with format or order as it is - public function makeResultRow($row_data) + public function makeResultRow($row_data) { $cells = []; foreach ($row_data as $cellValue) { diff --git a/app/Models/Member.php b/app/Models/Member.php index 78f4a323..8d9dcd44 100755 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -63,7 +63,7 @@ class Member extends Model 'gender_code', '' ]; - + protected $hidden = [ 'created_at', 'updated_at', @@ -86,30 +86,30 @@ class Member extends Model public function corporates() { return $this - ->belongsToMany(Corporate::class, 'corporate_employees', 'corporate_id', 'member_id') - ->withPivot([ - 'branch_code', - 'divison_id', - 'nik', - 'status', - 'start', - 'end' - ]); + ->belongsToMany(Corporate::class, 'corporate_employees', 'corporate_id', 'member_id') + ->withPivot([ + 'branch_code', + 'division_id', + 'nik', + 'status', + 'start', + 'end' + ]); } public function currentCorporate() { return $this->belongsToMany(Corporate::class, 'corporate_employees', 'corporate_id', 'member_id') - // ->withPivot([ - // 'branch_code', - // 'divison_id', - // 'nik', - // 'status', - // 'start', - // 'end' - // ]) - ->where('start', '<', now()) - ->where('end', '>', now()); + // ->withPivot([ + // 'branch_code', + // 'divison_id', + // 'nik', + // 'status', + // 'start', + // 'end' + // ]) + ->where('start', '<', now()) + ->where('end', '>', now()); } public function memberPlans() @@ -126,7 +126,7 @@ class Member extends Model { return $this->hasOneThrough(Plan::class, MemberPlan::class, 'member_id', 'id', 'id', 'plan_id')->latest(); } - + public function policies() { return $this->hasMany(MemberPolicy::class, 'member_id', 'member_id'); @@ -135,10 +135,10 @@ class Member extends Model public function currentPolicy() { return $this->hasOneThrough(CorporatePolicy::class, MemberPolicy::class, 'member_id', 'code', 'member_id', 'policy_id') - ->where('corporate_policies.start', '<', now()) - ->where('corporate_policies.end', '>', now()) - ->where('member_policies.start', '<', now()) - ->where('member_policies.end', '>', now()); + ->where('corporate_policies.start', '<', now()) + ->where('corporate_policies.end', '>', now()) + ->where('member_policies.start', '<', now()) + ->where('member_policies.end', '>', now()); // return $this->hasOne(MemberPolicy::class, 'member_id', 'member_id')->where('status', 'active')->latestOfMany(); } @@ -174,13 +174,12 @@ class Member extends Model { $query->when($filters['search'] ?? false, function ($query, $search) { return $query - ->where('member_id', 'like', "%" . $search . "%") - ->orWhere('payor_id', 'like', "%" . $search . "%") - ->orWhere('name', 'like', "%" . $search . "%") - ; - // ->orWhereHas('corporatePlan', function ($query) use ($search) { - // $query->where('code', 'like', "%" . $search . "%"); - // }); + ->where('member_id', 'like', "%" . $search . "%") + ->orWhere('payor_id', 'like', "%" . $search . "%") + ->orWhere('name', 'like', "%" . $search . "%"); + // ->orWhereHas('corporatePlan', function ($query) use ($search) { + // $query->where('code', 'like', "%" . $search . "%"); + // }); }); } } diff --git a/database/migrations/2022_11_22_135948_create_claims_table.php b/database/migrations/2022_11_22_135948_create_claims_table.php index 6416783c..6a0fb4bd 100644 --- a/database/migrations/2022_11_22_135948_create_claims_table.php +++ b/database/migrations/2022_11_22_135948_create_claims_table.php @@ -22,15 +22,12 @@ return new class extends Migration $table->string('currency'); $table->foreignId('plan_id')->index(); $table->foreignId('benefit_id')->index(); - + $table->dateTime('requested_at')->nullable(); $table->unsignedBigInteger('requested_by')->nullable()->index(); - + $table->dateTime('received_at')->nullable(); $table->unsignedBigInteger('received_by')->nullable()->index(); - - $table->dateTime('approved_at')->nullable(); - $table->unsignedBigInteger('approved_by')->nullable()->index(); $table->dateTime('approved_at')->nullable(); $table->unsignedBigInteger('approved_by')->nullable()->index();