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
|
public static function table(Table $table): Table
|
||||||
{
|
{
|
||||||
return CooperationsTable::configure($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;
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function infolist(Schema $schema): Schema
|
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
|
public static function getPages(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
|
|||||||
@ -10,6 +10,7 @@
|
|||||||
use Filament\Tables\Columns\ImageColumn;
|
use Filament\Tables\Columns\ImageColumn;
|
||||||
use Filament\Tables\Columns\TextColumn;
|
use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class CooperationPaymentRelationManager extends RelationManager
|
class CooperationPaymentRelationManager extends RelationManager
|
||||||
@ -62,13 +63,14 @@ public function table(Table $table): Table
|
|||||||
->recordActions([])
|
->recordActions([])
|
||||||
->emptyStateIcon(Heroicon::CreditCard)
|
->emptyStateIcon(Heroicon::CreditCard)
|
||||||
->emptyStateDescription('Belum ada data pembayaran.')
|
->emptyStateDescription('Belum ada data pembayaran.')
|
||||||
->defaultSort('created_at', 'desc')
|
->defaultSort('created_at', 'desc');
|
||||||
->modifyQueryUsing(function ($query) {
|
}
|
||||||
$user = auth()->user();
|
|
||||||
|
|
||||||
return $query->whereHas('cooperationMedia.partnerMedia.company', function ($q) use ($user) {
|
public function getEloquentQuery(): Builder
|
||||||
$q->where('user_id', $user->id);
|
{
|
||||||
});
|
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\Support\Icons\Heroicon;
|
||||||
use Filament\Tables\Columns\TextColumn;
|
use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Joaopaulolndev\FilamentPdfViewer\Infolists\Components\PdfViewerEntry;
|
use Joaopaulolndev\FilamentPdfViewer\Infolists\Components\PdfViewerEntry;
|
||||||
|
|
||||||
@ -112,18 +113,7 @@ public function table(Table $table): Table
|
|||||||
])
|
])
|
||||||
->emptyStateIcon(Heroicon::DocumentText)
|
->emptyStateIcon(Heroicon::DocumentText)
|
||||||
->emptyStateDescription('Tidak ada proposal yang diajukan.')
|
->emptyStateDescription('Tidak ada proposal yang diajukan.')
|
||||||
->defaultSort('created_at', 'desc')
|
->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);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function infolist(Schema $infolist): Schema
|
public function infolist(Schema $infolist): Schema
|
||||||
@ -173,4 +163,14 @@ public function infolist(Schema $infolist): Schema
|
|||||||
])
|
])
|
||||||
->columns(1);
|
->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\Support\Icons\Heroicon;
|
||||||
use Filament\Tables\Columns\TextColumn;
|
use Filament\Tables\Columns\TextColumn;
|
||||||
use Filament\Tables\Table;
|
use Filament\Tables\Table;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class ReportRelationManager extends RelationManager
|
class ReportRelationManager extends RelationManager
|
||||||
@ -215,16 +216,15 @@ public function table(Table $table): Table
|
|||||||
->toolbarActions([])
|
->toolbarActions([])
|
||||||
->emptyStateIcon(Heroicon::InboxArrowDown)
|
->emptyStateIcon(Heroicon::InboxArrowDown)
|
||||||
->emptyStateDescription('Tidak ada laporan yang diajukan.')
|
->emptyStateDescription('Tidak ada laporan yang diajukan.')
|
||||||
->defaultSort('created_at', 'desc')
|
->defaultSort('created_at', 'desc');
|
||||||
->modifyQueryUsing(function ($query) {
|
}
|
||||||
$user = auth()->user();
|
|
||||||
|
|
||||||
if (! $user->hasRole(RoleEnum::PERUSAHAAN->value)) {
|
public function getEloquentQuery(): Builder
|
||||||
return $query;
|
{
|
||||||
}
|
return parent::getEloquentQuery()
|
||||||
|
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value), function (Builder $query): void {
|
||||||
$query->whereHas('mediaTaskAssignment.partnerMedia.company', function ($q) use ($user) {
|
$query->whereHas('mediaTaskAssignment.partnerMedia.company', function (Builder $q): void {
|
||||||
$q->where('user_id', $user->id);
|
$q->where('user_id', auth()->id());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@ -272,11 +272,14 @@ public static function table(Table $table): Table
|
|||||||
->defaultSort('created_at', 'desc')
|
->defaultSort('created_at', 'desc')
|
||||||
->deferFilters(false)
|
->deferFilters(false)
|
||||||
->paginated([25, 50, 100, 'all'])
|
->paginated([25, 50, 100, 'all'])
|
||||||
->deferLoading()
|
->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());
|
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)
|
->deferFilters(false)
|
||||||
->paginated([25, 50, 100, 'all'])
|
->paginated([25, 50, 100, 'all'])
|
||||||
->deferLoading()
|
->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 {
|
->when(auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && ! auth()->user()->company?->partnerMedia, function (Table $table): Table {
|
||||||
return $table
|
return $table
|
||||||
->emptyStateHeading('Akses Dibatasi')
|
->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
|
public static function getRecordRouteBindingEloquentQuery(): Builder
|
||||||
{
|
{
|
||||||
return parent::getRecordRouteBindingEloquentQuery()
|
return parent::getRecordRouteBindingEloquentQuery()
|
||||||
|
|||||||
@ -373,11 +373,14 @@ public static function table(Table $table): Table
|
|||||||
->defaultSort('created_at', 'desc')
|
->defaultSort('created_at', 'desc')
|
||||||
->deferFilters(false)
|
->deferFilters(false)
|
||||||
->paginated([25, 50, 100, 'all'])
|
->paginated([25, 50, 100, 'all'])
|
||||||
->deferLoading()
|
->deferLoading();
|
||||||
->modifyQueryUsing(function (Builder $query): void {
|
}
|
||||||
$query->role('Perusahaan')
|
|
||||||
->whereHas('company');
|
public static function getEloquentQuery(): Builder
|
||||||
});
|
{
|
||||||
|
return parent::getEloquentQuery()
|
||||||
|
->role('Perusahaan')
|
||||||
|
->whereHas('company');
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getPages(): array
|
public static function getPages(): array
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user