diff --git a/app/Filament/Pages/CustomMedia.php b/app/Filament/Pages/CustomMedia.php index 332d742..7441f63 100644 --- a/app/Filament/Pages/CustomMedia.php +++ b/app/Filament/Pages/CustomMedia.php @@ -47,10 +47,18 @@ class CustomMedia extends Page public ?PartnerMedia $media = null; + public bool $restricted = false; + public array $data = []; public function mount(): void { + if (auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company) { + $this->restricted = true; + + return; + } + $this->company = auth()->user()->company; $media = $this->company?->partnerMedia; diff --git a/app/Filament/Resources/Manage/Journalists/JournalistResource.php b/app/Filament/Resources/Manage/Journalists/JournalistResource.php index 73fbc4a..1d4f4a0 100644 --- a/app/Filament/Resources/Manage/Journalists/JournalistResource.php +++ b/app/Filament/Resources/Manage/Journalists/JournalistResource.php @@ -7,6 +7,7 @@ use App\Models\Journalist; use Asmit\FilamentUpload\Forms\Components\AdvancedFileUpload; use BackedEnum; +use Filament\Actions\Action; use Filament\Actions\BulkActionGroup; use Filament\Actions\DeleteAction; use Filament\Actions\DeleteBulkAction; @@ -260,11 +261,27 @@ public static function table(Table $table): Table ->defaultSort('created_at', 'desc') ->deferFilters(false) ->modifyQueryUsing(function (Builder $query) { + if (auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company?->partnerMedia) { + $query->whereRaw('1 = 0'); + } + $query->when(auth()->user()->hasRole('Perusahaan'), function (Builder $q) { return $q->whereHas('partnerMedia.company', function (Builder $q) { $q->where('user_id', auth()->id()); }); }); + }) + ->when(auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company?->partnerMedia, function (Table $table) { + return $table + ->emptyStateHeading('Akses Dibatasi') + ->emptyStateDescription('Mohon lengkapi data Media Anda terlebih dahulu.') + ->emptyStateIcon(Heroicon::LockClosed) + ->emptyStateActions([ + Action::make('completeMedia') + ->label('Lengkapi Data Media') + ->url(route('filament.dashboard.pages.manage.media')) + ->button(), + ]); }); } diff --git a/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php b/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php index d664bf1..b54b342 100644 --- a/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php +++ b/app/Filament/Resources/Manage/Journalists/Pages/ManageJournalists.php @@ -17,6 +17,10 @@ class ManageJournalists extends ManageRecords protected function getHeaderActions(): array { + if (auth()->user()->hasRole('Perusahaan') && ! auth()->user()->company?->partnerMedia) { + return []; + } + return [ CreateAction::make() ->label('Tambah') diff --git a/app/Models/PartnerMedia.php b/app/Models/PartnerMedia.php index 54a83f7..1549e13 100644 --- a/app/Models/PartnerMedia.php +++ b/app/Models/PartnerMedia.php @@ -15,7 +15,7 @@ class PartnerMedia extends Model implements HasMedia { - use HasFactory, InteractsWithMedia, SoftDeletes; + use HasFactory, InteractsWithMedia,SoftDeletes; protected $guarded = ['id']; @@ -54,11 +54,6 @@ public function taskAssignments(): BelongsToMany ->withTimestamps(); } - public function taskAssignmentMedias(): HasMany - { - return $this->hasMany(TaskAssignmentMedia::class); - } - public function cooperations(): BelongsToMany { return $this->belongsToMany(Cooperation::class, 'cooperation_media') diff --git a/database/seeders/ShieldSeeder.php b/database/seeders/ShieldSeeder.php index 051b283..5f1be7d 100644 --- a/database/seeders/ShieldSeeder.php +++ b/database/seeders/ShieldSeeder.php @@ -150,17 +150,6 @@ public function run(): void "RestoreAny:IssueManagement", "Replicate:IssueManagement", "Reorder:IssueManagement", - "ViewAny:Journalist", - "View:Journalist", - "Create:Journalist", - "Update:Journalist", - "Delete:Journalist", - "Restore:Journalist", - "ForceDelete:Journalist", - "ForceDeleteAny:Journalist", - "RestoreAny:Journalist", - "Replicate:Journalist", - "Reorder:Journalist", "ViewAny:MediaMonitoring", "View:MediaMonitoring", "Create:MediaMonitoring", @@ -321,17 +310,6 @@ public function run(): void "RestoreAny:IssueManagement", "Replicate:IssueManagement", "Reorder:IssueManagement", - "ViewAny:Journalist", - "View:Journalist", - "Create:Journalist", - "Update:Journalist", - "Delete:Journalist", - "Restore:Journalist", - "ForceDelete:Journalist", - "ForceDeleteAny:Journalist", - "RestoreAny:Journalist", - "Replicate:Journalist", - "Reorder:Journalist", "ViewAny:MediaMonitoring", "View:MediaMonitoring", "Create:MediaMonitoring", @@ -393,17 +371,6 @@ public function run(): void "RestoreAny:News", "Replicate:News", "Reorder:News", - "ViewAny:Journalist", - "View:Journalist", - "Create:Journalist", - "Update:Journalist", - "Delete:Journalist", - "Restore:Journalist", - "ForceDelete:Journalist", - "ForceDeleteAny:Journalist", - "RestoreAny:Journalist", - "Replicate:Journalist", - "Reorder:Journalist", "ViewAny:Classification", "View:Classification", "ViewAny:SubClassification", diff --git a/resources/views/filament/pages/custom-media.blade.php b/resources/views/filament/pages/custom-media.blade.php index e5fc471..1b0fb68 100644 --- a/resources/views/filament/pages/custom-media.blade.php +++ b/resources/views/filament/pages/custom-media.blade.php @@ -1,9 +1,42 @@ -
- {{ $this->form }} + @if ($this->restricted) +
+
-
- Simpan +
+
+ +
+
+ +

+ Akses Dibatasi +

+ +

+ Silakan lengkapi data perusahaan Anda terlebih dahulu untuk dapat mengelola informasi media. +

+ +
+ + Lengkapi Data Perusahaan + +
+
- + @else +
+ {{ $this->form }} + +
+ + Simpan + +
+
+ @endif