refactor: update attendance and assignment actions to inline definitions and remove unused actions
This commit is contained in:
parent
69fde94108
commit
f75f43fb2e
@ -17,7 +17,7 @@ protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->label('Bagikan')
|
||||
$this->label('Bagikan Presensi')
|
||||
->icon('heroicon-o-share')
|
||||
->color(Color::Teal)
|
||||
->link()
|
||||
|
||||
@ -1,53 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Models\Assignment;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Infolists\Components\TextEntry;
|
||||
use Filament\Support\Enums\Width;
|
||||
use Joaopaulolndev\FilamentPdfViewer\Infolists\Components\PdfViewerEntry;
|
||||
|
||||
class ViewAssignmentDetailAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'viewAssignmentDetail';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->modalHeading('Detail Tugas')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::FourExtraLarge)
|
||||
->infolist(function (array $arguments) {
|
||||
$record = Assignment::find($arguments['record'], ['*']);
|
||||
if (! $record) {
|
||||
return [];
|
||||
}
|
||||
|
||||
$entries = [
|
||||
TextEntry::make('description')
|
||||
->label('Deskripsi')
|
||||
->html()
|
||||
->columnSpanFull(),
|
||||
TextEntry::make('due_date')
|
||||
->label('Batas Waktu')
|
||||
->dateTime('l, d F Y, H:i')
|
||||
->columnSpanFull(),
|
||||
];
|
||||
|
||||
$mediaEntries = $record->getMedia('assignments')->map(function ($item, $index) {
|
||||
return PdfViewerEntry::make('pdf_'.$index)
|
||||
->label('Lampiran PDF')
|
||||
->fileUrl($item->getUrl())
|
||||
->columnSpanFull();
|
||||
})->toArray();
|
||||
|
||||
return array_merge($entries, $mediaEntries);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -1,41 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Support\Colors\Color;
|
||||
use Filament\Support\Enums\Width;
|
||||
|
||||
class ViewAssignmentsAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'viewAssignments';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->label('Tugas')
|
||||
->color(Color::Sky)
|
||||
->icon('heroicon-o-clipboard-document-list')
|
||||
->link()
|
||||
->modalHeading('Tugas Sesi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::TwoExtraLarge)
|
||||
->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.assignments-modal', [
|
||||
'assignments' => ClassSession::find($arguments['session'] ?? null, ['*'])?->assignments()
|
||||
->latest()
|
||||
->get()
|
||||
->map(fn ($a) => (object) [
|
||||
'id' => $a->id,
|
||||
'title' => $a->title,
|
||||
'type_label' => $a->type?->getLabel() ?? 'Tugas',
|
||||
'due_date_formatted' => $a->due_date?->translatedFormat('d F Y, H:i') ?? '-',
|
||||
]) ?? collect(),
|
||||
]));
|
||||
}
|
||||
}
|
||||
@ -1,32 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Support\Enums\Width;
|
||||
|
||||
class ViewAttendanceAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'viewAttendance';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->label('Presensi')
|
||||
->color('success')
|
||||
->icon('heroicon-o-check-circle')
|
||||
->link()
|
||||
->modalHeading('Daftar Presensi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::TwoExtraLarge)
|
||||
->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.attendance-modal', [
|
||||
'attendances' => ClassSession::find($arguments['session'] ?? null, ['*'])?->attendances()->with('student')->latest('attended_at')->get() ?? collect(),
|
||||
]));
|
||||
}
|
||||
}
|
||||
@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Models\Material;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Support\Enums\Width;
|
||||
|
||||
class ViewMaterialDetailAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'viewMaterialDetail';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->record(fn (array $arguments) => Material::find($arguments['record'] ?? null, ['*']))
|
||||
->modalHeading('Detail Materi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::FourExtraLarge)
|
||||
->modalContent(fn (?Material $record) => $record ? view('filament.resources.learning.class-sessions.material-detail-modal', [
|
||||
'record' => $record,
|
||||
]) : null);
|
||||
}
|
||||
}
|
||||
@ -1,40 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filament\Resources\Learning\ClassSessions\Actions;
|
||||
|
||||
use App\Models\ClassSession;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Support\Colors\Color;
|
||||
use Filament\Support\Enums\Width;
|
||||
|
||||
class ViewMaterialsAction extends Action
|
||||
{
|
||||
public static function getDefaultName(): ?string
|
||||
{
|
||||
return 'viewMaterials';
|
||||
}
|
||||
|
||||
protected function setUp(): void
|
||||
{
|
||||
parent::setUp();
|
||||
|
||||
$this->label('Materi')
|
||||
->color(Color::Purple)
|
||||
->icon('heroicon-o-book-open')
|
||||
->link()
|
||||
->modalHeading('Materi Sesi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::TwoExtraLarge)
|
||||
->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.materials-modal', [
|
||||
'materials' => ClassSession::find($arguments['session'] ?? null, ['*'])?->materials()
|
||||
->latest()
|
||||
->get()
|
||||
->map(fn ($m) => (object) [
|
||||
'id' => $m->id,
|
||||
'title' => $m->title,
|
||||
'created_at_formatted' => $m->created_at?->translatedFormat('d F Y') ?? '-',
|
||||
]) ?? collect(),
|
||||
]));
|
||||
}
|
||||
}
|
||||
@ -9,13 +9,10 @@
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\GenerateSessionsAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ShareAssignmentAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ShareAttendanceAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAssignmentDetailAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAssignmentsAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewAttendanceAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewMaterialDetailAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\Actions\ViewMaterialsAction;
|
||||
use App\Filament\Resources\Learning\ClassSessions\ClassSessionResource;
|
||||
use App\Models\ClassSession;
|
||||
use App\Models\Course;
|
||||
use App\Models\Material;
|
||||
use App\Models\Student;
|
||||
use Filament\Actions\Action;
|
||||
use Filament\Actions\Concerns\InteractsWithActions;
|
||||
@ -28,6 +25,7 @@
|
||||
use Filament\Resources\Pages\Page;
|
||||
use Filament\Schemas\Components\Grid;
|
||||
use Filament\Schemas\Schema;
|
||||
use Filament\Support\Enums\Width;
|
||||
use Illuminate\Support\Collection;
|
||||
use Livewire\Attributes\Computed;
|
||||
|
||||
@ -152,7 +150,6 @@ protected function getActions(): array
|
||||
$this->editSessionAction(),
|
||||
$this->deleteSessionAction(),
|
||||
$this->viewMaterialDetailAction(),
|
||||
$this->viewAssignmentDetailAction(),
|
||||
];
|
||||
}
|
||||
|
||||
@ -168,17 +165,65 @@ public function shareAssignmentAction(): Action
|
||||
|
||||
public function viewAttendanceAction(): Action
|
||||
{
|
||||
return ViewAttendanceAction::make();
|
||||
return Action::make('viewAttendance')
|
||||
->label('Presensi')
|
||||
->color('success')
|
||||
->icon('heroicon-o-check-circle')
|
||||
->link()
|
||||
->modalHeading('Daftar Presensi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::TwoExtraLarge)
|
||||
->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.attendance-modal', [
|
||||
'attendances' => ClassSession::find($arguments['session'] ?? null, ['*'])?->attendances()->with('student')->latest('attended_at')->get() ?? collect(),
|
||||
]));
|
||||
}
|
||||
|
||||
public function viewMaterialsAction(): Action
|
||||
{
|
||||
return ViewMaterialsAction::make();
|
||||
return Action::make('viewMaterials')
|
||||
->label('Materi')
|
||||
->color('purple')
|
||||
->icon('heroicon-o-book-open')
|
||||
->link()
|
||||
->modalHeading('Materi Sesi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::TwoExtraLarge)
|
||||
->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.materials-modal', [
|
||||
'materials' => ClassSession::find($arguments['session'] ?? null, ['*'])?->materials()
|
||||
->latest()
|
||||
->get()
|
||||
->map(fn ($m) => (object) [
|
||||
'id' => $m->id,
|
||||
'title' => $m->title,
|
||||
'created_at_formatted' => $m->created_at?->translatedFormat('d F Y') ?? '-',
|
||||
]) ?? collect(),
|
||||
]));
|
||||
}
|
||||
|
||||
public function viewAssignmentsAction(): Action
|
||||
{
|
||||
return ViewAssignmentsAction::make();
|
||||
return Action::make('viewAssignments')
|
||||
->label('Tugas')
|
||||
->color('sky')
|
||||
->icon('heroicon-o-clipboard-document-list')
|
||||
->link()
|
||||
->modalHeading('Tugas Sesi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::TwoExtraLarge)
|
||||
->modalContent(fn (array $arguments) => view('filament.resources.learning.class-sessions.assignments-modal', [
|
||||
'assignments' => ClassSession::find($arguments['session'] ?? null, ['*'])?->assignments()
|
||||
->latest()
|
||||
->get()
|
||||
->map(fn ($a) => (object) [
|
||||
'id' => $a->id,
|
||||
'title' => $a->title,
|
||||
'type_label' => $a->type?->getLabel() ?? 'Tugas',
|
||||
'due_date_formatted' => $a->due_date?->translatedFormat('d F Y, H:i') ?? '-',
|
||||
]) ?? collect(),
|
||||
]));
|
||||
}
|
||||
|
||||
public function editSessionAction(): Action
|
||||
@ -193,11 +238,14 @@ public function deleteSessionAction(): Action
|
||||
|
||||
public function viewMaterialDetailAction(): Action
|
||||
{
|
||||
return ViewMaterialDetailAction::make();
|
||||
}
|
||||
|
||||
public function viewAssignmentDetailAction(): Action
|
||||
{
|
||||
return ViewAssignmentDetailAction::make();
|
||||
return Action::make('viewMaterialDetail')
|
||||
->record(fn (array $arguments) => Material::find($arguments['record'] ?? null, ['*']))
|
||||
->modalHeading('Detail Materi')
|
||||
->modalSubmitAction(false)
|
||||
->modalCancelActionLabel('Tutup')
|
||||
->modalWidth(Width::FourExtraLarge)
|
||||
->modalContent(fn (?Material $record) => $record ? view('filament.resources.learning.class-sessions.material-detail-modal', [
|
||||
'record' => $record,
|
||||
]) : null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -56,9 +56,6 @@
|
||||
<div class="flex flex-wrap items-center gap-3 px-4 py-3 border-t border-gray-100 dark:border-gray-700">
|
||||
{{ ($this->shareAttendanceAction)(['session' => $session->id]) }}
|
||||
{{ ($this->shareAssignmentAction)(['session' => $session->id]) }}
|
||||
{{ ($this->viewAttendanceAction)(['session' => $session->id]) }}
|
||||
{{ ($this->viewMaterialsAction)(['session' => $session->id]) }}
|
||||
{{ ($this->viewAssignmentsAction)(['session' => $session->id]) }}
|
||||
{{ ($this->editSessionAction)(['session' => $session->id]) }}
|
||||
{{ ($this->deleteSessionAction)(['session' => $session->id]) }}
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user