bugs checked, exclusin age, masih ada bugs value
This commit is contained in:
@@ -12,6 +12,7 @@ use Illuminate\Contracts\Support\Renderable;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Modules\Internal\Transformers\CorporateServiceConfigResource;
|
||||
use Termwind\Components\Dd;
|
||||
|
||||
class CorporateServiceController extends Controller
|
||||
{
|
||||
@@ -98,7 +99,19 @@ class CorporateServiceController extends Controller
|
||||
|
||||
public function corporateServiceIndex($corporate_id, $service_code)
|
||||
{
|
||||
$corporate = Corporate::findOrFail($corporate_id);
|
||||
$corporate = Corporate::findOrFail($corporate_id)->with(['plans'])->first();
|
||||
$plans = $corporate['plans']->map(function ($plan) {
|
||||
return [
|
||||
'id' => $plan['id'],
|
||||
'code' => $plan['code'],
|
||||
'corporate_id' => $plan['corporate_id'],
|
||||
'corporate_plan_id' => $plan['corporate_plan_id'],
|
||||
];
|
||||
});
|
||||
|
||||
unset($corporate['plans']);
|
||||
$corporate['plans'] = $plans;
|
||||
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->where('service_code', $service_code)
|
||||
@@ -111,7 +124,6 @@ class CorporateServiceController extends Controller
|
||||
'specialities.exclusions.rules'
|
||||
])
|
||||
->first();
|
||||
|
||||
// $service = CorporateServiceConfigResource::make($corporateService);
|
||||
$specialities = Speciality::get();
|
||||
|
||||
@@ -144,7 +156,7 @@ class CorporateServiceController extends Controller
|
||||
{
|
||||
|
||||
|
||||
// return response()->json([$request->msc, $request->name, $request->speciality_id]);
|
||||
// return response()->json([$request->checked, $request->value, $request->speciality_id]);
|
||||
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
@@ -191,53 +203,164 @@ class CorporateServiceController extends Controller
|
||||
|
||||
$corporateServiceSpeciality = CorporateServiceSpeciality::where('corporate_service_id', $corporateService->id)
|
||||
->where('speciality_id', $request->speciality_id)
|
||||
->with('exclusions.rules')
|
||||
->first();
|
||||
|
||||
// return ([$corporateServiceSpeciality, $request->msc, $request->name, $request->speciality_id, $request->type]);
|
||||
|
||||
$exclusion = $corporateServiceSpeciality->exclusions()->updateOrCreate([
|
||||
'corporate_id' => $corporate_id,
|
||||
'service_code' => $service_code,
|
||||
], [
|
||||
'corporate_id' => $corporate_id,
|
||||
'service_code' => $service_code,
|
||||
'type' => 'speciality',
|
||||
]);
|
||||
|
||||
$exclusion = $corporateServiceSpeciality->exclusions()->where('corporate_id', $corporate_id)->where('service_code', $service_code)->first();
|
||||
// dd($exclusion);
|
||||
// ->updateOrCreate([
|
||||
// 'corporate_id' => $corporate_id,
|
||||
// 'service_code' => $service_code,
|
||||
// ], [
|
||||
// 'corporate_id' => $corporate_id,
|
||||
// 'service_code' => $service_code,
|
||||
// 'type' => 'speciality',
|
||||
// ]);
|
||||
|
||||
if ($request->type == 'msc') {
|
||||
if ($request->name == 'member' && $request->msc == "1") {
|
||||
$m = "m";
|
||||
|
||||
$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;
|
||||
}
|
||||
|
||||
if ($request->value == 's' && $request->checked == "1") {
|
||||
$values = $current_msc . "," . $value_input;
|
||||
}
|
||||
|
||||
if ($request->value == 'c' && $request->checked == "1") {
|
||||
$values = $current_msc . "," . $value_input;
|
||||
}
|
||||
|
||||
if ($request->value == 'm' && $request->checked == "0") {
|
||||
$values = str_replace($value_input, "", $current_msc);
|
||||
$values = str_replace(",,", ",", $values);
|
||||
$values = trim($values, ",");
|
||||
}
|
||||
|
||||
if ($request->value == 's' && $request->checked == "0") {
|
||||
$values = str_replace($value_input, "", $current_msc);
|
||||
$values = str_replace(",,", ",", $values);
|
||||
$values = trim($values, ",");
|
||||
}
|
||||
|
||||
if ($request->value == 'c' && $request->checked == "0") {
|
||||
$values = str_replace($value_input, "", $current_msc);
|
||||
$values = str_replace(",,", ",", $values);
|
||||
$values = trim($values, ",");
|
||||
}
|
||||
|
||||
$exclusion_rule = $exclusion->rules()->updateOrCreate([
|
||||
'exclusion_id' => $exclusion->id,
|
||||
'name' => 'msc',
|
||||
], [
|
||||
'name' => 'msc',
|
||||
'values' => $values,
|
||||
]);
|
||||
} else {
|
||||
$m = "";
|
||||
}
|
||||
if ($request->value == 'm' && $request->checked == "1") {
|
||||
$values = $value_input;
|
||||
}
|
||||
|
||||
if ($request->name == 'spouse' && $request->msc == "1") {
|
||||
$s = "s";
|
||||
if ($request->value == 's' && $request->checked == "1") {
|
||||
$values = $value_input;
|
||||
}
|
||||
|
||||
if ($request->value == 'c' && $request->checked == "1") {
|
||||
$values = $value_input;
|
||||
}
|
||||
|
||||
$exclusion_rule = $exclusion->rules()->updateOrCreate([
|
||||
'exclusion_id' => $exclusion->id,
|
||||
'name' => 'msc',
|
||||
], [
|
||||
'name' => 'msc',
|
||||
'values' => $values,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->type == 'gender') {
|
||||
$value_input = $request->value;
|
||||
$current_gender = $exclusion->rules()->where('name', 'gender')->first()->values ?? null;
|
||||
|
||||
if (!empty($current_gender)) {
|
||||
$values = "";
|
||||
if ($request->value == 'male' && $request->checked == "1") {
|
||||
$values = $current_gender . "," . $value_input;
|
||||
}
|
||||
|
||||
if ($request->value == 'female' && $request->checked == "1") {
|
||||
$values = $current_gender . "," . $value_input;
|
||||
}
|
||||
|
||||
if ($request->value == 'male' && $request->checked == "0") {
|
||||
if (substr($current_gender, 0, 4) == "male") {
|
||||
$values = str_replace($value_input, "", $value_input) . substr($current_gender, 5, 10);
|
||||
} else {
|
||||
$values = str_replace($value_input, "", $value_input) . substr($current_gender, 0, 6);
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->value == 'female' && $request->checked == "0") {
|
||||
$values = str_replace($value_input, "", $current_gender);
|
||||
$values = str_replace(",,", ",", $values);
|
||||
$values = trim($values, ",");
|
||||
}
|
||||
|
||||
$exclusion_rule = $exclusion->rules()->updateOrCreate([
|
||||
'exclusion_id' => $exclusion->id,
|
||||
'name' => 'gender',
|
||||
], [
|
||||
'name' => 'gender',
|
||||
'values' => $values,
|
||||
]);
|
||||
} else {
|
||||
$s = "";
|
||||
if ($request->value == 'male' && $request->checked == "1") {
|
||||
$values = $value_input;
|
||||
}
|
||||
|
||||
if ($request->value == 'female' && $request->checked == "1") {
|
||||
$values = $value_input;
|
||||
}
|
||||
|
||||
$exclusion_rule = $exclusion->rules()->updateOrCreate([
|
||||
'exclusion_id' => $exclusion->id,
|
||||
'name' => 'gender',
|
||||
], [
|
||||
'name' => 'gender',
|
||||
'values' => $values,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
if ($request->name == 'child' && $request->msc == "1") {
|
||||
$c = "c";
|
||||
} else {
|
||||
$c = "";
|
||||
}
|
||||
|
||||
$values = $m . $s . $c;
|
||||
|
||||
|
||||
|
||||
|
||||
if ($request->type == "min_age") {
|
||||
$exclusion_rule = $exclusion->rules()->updateOrCreate([
|
||||
'exclusion_id' => $exclusion->id,
|
||||
'name' => 'msc',
|
||||
'name' => 'min_age',
|
||||
], [
|
||||
'name' => 'msc',
|
||||
'values' => $values,
|
||||
'name' => 'min_age',
|
||||
'values' => $request->value,
|
||||
]);
|
||||
}
|
||||
|
||||
if ($request->type == "max_age") {
|
||||
$exclusion_rule = $exclusion->rules()->updateOrCreate([
|
||||
'exclusion_id' => $exclusion->id,
|
||||
'name' => 'max_age',
|
||||
], [
|
||||
'name' => 'max_age',
|
||||
'values' => $request->value,
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$selected_specialities = CorporateServiceSpeciality::query()
|
||||
->where('corporate_service_id', $corporateService->id)
|
||||
->where('active', true)
|
||||
@@ -245,6 +368,22 @@ class CorporateServiceController extends Controller
|
||||
->get()
|
||||
->pluck('speciality.name', 'speciality.id');
|
||||
|
||||
return response()->json($selected_specialities);
|
||||
$corporateService = CorporateService::query()
|
||||
->where('corporate_id', $corporate_id)
|
||||
->where('service_code', $service_code)
|
||||
->with([
|
||||
'configs', 'service',
|
||||
'specialities' => function ($speciality) {
|
||||
$speciality->where('active', true);
|
||||
},
|
||||
'specialities.speciality',
|
||||
'specialities.exclusions.rules'
|
||||
])
|
||||
->first();
|
||||
|
||||
return response()->json([
|
||||
'selected_specialities' => $selected_specialities,
|
||||
'service' => CorporateServiceConfigResource::make($corporateService),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,21 +27,21 @@ class CorporateServiceConfigResource extends JsonResource
|
||||
'exclusions' => $this->specialities->map(function ($speciality) {
|
||||
return [
|
||||
'speciality_id' => $speciality->speciality_id,
|
||||
'rules' => $speciality->exclusions->first()->rules->map(
|
||||
function ($rule) {
|
||||
return [
|
||||
'name' => $rule->name,
|
||||
'value' => explode(',', $rule->values)
|
||||
];
|
||||
}
|
||||
),
|
||||
// 'rules' => $speciality->exclusions->first()->rules->map(
|
||||
// function ($rule) {
|
||||
// return [
|
||||
// 'name' => $rule->name,
|
||||
// 'value' => explode(',', $rule->values)
|
||||
// ];
|
||||
// }
|
||||
// ),
|
||||
|
||||
];
|
||||
}),
|
||||
];
|
||||
|
||||
$list_msc = $this->specialities->map(function ($speciality) {
|
||||
return explode(',', $speciality->exclusions->first()->rules->where('name', 'msc')->first()->values);
|
||||
return explode(',', $speciality->exclusions->first()->rules->where('name', 'msc')->first()->values ?? '');
|
||||
})->map(function ($item) {
|
||||
return [
|
||||
'm' => in_array('m', $item),
|
||||
@@ -49,16 +49,26 @@ class CorporateServiceConfigResource extends JsonResource
|
||||
'c' => in_array('c', $item),
|
||||
];
|
||||
});
|
||||
// $msc = $cek->map(function ($item) {
|
||||
// return [
|
||||
// 'name' => $item,
|
||||
// 'value' => true
|
||||
// ];
|
||||
// });
|
||||
|
||||
$data['exclusions'] = $data['exclusions']->map(function ($item, $key) use ($list_msc) {
|
||||
$list_gender = $this->specialities->map(function ($speciality) {
|
||||
// dd($speciality->exclusions->first()->rules);
|
||||
return explode(',', $speciality->exclusions->first()->rules->where('name', 'gender')->first()->values ?? '');
|
||||
})->map(function ($item) {
|
||||
|
||||
return [
|
||||
'male' => in_array('male', $item),
|
||||
'female' => in_array('female', $item),
|
||||
];
|
||||
});
|
||||
|
||||
$min_age = $this->specialities->map(function ($speciality) {
|
||||
return $speciality->exclusions->first()->rules->where('name', 'min_age')->first()->values ?? '';
|
||||
});
|
||||
|
||||
$data['exclusions'] = $data['exclusions']->map(function ($item, $key) use ($list_msc, $list_gender, $min_age) {
|
||||
$item['msc'] = $list_msc[$key];
|
||||
$item['gender'] = $list_gender[$key];
|
||||
$item['min_age'] = $min_age[$key];
|
||||
return $item;
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import * as Yup from 'yup';
|
||||
import { yupResolver } from '@hookform/resolvers/yup';
|
||||
import {
|
||||
Autocomplete,
|
||||
Box,
|
||||
Card,
|
||||
Checkbox,
|
||||
@@ -49,16 +50,23 @@ export default function Divisions() {
|
||||
});
|
||||
|
||||
const [specialities, setSpecialities] = useState([]);
|
||||
const [plans, setPlans] = useState([]);
|
||||
|
||||
// console.log('specialities', specialities);
|
||||
|
||||
useEffect(() => {
|
||||
axios.get('/corporates/' + corporate_id + '/services/' + service_code).then((res) => {
|
||||
setService(res.data.service);
|
||||
setPlans(
|
||||
res.data.corporate.plans.map((item: any) => ({
|
||||
value: item.code,
|
||||
label: item.code,
|
||||
}))
|
||||
);
|
||||
setSpecialities(res.data.specialities);
|
||||
setExclusion(res.data.service?.exclusions);
|
||||
});
|
||||
}, []);
|
||||
}, [corporate_id, service_code]);
|
||||
|
||||
const handleConfigChange = (event: ChangeEvent<HTMLInputElement>, service: any) => {
|
||||
axios
|
||||
@@ -98,30 +106,26 @@ export default function Divisions() {
|
||||
event: ChangeEvent<HTMLInputElement>,
|
||||
service: any,
|
||||
speciality: any,
|
||||
name: string,
|
||||
value: string,
|
||||
type: string
|
||||
) => {
|
||||
console.log(event.target.checked, service, speciality, name, type);
|
||||
console.log(event.target.checked, service, speciality, value, type);
|
||||
|
||||
axios
|
||||
.post(`/corporates/${corporate_id}/services/${service_code}/specialities/exclusion`, {
|
||||
// service_code: service.service_code,
|
||||
speciality_id: speciality.id,
|
||||
msc: event.target.checked ? '1' : '0',
|
||||
name: name,
|
||||
checked: event.target.checked ? '1' : '0',
|
||||
value: value,
|
||||
type: type,
|
||||
})
|
||||
.then((res) => {
|
||||
console.log('update', res.data);
|
||||
setService({
|
||||
...service,
|
||||
selected_specialities: res.data,
|
||||
selected_specialities: res.data?.selected_specialities,
|
||||
exclusions: res.data?.service?.exclusions,
|
||||
});
|
||||
setExclusion({
|
||||
...exclusion,
|
||||
[event.target.name]: event.target.checked,
|
||||
});
|
||||
// let newConfigurations = service.configurations
|
||||
// newConfigurations[res.data.name] = res.data.value == true
|
||||
});
|
||||
};
|
||||
|
||||
@@ -188,6 +192,33 @@ export default function Divisions() {
|
||||
},
|
||||
];
|
||||
|
||||
const [minAge, setMinAge] = useState('');
|
||||
const [maxAge, setMaxAge] = useState('');
|
||||
|
||||
const handleMinAge = (event: ChangeEvent<HTMLInputElement>) => {
|
||||
setMinAge(event.target.value);
|
||||
};
|
||||
|
||||
const handleMaxAge = (event: ChangeEvent<HTMLInputElement>) => {
|
||||
setMaxAge(event.target.value);
|
||||
};
|
||||
|
||||
const getMinAge = (service: any, speciality: any) => {
|
||||
let minAge = '';
|
||||
if (service.exclusions) {
|
||||
service.exclusions.map((exclusion: any) => {
|
||||
if (exclusion.speciality_id == speciality.id) {
|
||||
minAge = exclusion.min_age;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return minAge;
|
||||
};
|
||||
|
||||
console.log('minAge', minAge);
|
||||
console.log('maxAge', maxAge);
|
||||
|
||||
console.log('Service _exclusions', service.exclusions);
|
||||
return (
|
||||
<Page title="Create Benefit">
|
||||
@@ -405,7 +436,7 @@ export default function Divisions() {
|
||||
Specialities
|
||||
</Typography>
|
||||
<TableContainer component={Paper}>
|
||||
<Table sx={{ minWidth: 650 }} aria-label="simple table">
|
||||
<Table aria-label="simple table">
|
||||
<TableHead>
|
||||
<TableRow>
|
||||
<TableCell>Covered</TableCell>
|
||||
@@ -465,15 +496,8 @@ export default function Divisions() {
|
||||
item.speciality_id == row.id && item.msc?.m == '1'
|
||||
)}
|
||||
onChange={(event) => {
|
||||
handleConfigExclusion(
|
||||
event,
|
||||
service,
|
||||
row,
|
||||
'member',
|
||||
'msc'
|
||||
);
|
||||
handleConfigExclusion(event, service, row, 'm', 'msc');
|
||||
}}
|
||||
name="member"
|
||||
/>
|
||||
}
|
||||
label="Member"
|
||||
@@ -486,15 +510,8 @@ export default function Divisions() {
|
||||
item.speciality_id == row.id && item.msc?.s == '1'
|
||||
)}
|
||||
onChange={(event) => {
|
||||
handleConfigExclusion(
|
||||
event,
|
||||
service,
|
||||
row,
|
||||
'spouse',
|
||||
'msc'
|
||||
);
|
||||
handleConfigExclusion(event, service, row, 's', 'msc');
|
||||
}}
|
||||
name="spouse"
|
||||
/>
|
||||
}
|
||||
label="Spouse"
|
||||
@@ -507,15 +524,8 @@ export default function Divisions() {
|
||||
item.speciality_id == row.id && item.msc?.c == '1'
|
||||
)}
|
||||
onChange={(event) => {
|
||||
handleConfigExclusion(
|
||||
event,
|
||||
service,
|
||||
row,
|
||||
'child',
|
||||
'msc'
|
||||
);
|
||||
handleConfigExclusion(event, service, row, 'c', 'msc');
|
||||
}}
|
||||
name="child"
|
||||
/>
|
||||
}
|
||||
label="Child"
|
||||
@@ -527,13 +537,19 @@ export default function Divisions() {
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Checkbox
|
||||
checked={
|
||||
service?.configurations?.sp_external_doctor_online == '1'
|
||||
}
|
||||
checked={service.exclusions.find(
|
||||
(item) =>
|
||||
item.speciality_id == row.id && item.gender?.male == '1'
|
||||
)}
|
||||
onChange={(event) => {
|
||||
handleConfigChange(event, service);
|
||||
handleConfigExclusion(
|
||||
event,
|
||||
service,
|
||||
row,
|
||||
'male',
|
||||
'gender'
|
||||
);
|
||||
}}
|
||||
name="sp_external_doctor_online"
|
||||
/>
|
||||
}
|
||||
label="Male"
|
||||
@@ -541,24 +557,71 @@ export default function Divisions() {
|
||||
<FormControlLabel
|
||||
control={
|
||||
<Checkbox
|
||||
checked={
|
||||
service?.configurations?.sp_external_doctor_online == '1'
|
||||
}
|
||||
checked={service.exclusions.find(
|
||||
(item) =>
|
||||
item.speciality_id == row.id &&
|
||||
item.gender?.female == '1'
|
||||
)}
|
||||
onChange={(event) => {
|
||||
handleConfigChange(event, service);
|
||||
handleConfigExclusion(
|
||||
event,
|
||||
service,
|
||||
row,
|
||||
'female',
|
||||
'gender'
|
||||
);
|
||||
}}
|
||||
name="sp_external_doctor_online"
|
||||
/>
|
||||
}
|
||||
label="Female"
|
||||
/>
|
||||
</Stack>
|
||||
</TableCell>
|
||||
|
||||
<TableCell align="center">
|
||||
<TextField id="outlined-number" type="number" />
|
||||
<TextField
|
||||
id="outlined-number"
|
||||
type="number"
|
||||
// value={
|
||||
// service.exclusions.find((item) => item.speciality_id == row.id)
|
||||
// ?.min_age
|
||||
// }
|
||||
|
||||
onChange={(event) => {
|
||||
handleMinAge(event);
|
||||
}}
|
||||
onKeyDown={(event) => {
|
||||
if (event.key === 'Enter') {
|
||||
handleConfigExclusion(event, service, row, minAge, 'min_age');
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell align="center">
|
||||
<TextField id="outlined-number" type="number" />
|
||||
<TextField
|
||||
id="outlined-number"
|
||||
type="number"
|
||||
onChange={(event) => {
|
||||
handleMaxAge(event);
|
||||
}}
|
||||
onKeyDown={(event) => {
|
||||
if (event.key === 'Enter') {
|
||||
handleConfigExclusion(event, service, row, maxAge, 'max_age');
|
||||
}
|
||||
}}
|
||||
/>
|
||||
</TableCell>
|
||||
<TableCell align="center">
|
||||
<Autocomplete
|
||||
id="combo-box-demo"
|
||||
options={plans}
|
||||
multiple
|
||||
getOptionLabel={(option) => option.label}
|
||||
style={{ width: 200 }}
|
||||
renderInput={(params) => (
|
||||
<TextField {...params} label="Plan" variant="outlined" />
|
||||
)}
|
||||
/>
|
||||
</TableCell>
|
||||
</TableRow>
|
||||
))}
|
||||
|
||||
Reference in New Issue
Block a user