94 lines
2.4 KiB
PHP
94 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\TransmittalResource\Pages;
|
|
|
|
use App\Exports\TransmittalsExport;
|
|
use App\Filament\Resources\TransmittalResource;
|
|
use App\Jobs\ExportCompleteJob;
|
|
use Filament\Actions;
|
|
use Filament\Actions\Action;
|
|
use Filament\Forms\Form;
|
|
use Filament\Notifications\Notification;
|
|
use Filament\Resources\Pages\CreateRecord;
|
|
use Filament\Support\Exceptions\Halt;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Throwable;
|
|
use Filament\Notifications\Actions\Action as NotificationAction;
|
|
|
|
class CreateTransmittal extends CreateRecord
|
|
{
|
|
protected static string $resource = TransmittalResource::class;
|
|
|
|
protected function getFormActions(): array
|
|
{
|
|
return [
|
|
$this->getCreateFormAction(),
|
|
$this->getCreateAnotherFormAction(),
|
|
Action::make('Create and Export')->action('saveAndExport')->color('success'),
|
|
$this->getCancelFormAction()
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @throws Throwable
|
|
*/
|
|
public function saveAndExport(): void
|
|
{
|
|
$this->authorizeAccess();
|
|
try {
|
|
DB::beginTransaction();
|
|
|
|
$this->callHook('beforeValidate');
|
|
|
|
$data = $this->form->getState();
|
|
|
|
$this->callHook('afterValidate');
|
|
|
|
$data = $this->mutateFormDataBeforeCreate($data);
|
|
|
|
$this->callHook('beforeCreate');
|
|
|
|
$this->record = $this->handleRecordCreation($data);
|
|
|
|
$this->form->model($this->getRecord())->saveRelationships();
|
|
|
|
$this->callHook('afterCreate');
|
|
|
|
DB::commit();
|
|
} catch (Halt $exception) {
|
|
$exception->shouldRollbackDatabaseTransaction() ?
|
|
DB::rollBack() :
|
|
DB::commit();
|
|
|
|
return;
|
|
} catch (Throwable $exception) {
|
|
DB::rollBack();
|
|
|
|
throw $exception;
|
|
}
|
|
|
|
$this->rememberData();
|
|
|
|
TransmittalResource::exportTransmittal([$this->record->id]);
|
|
|
|
Notification::make()
|
|
->success()
|
|
->title('Transmittal Was Created Successfully!, Check your notification for file download link')
|
|
->send();
|
|
|
|
}
|
|
|
|
public function getCreatedNotificationMessage(): ?string
|
|
{
|
|
return 'Transmittal Was Created Successfully!'; // TODO: Change the autogenerated stub
|
|
}
|
|
|
|
protected function getRedirectUrl(): string
|
|
{
|
|
return $this->previousUrl ?? $this->getResource()::getUrl('index');
|
|
}
|
|
|
|
|
|
}
|