From 0dc10587a86383ad649a2cecc0869c1f75f30847 Mon Sep 17 00:00:00 2001 From: Tb Fajri Date: Wed, 15 Nov 2023 14:18:05 +0700 Subject: [PATCH] cek all spesialis --- .../Http/Controllers/Api/ClaimController.php | 1 + .../Api/CorporateServiceController.php | 106 +++++++++++++++++- Modules/Internal/Routes/api.php | 1 + .../src/pages/Corporates/Services/Create.tsx | 59 +++++++++- 4 files changed, 156 insertions(+), 11 deletions(-) diff --git a/Modules/Internal/Http/Controllers/Api/ClaimController.php b/Modules/Internal/Http/Controllers/Api/ClaimController.php index 200d50a8..4ba1e712 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimController.php @@ -756,6 +756,7 @@ class ClaimController extends Controller ->leftJoin('corporate_benefits','corporate_benefits.plan_id', '=', 'member_plans.plan_id') ->leftJoin('benefits', 'benefits.id', '=', 'corporate_benefits.benefit_id') ->where('member_plans.member_id', '=', $data_claim_requests->member_id) + ->where('member_plans.plan_id', '=', $plan_id->plan_id) ->select('benefits.code', 'benefits.description', 'benefits.id') ->get(); $results['benefit_name'] = $benefit_name; diff --git a/Modules/Internal/Http/Controllers/Api/CorporateServiceController.php b/Modules/Internal/Http/Controllers/Api/CorporateServiceController.php index bffaca9e..556bcf5c 100644 --- a/Modules/Internal/Http/Controllers/Api/CorporateServiceController.php +++ b/Modules/Internal/Http/Controllers/Api/CorporateServiceController.php @@ -154,8 +154,6 @@ class CorporateServiceController extends Controller public function corporateServiceSpecialityUpdate(Request $request, $corporate_id, $service_code) { - - // return response()->json([$request->checked, $request->value, $request->speciality_id]); $corporateService = CorporateService::query() @@ -163,7 +161,6 @@ class CorporateServiceController extends Controller ->where('service_code', $service_code) ->first(); - $corporateServiceSpeciality = CorporateServiceSpeciality::updateOrCreate([ 'corporate_service_id' => $corporateService->id, 'speciality_id' => $request->speciality_id, @@ -193,6 +190,105 @@ class CorporateServiceController extends Controller return response()->json($selected_specialities); } + public function corporateServiceSpecialityAllUpdate(Request $request, $corporate_id, $service_code) + { + // return response()->json([$request->checked, $request->value, $request->speciality_id]); + + $corporateService = CorporateService::query() + ->where('corporate_id', $corporate_id) + ->where('service_code', $service_code) + ->first(); + + $specialities = Speciality::get()->toArray(); + + if ($specialities){ + foreach($specialities as $s){ + $corporateServiceSpeciality = CorporateServiceSpeciality::updateOrCreate([ + 'corporate_service_id' => $corporateService->id, + 'speciality_id' => $s['id'], + ], [ + 'corporate_service_id' => $corporateService->id, + 'speciality_id' => $s['id'], + 'active' => $request->active + ]); + + $corporateServiceSpeciality = CorporateServiceSpeciality::updateOrCreate([ + 'corporate_service_id' => $corporateService->id, + 'speciality_id' => $s['id'], + ], [ + 'corporate_service_id' => $corporateService->id, + 'speciality_id' => $s['id'], + 'active' => $request->active + ]); + + $corporateServiceSpecialityRule = CorporateServiceSpeciality::where('corporate_service_id', $corporateService->id) + ->where('speciality_id', $s['id']) + ->with('exclusions.rules') + ->first(); + + // Exclusion Rules + if (empty($corporateServiceSpecialityRule)) { + $corporateServiceSpecialityRule = CorporateServiceSpeciality::create([ + 'corporate_service_id' => $corporateService->id, + 'speciality_id' => $s['id'], + 'active' => false, + ]); + + $corporateServiceSpecialityRule->exclusions()->updateOrCreate([ + 'corporate_id' => $corporate_id, + 'service_code' => $service_code, + ], [ + 'corporate_id' => $corporate_id, + 'service_code' => $service_code, + 'type' => 'speciality', + ]); + } + + $exclusion = $corporateServiceSpecialityRule->exclusions()->where('corporate_id', $corporate_id)->where('service_code', $service_code)->first(); + + $exclusion_rule = $exclusion->rules()->updateOrCreate([ + 'exclusion_id' => $exclusion->id, + 'name' => 'msc', + ], [ + 'name' => 'msc', + 'values' => $request->active ? 'm,s,c' : '', + ]); + + $exclusion_rule = $exclusion->rules()->updateOrCreate([ + 'exclusion_id' => $exclusion->id, + 'name' => 'gender', + ], [ + 'name' => 'gender', + 'values' => $request->active ? 'male,female' : '', + ]); + } + + } + + $exclusion = $corporateServiceSpeciality->exclusions()->updateOrCreate([ + 'corporate_id' => $corporate_id, + 'service_code' => $service_code, + ], [ + 'corporate_id' => $corporate_id, + 'service_code' => $service_code, + 'type' => 'speciality', + ]); + + $selected_specialities = CorporateServiceSpeciality::query() + ->where('corporate_service_id', $corporateService->id) + ->where('active', true) + ->with('speciality') + ->get() + ->pluck('speciality.name', 'speciality.id'); + + // return response()->json($selected_specialities); + return response()->json([ + 'selected_specialities' => $selected_specialities, + 'service' => CorporateServiceConfigResource::make($corporateService), + ]); + } + + public function storeExclusion(Request $request, $corporate_id, $service_code) { @@ -227,12 +323,10 @@ class CorporateServiceController extends Controller if ($request->type == 'msc') { - $value_input = $request->value; $current_msc = $exclusion->rules()->where('name', 'msc')->first()->values ?? null; if (!empty($current_msc)) { - $values = ""; if ($request->value == 'm' && $request->checked == "1") { $values = $current_msc . "," . $value_input; @@ -438,4 +532,6 @@ class CorporateServiceController extends Controller 'service' => CorporateServiceConfigResource::make($corporateService), ]); } + + } diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php index 39c74d75..b723b07e 100644 --- a/Modules/Internal/Routes/api.php +++ b/Modules/Internal/Routes/api.php @@ -134,6 +134,7 @@ Route::prefix('internal')->group(function () { Route::get('corporates/{corporate_id}/services/{service_code}', [CorporateServiceController::class, 'corporateServiceIndex']); Route::put('corporates/{corporate_id}/services/{service_code}', [CorporateServiceController::class, 'corporateServiceUpdate']); Route::post('corporates/{corporate_id}/services/{service_code}/specialities', [CorporateServiceController::class, 'corporateServiceSpecialityUpdate']); + Route::post('corporates/{corporate_id}/services/{service_code}/specialities-all', [CorporateServiceController::class, 'corporateServiceSpecialityAllUpdate']); Route::post('corporates/{corporate_id}/services/{service_code}/specialities/exclusion', [CorporateServiceController::class, 'storeExclusion']); Route::get('corporates/{corporate_id}/formulariums', [CorporateFormulariumController::class, 'index']); diff --git a/frontend/dashboard/src/pages/Corporates/Services/Create.tsx b/frontend/dashboard/src/pages/Corporates/Services/Create.tsx index 57506a7c..1670a1da 100644 --- a/frontend/dashboard/src/pages/Corporates/Services/Create.tsx +++ b/frontend/dashboard/src/pages/Corporates/Services/Create.tsx @@ -230,9 +230,46 @@ export default function Divisions() { } }; + const handleToggleSpecialityAll = ( + event: ChangeEvent, + service: any, + specialityAll: boolean + ) => { + console.log('Changing Service ', service, 'and', specialityAll); + try { + axios + .post(`/corporates/${corporate_id}/services/${service_code}/specialities-all`, { + active: specialityAll, + }) + .then((res) => { + setService({ + ...service, + selected_specialities: res.data?.selected_specialities, + exclusions: res.data?.service?.exclusions, + }); + // let newConfigurations = service.configurations + // newConfigurations[res.data.name] = res.data.value == true + + // setService({ + // ...service, + // configurations: { ...newConfigurations } + // }) + enqueueSnackbar('Speciality Updated', { + variant: 'success', + }); + }); + } catch (error) { + console.log(error); + enqueueSnackbar('Speciality Update Failed', { + variant: 'error', + }); + } + }; + const [minAge, setMinAge] = useState(''); const [maxAge, setMaxAge] = useState(''); const [valuePlan, setValuePlan] = useState([]); + const [checkAll, setCheckAll] = useState(false); const [exclusion, setExclusion] = useState([ { @@ -263,6 +300,11 @@ export default function Divisions() { } }; + const handleCheckAll = (event, checkAll) => { + setCheckAll(!checkAll); // Membalik nilai checkAll saat checkbox di klik + handleToggleSpecialityAll(event, service, !checkAll) + }; + // const handleSubmit = (event: any, service: any, row: any) => { // const allData = exclusion.find((item: any) => item.speciality_id === row.id); @@ -494,7 +536,7 @@ export default function Divisions() { { handleConfigChange(event, service); }} @@ -662,7 +704,7 @@ export default function Divisions() { alignItems="center" > - Specialities + Specialities Exclusion