refactor: Streamline query modifications for cooperation-related resources by consolidating role-based filtering into getEloquentQuery methods.
This commit is contained in:
parent
0caf03e03f
commit
dd3acffb4d
@ -65,20 +65,7 @@ public static function form(Schema $schema): Schema
|
||||
|
||||
public static function table(Table $table): Table
|
||||
{
|
||||
return CooperationsTable::configure($table)
|
||||
->modifyQueryUsing(function (Builder $query): Builder {
|
||||
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) {
|
||||
$query->whereHas('cooperationMedia', function (Builder $subQuery): void {
|
||||
$subQuery->whereHas('partnerMedia', function (Builder $mediaQuery): void {
|
||||
$mediaQuery->whereHas('company', function (Builder $companyQuery): void {
|
||||
$companyQuery->where('user_id', auth()->id());
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return $query;
|
||||
});
|
||||
return CooperationsTable::configure($table);
|
||||
}
|
||||
|
||||
public static function infolist(Schema $schema): Schema
|
||||
@ -163,6 +150,20 @@ public static function getRelations(): array
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $query): void {
|
||||
$query->whereHas('cooperationMedia', function (Builder $subQuery): void {
|
||||
$subQuery->whereHas('partnerMedia', function (Builder $mediaQuery): void {
|
||||
$mediaQuery->whereHas('company', function (Builder $companyQuery): void {
|
||||
$companyQuery->where('user_id', auth()->id());
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
{
|
||||
return [
|
||||
|
||||
@ -10,6 +10,7 @@
|
||||
use Filament\Tables\Columns\ImageColumn;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CooperationPaymentRelationManager extends RelationManager
|
||||
@ -62,13 +63,14 @@ public function table(Table $table): Table
|
||||
->recordActions([])
|
||||
->emptyStateIcon(Heroicon::CreditCard)
|
||||
->emptyStateDescription('Belum ada data pembayaran.')
|
||||
->defaultSort('created_at', 'desc')
|
||||
->modifyQueryUsing(function ($query) {
|
||||
$user = auth()->user();
|
||||
->defaultSort('created_at', 'desc');
|
||||
}
|
||||
|
||||
return $query->whereHas('cooperationMedia.partnerMedia.company', function ($q) use ($user) {
|
||||
$q->where('user_id', $user->id);
|
||||
});
|
||||
public function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->whereHas('cooperationMedia.partnerMedia.company', function (Builder $query): void {
|
||||
$query->where('user_id', auth()->id());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,6 +18,7 @@
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Joaopaulolndev\FilamentPdfViewer\Infolists\Components\PdfViewerEntry;
|
||||
|
||||
@ -112,18 +113,7 @@ public function table(Table $table): Table
|
||||
])
|
||||
->emptyStateIcon(Heroicon::DocumentText)
|
||||
->emptyStateDescription('Tidak ada proposal yang diajukan.')
|
||||
->defaultSort('created_at', 'desc')
|
||||
->modifyQueryUsing(function ($query) {
|
||||
$user = auth()->user();
|
||||
|
||||
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
|
||||
return $query;
|
||||
}
|
||||
|
||||
return $query->whereHas('partnerMedia.company', function ($q) use ($user) {
|
||||
$q->where('user_id', $user->id);
|
||||
});
|
||||
});
|
||||
->defaultSort('created_at', 'desc');
|
||||
}
|
||||
|
||||
public function infolist(Schema $infolist): Schema
|
||||
@ -173,4 +163,14 @@ public function infolist(Schema $infolist): Schema
|
||||
])
|
||||
->columns(1);
|
||||
}
|
||||
|
||||
public function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $query): void {
|
||||
$query->whereHas('partnerMedia.company', function (Builder $q): void {
|
||||
$q->where('user_id', auth()->id());
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,7 @@
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Filament\Tables\Columns\TextColumn;
|
||||
use Filament\Tables\Table;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ReportRelationManager extends RelationManager
|
||||
@ -215,16 +216,15 @@ public function table(Table $table): Table
|
||||
->toolbarActions([])
|
||||
->emptyStateIcon(Heroicon::InboxArrowDown)
|
||||
->emptyStateDescription('Tidak ada laporan yang diajukan.')
|
||||
->defaultSort('created_at', 'desc')
|
||||
->modifyQueryUsing(function ($query) {
|
||||
$user = auth()->user();
|
||||
->defaultSort('created_at', 'desc');
|
||||
}
|
||||
|
||||
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
|
||||
return $query;
|
||||
}
|
||||
|
||||
$query->whereHas('mediaTaskAssignment.partnerMedia.company', function ($q) use ($user) {
|
||||
$q->where('user_id', $user->id);
|
||||
public function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $query): void {
|
||||
$query->whereHas('mediaTaskAssignment.partnerMedia.company', function (Builder $q): void {
|
||||
$q->where('user_id', auth()->id());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@ -272,11 +272,14 @@ public static function table(Table $table): Table
|
||||
->defaultSort('created_at', 'desc')
|
||||
->deferFilters(false)
|
||||
->paginated([25, 50, 100, 'all'])
|
||||
->deferLoading()
|
||||
->modifyQueryUsing(function (Builder $query): void {
|
||||
$query->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $q): Builder {
|
||||
return $q->where('user_id', auth()->id());
|
||||
});
|
||||
->deferLoading();
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $q): Builder {
|
||||
return $q->where('user_id', auth()->id());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -210,17 +210,6 @@ public static function table(Table $table): Table
|
||||
->deferFilters(false)
|
||||
->paginated([25, 50, 100, 'all'])
|
||||
->deferLoading()
|
||||
->modifyQueryUsing(function (Builder $query): void {
|
||||
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia) {
|
||||
$query->whereRaw('1 = 0');
|
||||
}
|
||||
|
||||
$query->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $q): Builder {
|
||||
return $q->whereHas('partnerMedia.company', function (Builder $q): void {
|
||||
$q->where('user_id', auth()->id());
|
||||
});
|
||||
});
|
||||
})
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia, function (Table $table): Table {
|
||||
return $table
|
||||
->emptyStateHeading('Akses Dibatasi')
|
||||
@ -242,6 +231,19 @@ public static function getPages(): array
|
||||
];
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia, function (Builder $query): Builder {
|
||||
return $query->whereRaw('1 = 0');
|
||||
})
|
||||
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $query): Builder {
|
||||
return $query->whereHas('partnerMedia.company', function (Builder $q): void {
|
||||
$q->where('user_id', auth()->id());
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public static function getRecordRouteBindingEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getRecordRouteBindingEloquentQuery()
|
||||
|
||||
@ -373,11 +373,14 @@ public static function table(Table $table): Table
|
||||
->defaultSort('created_at', 'desc')
|
||||
->deferFilters(false)
|
||||
->paginated([25, 50, 100, 'all'])
|
||||
->deferLoading()
|
||||
->modifyQueryUsing(function (Builder $query): void {
|
||||
$query->role('Perusahaan')
|
||||
->whereHas('company');
|
||||
});
|
||||
->deferLoading();
|
||||
}
|
||||
|
||||
public static function getEloquentQuery(): Builder
|
||||
{
|
||||
return parent::getEloquentQuery()
|
||||
->role('Perusahaan')
|
||||
->whereHas('company');
|
||||
}
|
||||
|
||||
public static function getPages(): array
|
||||
|
||||
Loading…
Reference in New Issue
Block a user