feat(TransmittalResource): enhance search functionality across related models

Implement wildcard search on transmittal series, notes, and files to improve user experience when filtering records. Also extend search capabilities to client company and branch code fields for more comprehensive filtering.
This commit is contained in:
Jp
2026-02-12 16:12:35 +08:00
parent a77e95d2a5
commit fc672e4f4a

View File

@@ -45,16 +45,36 @@ class TransmittalResource extends Resource
->columns([
Tables\Columns\Layout\Split::make([
Tables\Columns\TextColumn::make('series')
->searchable()
->searchable(query: function (Builder $query, string $search): Builder {
$wildcardSearch = '%' . str_replace(' ', '%', $search) . '%';
return $query->where(function (Builder $query) use ($wildcardSearch) {
$query->where('series', 'like', $wildcardSearch)
->orWhereHas('notes', function (Builder $query) use ($wildcardSearch) {
$query->where('comment', 'like', $wildcardSearch);
})
->orWhereHas('files', function (Builder $query) use ($wildcardSearch) {
$query->where('description', 'like', $wildcardSearch);
});
});
})
->label('Series')
->weight(FontWeight::Bold)
->columnSpan(2),
Tables\Columns\Layout\Stack::make([
Tables\Columns\TextColumn::make('client.company')
->searchable()
->searchable(query: function (Builder $query, string $search): Builder {
return $query->whereHas('client', function (Builder $query) use ($search) {
$query->where('company', 'like', '%' . str_replace(' ', '%', $search) . '%');
});
})
->weight(FontWeight::SemiBold)->label('Client'),
Tables\Columns\TextColumn::make('branch.code')
->searchable()
->searchable(query: function (Builder $query, string $search): Builder {
return $query->whereHas('branch', function (Builder $query) use ($search) {
$query->where('code', 'like', '%' . str_replace(' ', '%', $search) . '%');
});
})
->label('Branch'),
]),
]),