->query(function(Builder $query, array $data): Builder {
return $query
->when(
$data['Curriculum'],
fn (Builder $query, $value) => $query->whereHas('grade.level', fn($query) => $query->where('curriculum_id', $value))
)
->when(
$data['Level'],
fn (Builder $query, $value) => $query->whereHas('grade', fn($query) => $query->where('level_id', $value))
)
->when(
$data['Grade'],
fn (Builder $query, $value) => $query->where('grade_id', $value)
);
})
->indicateUsing(function(array $data): array {
if (empty($data)) {
return null;
}
$indicators = [];
if($data['Curriculum']) {
$indicators[] = Indicator::make('Curriculum : ' . Curriculum::find($data['Curriculum'])->name)
->removeField('Curriculum');
if($data['Level']){
$indicators[] = Indicator::make('Level : ' . Level::find($data['Level'])->name)
->removeField('Level');
if($data['Grade']){
$indicators[] = Indicator::make('Grade : ' . Grade::find($data['Grade'])->name)
->removeField('Grade');
}
}
}
return $indicators;;
})
->query(function(Builder $query, array $data): Builder {
return $query
->when(
$data['Curriculum'],
fn (Builder $query, $value) => $query->whereHas('grade.level', fn($query) => $query->where('curriculum_id', $value))
)
->when(
$data['Level'],
fn (Builder $query, $value) => $query->whereHas('grade', fn($query) => $query->where('level_id', $value))
)
->when(
$data['Grade'],
fn (Builder $query, $value) => $query->where('grade_id', $value)
);
})
->indicateUsing(function(array $data): array {
if (empty($data)) {
return null;
}
$indicators = [];
if($data['Curriculum']) {
$indicators[] = Indicator::make('Curriculum : ' . Curriculum::find($data['Curriculum'])->name)
->removeField('Curriculum');
if($data['Level']){
$indicators[] = Indicator::make('Level : ' . Level::find($data['Level'])->name)
->removeField('Level');
if($data['Grade']){
$indicators[] = Indicator::make('Grade : ' . Grade::find($data['Grade'])->name)
->removeField('Grade');
}
}
}
return $indicators;;
})