TableRepeater::make('promos')
->relationship('block_promos')
->label('Promos')
->reorderable(true)
->reorderableWithButtons(true)
->reorderableWithDragAndDrop(true)
->orderColumn('order_column')
->maxItems(4)
->headers([
Header::make('Lista Promos'),
Header::make('Tipo'),
Header::make('Valido')
])
->addActionLabel('Aggiungi un Promo')
->schema([
RecordFinder::make('promo_id')
->label('Promo')
->inline()
->required()
->relationship(
name:'promo',
modifyQueryUsing:function (Builder $query) {
$query->scopes(['active', 'visibleInBlog']);
}
)
->openModalActionModalWidth(MaxWidth::Full)
->slideOver()
->badge()
->tableHeaderActions([
CreateAction::make()
->form(fn () => PromoResource::formSchema())
->icon('fluentui-square-add-20')
->slideOver()
->modalWidth(MaxWidth::Full)
]),
Placeholder::make('promo_type')
->hiddenLabel()
->content(function (?ArticleblockPromo $record): HtmlString {
$message = 'Non selezionato';
$color = 'slate';
if (!\is_null($record)) {
$message = $record->promo->type->translation();
$color = $record->promo->type->getColor();
}
return new HtmlString(
Blade::render(
'
{{$message}}
',
['message' => $message,'color' => $color]
)
);
}),
Placeholder::make('coupon_validity')
->hiddenLabel()
->content(function (?ArticleblockPromo $record): HtmlString {
$message = 'Non selezionato';
$color = 'slate';
if (!\is_null($record)) {
$message = 'Valido';
$color = 'sky';
if ($record->promo->type->is(PromoType::COUPON->value) && \filled($record->promo->coupon_id)) {
$coupon = $record->promo->coupon;
$message = $coupon?->valid ? 'Valido' : 'Scaduto';
$color = $coupon?->valid ? 'success' : 'danger';
}
}
return new HtmlString(
Blade::render(
'
{{$message}}
',
['message' => $message,'color' => $color]
)
);
}),
])