feat: add EditReportAction for editing reports with enhanced form fields and visibility logic
This commit is contained in:
parent
a08a23ae25
commit
59f5f87dad
@ -0,0 +1,73 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filament\Resources\Manage\Cooperations\Actions\Report;
|
||||||
|
|
||||||
|
use App\Enums\ApprovalStatus;
|
||||||
|
use App\Enums\RoleEnum;
|
||||||
|
use App\Filament\Actions\Cheerful\EditAction;
|
||||||
|
use App\Filament\Support\CheerfulNotification;
|
||||||
|
use App\Models\Report;
|
||||||
|
use Filament\Forms\Components\DatePicker;
|
||||||
|
use Filament\Forms\Components\SpatieMediaLibraryFileUpload;
|
||||||
|
use Filament\Forms\Components\Textarea;
|
||||||
|
use Filament\Forms\Components\TextInput;
|
||||||
|
|
||||||
|
class EditReportAction extends EditAction
|
||||||
|
{
|
||||||
|
public static function getDefaultName(): ?string
|
||||||
|
{
|
||||||
|
return 'edit_report';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this
|
||||||
|
->modalWidth('lg')
|
||||||
|
->schema([
|
||||||
|
TextInput::make('title')
|
||||||
|
->label('Judul')
|
||||||
|
->placeholder('Dirgahayu Purwakarta')
|
||||||
|
->required()
|
||||||
|
->autocomplete(false),
|
||||||
|
|
||||||
|
DatePicker::make('publication_date')
|
||||||
|
->label('Tanggal Publikasi')
|
||||||
|
->native(false)
|
||||||
|
->displayFormat('l, d F Y')
|
||||||
|
->required(),
|
||||||
|
|
||||||
|
TextInput::make('link')
|
||||||
|
->label('Tautan')
|
||||||
|
->placeholder('https://example.com')
|
||||||
|
->maxLength(255)
|
||||||
|
->url()
|
||||||
|
->required()
|
||||||
|
->autocomplete(false),
|
||||||
|
|
||||||
|
Textarea::make('description')
|
||||||
|
->label('Deskripsi')
|
||||||
|
->placeholder('....')
|
||||||
|
->required()
|
||||||
|
->autocomplete(false),
|
||||||
|
|
||||||
|
SpatieMediaLibraryFileUpload::make('image')
|
||||||
|
->label('Gambar')
|
||||||
|
->disk(config('filesystems.default'))
|
||||||
|
->acceptedFileTypes(['image/*'])
|
||||||
|
->maxSize(1024 * 3)
|
||||||
|
->collection('reports')
|
||||||
|
->image()
|
||||||
|
->helperText('Format yang diterima: JPEG, PNG, GIF, WEBP. Ukuran maksimum: 3 MB.')
|
||||||
|
->required(),
|
||||||
|
])
|
||||||
|
->successNotification(
|
||||||
|
fn () => CheerfulNotification::success(
|
||||||
|
CheerfulNotification::getByKey('cooperation.report_sent_success'),
|
||||||
|
CheerfulNotification::getByKey('cooperation.report_sent_desc')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
->visible(fn (Report $record): bool => auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && $record->status === ApprovalStatus::PENDING);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -49,6 +49,6 @@ protected function setUp(): void
|
|||||||
)->output();
|
)->output();
|
||||||
}, str($record->title)->slug().'.pdf');
|
}, str($record->title)->slug().'.pdf');
|
||||||
})
|
})
|
||||||
->visible(fn () => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value]));
|
->visible(fn () => auth()->user()->hasRole([RoleEnum::ADMINISTRATOR->value, RoleEnum::DEVELOPER->value, RoleEnum::PERUSAHAAN->value]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -2,9 +2,12 @@
|
|||||||
|
|
||||||
namespace App\Filament\Resources\Manage\Cooperations\RelationManagers;
|
namespace App\Filament\Resources\Manage\Cooperations\RelationManagers;
|
||||||
|
|
||||||
|
use App\Enums\ApprovalStatus;
|
||||||
use App\Enums\RoleEnum;
|
use App\Enums\RoleEnum;
|
||||||
|
use App\Filament\Actions\Cheerful\DeleteAction;
|
||||||
use App\Filament\Columns\RowIndexColumn;
|
use App\Filament\Columns\RowIndexColumn;
|
||||||
use App\Filament\Resources\Manage\Cooperations\Actions\Report\AcceptAction;
|
use App\Filament\Resources\Manage\Cooperations\Actions\Report\AcceptAction;
|
||||||
|
use App\Filament\Resources\Manage\Cooperations\Actions\Report\EditReportAction;
|
||||||
use App\Filament\Resources\Manage\Cooperations\Actions\Report\ExportAllReportsPdfAction;
|
use App\Filament\Resources\Manage\Cooperations\Actions\Report\ExportAllReportsPdfAction;
|
||||||
use App\Filament\Resources\Manage\Cooperations\Actions\Report\ExportReportPdfAction;
|
use App\Filament\Resources\Manage\Cooperations\Actions\Report\ExportReportPdfAction;
|
||||||
use App\Filament\Resources\Manage\Cooperations\Actions\Report\RejectAction;
|
use App\Filament\Resources\Manage\Cooperations\Actions\Report\RejectAction;
|
||||||
@ -98,6 +101,17 @@ public function table(Table $table): Table
|
|||||||
->recordActions([
|
->recordActions([
|
||||||
ExportReportPdfAction::make(),
|
ExportReportPdfAction::make(),
|
||||||
|
|
||||||
|
EditReportAction::make(),
|
||||||
|
|
||||||
|
DeleteAction::make()
|
||||||
|
->successNotification(
|
||||||
|
fn () => CheerfulNotification::success(
|
||||||
|
CheerfulNotification::getByKey('cooperation.report_sent_success'),
|
||||||
|
CheerfulNotification::getByKey('cooperation.report_sent_desc')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
->visible(fn (Report $record): bool => auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value) && $record->status === ApprovalStatus::PENDING),
|
||||||
|
|
||||||
AcceptAction::make(),
|
AcceptAction::make(),
|
||||||
|
|
||||||
RejectAction::make(),
|
RejectAction::make(),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user