Compare commits

..

3 Commits

6 changed files with 154 additions and 9 deletions

View File

@ -66,10 +66,6 @@ protected function setUp(): void
return false; return false;
} }
if (! $record->taskAssignment()->exists()) {
return false;
}
$cooperationMedia = $record->cooperationMedia() $cooperationMedia = $record->cooperationMedia()
->whereHas('partnerMedia.company', function (Builder $query): void { ->whereHas('partnerMedia.company', function (Builder $query): void {
$query->where('user_id', auth()->id()); $query->where('user_id', auth()->id());

View File

@ -59,10 +59,6 @@ protected function setUp(): void
return false; return false;
} }
if (! $record->taskAssignment()->exists()) {
return false;
}
$cooperationMedia = $record->cooperationMedia() $cooperationMedia = $record->cooperationMedia()
->whereHas('partnerMedia.company', function ($query) { ->whereHas('partnerMedia.company', function ($query) {
$query->where('user_id', auth()->id()); $query->where('user_id', auth()->id());

View File

@ -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);
}
}

View File

@ -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]));
} }
} }

View File

@ -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(),

View File

@ -11,6 +11,9 @@
use App\Filament\Support\CheerfulNotification; use App\Filament\Support\CheerfulNotification;
use Filament\Actions\BulkActionGroup; use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction; use Filament\Actions\DeleteBulkAction;
use Filament\Forms\Components\DatePicker;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\RelationManagers\RelationManager;
use Filament\Support\Icons\Heroicon; use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextColumn;
@ -25,6 +28,11 @@ class TaskAssignmentRelationManager extends RelationManager
protected static bool $shouldSkipAuthorization = true; protected static bool $shouldSkipAuthorization = true;
public function isReadOnly(): bool
{
return false;
}
public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool
{ {
if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) { if (auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value)) {
@ -64,6 +72,35 @@ public function table(Table $table): Table
->headerActions([ ->headerActions([
CreateAction::make() CreateAction::make()
->label('Buat Media Order') ->label('Buat Media Order')
->modalWidth('md')
->schema([
DatePicker::make('start_date')
->label('Tanggal Mulai')
->native(false)
->displayFormat('l, d F Y')
->required(),
DatePicker::make('end_date')
->label('Tanggal Selesai')
->native(false)
->displayFormat('l, d F Y')
->required()
->afterOrEqual('start_date'),
TextInput::make('report_amount')
->label('Jumlah Bukti Tayang')
->numeric()
->minValue(1)
->required()
->autocomplete(false),
Textarea::make('task_description')
->label('Deskripsi Tugas')
->required()
->rows(4)
->placeholder('...')
->autocomplete(false),
])
->visible(function (): bool { ->visible(function (): bool {
$user = auth()->user(); $user = auth()->user();
@ -93,6 +130,35 @@ public function table(Table $table): Table
]) ])
->recordActions([ ->recordActions([
EditAction::make() EditAction::make()
->modalWidth('md')
->schema([
DatePicker::make('start_date')
->label('Tanggal Mulai')
->native(false)
->displayFormat('l, d F Y')
->required(),
DatePicker::make('end_date')
->label('Tanggal Selesai')
->native(false)
->displayFormat('l, d F Y')
->required()
->afterOrEqual('start_date'),
TextInput::make('report_amount')
->label('Jumlah Bukti Tayang')
->numeric()
->minValue(1)
->required()
->autocomplete(false),
Textarea::make('task_description')
->label('Deskripsi Tugas')
->required()
->rows(4)
->placeholder('...')
->autocomplete(false),
])
->successNotification( ->successNotification(
fn () => CheerfulNotification::success( fn () => CheerfulNotification::success(
CheerfulNotification::getByKey('cooperation.assignment_updated'), CheerfulNotification::getByKey('cooperation.assignment_updated'),