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\Schema;
|
||||
use Filament\Support\Icons\Heroicon;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
|
||||
class CooperationForm
|
||||
{
|
||||
@ -49,7 +50,7 @@ public static function configure(Schema $schema): Schema
|
||||
|
||||
Select::make('partner_media_ids')
|
||||
->label('Media')
|
||||
->relationship('partnerMedia', 'name')
|
||||
->relationship('partnerMedia', 'name', fn (Builder $query) => $query->verified())
|
||||
->multiple()
|
||||
->preload()
|
||||
->searchable()
|
||||
@ -62,7 +63,7 @@ public static function configure(Schema $schema): Schema
|
||||
->label('Select All')
|
||||
->icon(Heroicon::OutlinedCheckCircle)
|
||||
->action(function ($set, $livewire) {
|
||||
$allMediaIds = PartnerMedia::pluck('id')->toArray();
|
||||
$allMediaIds = PartnerMedia::verified()->pluck('id')->toArray();
|
||||
$set('partner_media_ids', $allMediaIds);
|
||||
})
|
||||
),
|
||||
|
||||
@ -7,8 +7,8 @@
|
||||
use App\Filament\Columns\TimestampColumns;
|
||||
use App\Filament\Resources\Publication\Announcements\Pages\ManageAnnouncements;
|
||||
use App\Models\Announcement;
|
||||
use App\Models\PartnerMedia;
|
||||
use BackedEnum;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\BulkActionGroup;
|
||||
use Filament\Actions\DeleteAction;
|
||||
use Filament\Actions\EditAction;
|
||||
@ -72,16 +72,18 @@ public static function form(Schema $schema): Schema
|
||||
|
||||
CheckboxList::make('partnerMedia')
|
||||
->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]))
|
||||
->required(fn ($get) => in_array($get('type'), [AnnouncementType::COMPANY, AnnouncementType::COMPANY->value]))
|
||||
->options(function () {
|
||||
return PartnerMedia::query()->pluck('name', 'id');
|
||||
})
|
||||
->searchable()
|
||||
->noSearchResultsMessage('Tidak ada media yang ditemukan.')
|
||||
->helperText('Pilih media yang akan menerima pengumuman ini')
|
||||
->columnSpanFull(),
|
||||
->columnSpanFull()
|
||||
->bulkToggleable()
|
||||
->selectAllAction(
|
||||
fn (Action $action) => $action->label('Pilih Semua Media'),
|
||||
),
|
||||
|
||||
])
|
||||
->columns(1);
|
||||
}
|
||||
|
||||
@ -5,6 +5,8 @@
|
||||
use App\Enums\MediaClassification;
|
||||
use App\Enums\MediaType;
|
||||
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\Model;
|
||||
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
|
||||
{
|
||||
return $this->belongsTo(Company::class);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user