feat: Implement verified scope for PartnerMedia and update relationships in CooperationForm and AnnouncementResource
This commit is contained in:
parent
57eece15db
commit
aab02b44fe
@ -13,6 +13,7 @@
|
|||||||
use Filament\Schemas\Components\Section;
|
use Filament\Schemas\Components\Section;
|
||||||
use Filament\Schemas\Schema;
|
use Filament\Schemas\Schema;
|
||||||
use Filament\Support\Icons\Heroicon;
|
use Filament\Support\Icons\Heroicon;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
class CooperationForm
|
class CooperationForm
|
||||||
{
|
{
|
||||||
@ -49,7 +50,7 @@ public static function configure(Schema $schema): Schema
|
|||||||
|
|
||||||
Select::make('partner_media_ids')
|
Select::make('partner_media_ids')
|
||||||
->label('Media')
|
->label('Media')
|
||||||
->relationship('partnerMedia', 'name')
|
->relationship('partnerMedia', 'name', fn (Builder $query) => $query->verified())
|
||||||
->multiple()
|
->multiple()
|
||||||
->preload()
|
->preload()
|
||||||
->searchable()
|
->searchable()
|
||||||
@ -62,7 +63,7 @@ public static function configure(Schema $schema): Schema
|
|||||||
->label('Select All')
|
->label('Select All')
|
||||||
->icon(Heroicon::OutlinedCheckCircle)
|
->icon(Heroicon::OutlinedCheckCircle)
|
||||||
->action(function ($set, $livewire) {
|
->action(function ($set, $livewire) {
|
||||||
$allMediaIds = PartnerMedia::pluck('id')->toArray();
|
$allMediaIds = PartnerMedia::verified()->pluck('id')->toArray();
|
||||||
$set('partner_media_ids', $allMediaIds);
|
$set('partner_media_ids', $allMediaIds);
|
||||||
})
|
})
|
||||||
),
|
),
|
||||||
|
|||||||
@ -7,8 +7,8 @@
|
|||||||
use App\Filament\Columns\TimestampColumns;
|
use App\Filament\Columns\TimestampColumns;
|
||||||
use App\Filament\Resources\Publication\Announcements\Pages\ManageAnnouncements;
|
use App\Filament\Resources\Publication\Announcements\Pages\ManageAnnouncements;
|
||||||
use App\Models\Announcement;
|
use App\Models\Announcement;
|
||||||
use App\Models\PartnerMedia;
|
|
||||||
use BackedEnum;
|
use BackedEnum;
|
||||||
|
use Filament\Actions\Action;
|
||||||
use Filament\Actions\BulkActionGroup;
|
use Filament\Actions\BulkActionGroup;
|
||||||
use Filament\Actions\DeleteAction;
|
use Filament\Actions\DeleteAction;
|
||||||
use Filament\Actions\EditAction;
|
use Filament\Actions\EditAction;
|
||||||
@ -72,16 +72,18 @@ public static function form(Schema $schema): Schema
|
|||||||
|
|
||||||
CheckboxList::make('partnerMedia')
|
CheckboxList::make('partnerMedia')
|
||||||
->label('Kirim Kepada')
|
->label('Kirim Kepada')
|
||||||
->relationship('partnerMedia', 'name')
|
->relationship('partnerMedia', 'name', fn (Builder $query) => $query->verified())
|
||||||
->visible(fn ($get) => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
|
->visible(fn ($get) => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
|
||||||
->required(fn ($get) => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
|
->required(fn ($get) => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
|
||||||
->options(function () {
|
|
||||||
return PartnerMedia::query()->pluck('name', 'id');
|
|
||||||
})
|
|
||||||
->searchable()
|
->searchable()
|
||||||
->noSearchResultsMessage('Tidak ada media yang ditemukan.')
|
->noSearchResultsMessage('Tidak ada media yang ditemukan.')
|
||||||
->helperText('Pilih media yang akan menerima pengumuman ini')
|
->helperText('Pilih media yang akan menerima pengumuman ini')
|
||||||
->columnSpanFull(),
|
->columnSpanFull()
|
||||||
|
->bulkToggleable()
|
||||||
|
->selectAllAction(
|
||||||
|
fn (Action $action) => $action->label('Pilih Semua Media'),
|
||||||
|
),
|
||||||
|
|
||||||
])
|
])
|
||||||
->columns(1);
|
->columns(1);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,8 @@
|
|||||||
use App\Enums\MediaClassification;
|
use App\Enums\MediaClassification;
|
||||||
use App\Enums\MediaType;
|
use App\Enums\MediaType;
|
||||||
use App\Enums\VerificationStatus;
|
use App\Enums\VerificationStatus;
|
||||||
|
use Illuminate\Database\Eloquent\Attributes\Scope;
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||||
@ -29,6 +31,14 @@ protected function casts(): array
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[Scope]
|
||||||
|
protected function verified(Builder $query): void
|
||||||
|
{
|
||||||
|
$query->whereHas('company.verificationRequest', function ($q) {
|
||||||
|
$q->where('status', VerificationStatus::APPROVED);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public function company(): BelongsTo
|
public function company(): BelongsTo
|
||||||
{
|
{
|
||||||
return $this->belongsTo(Company::class);
|
return $this->belongsTo(Company::class);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user