label('Bayar') ->icon(Heroicon::OutlinedCreditCard) ->color('success') ->visible(fn (CooperationMedia $record): bool => $record->cooperation->status === CooperationStatus::PAYMENT && ! $record->payment()->exists() && $record->status === ApprovalStatus::ACCEPTED) ->schema([ TextInput::make('amount') ->label('Nominal Pembayaran') ->placeholder('1,000,000') ->autocomplete(false) ->autofocus() ->required() ->mask(RawJs::make('$money($input)')) ->prefix('Rp'), SpatieMediaLibraryFileUpload::make('payment_proof') ->label('Bukti Pembayaran') ->disk(config('filesystems.default')) ->acceptedFileTypes(['image/*']) ->maxSize(1024 * 3) ->collection('cooperations') ->customProperties(fn (): array => [ 'feature' => 'cooperations', 'date' => now()->toDateString(), 'doc_type' => 'payment-proof', ]) ->image() ->required(), Textarea::make('description') ->label('Keterangan') ->placeholder('...') ->autocomplete(false), ]) ->action(function (CooperationMedia $record, array $data): void { $record->payment()->create([ 'amount' => str_replace(['Rp ', ','], '', $data['amount']), 'description' => $data['description'], 'payment_date' => now(), ]); CheerfulNotification::success( CheerfulNotification::getMessage('Pembayaran Berhasil! πŸ’Έβœ¨', 'Pembayaran Berhasil Dicatat'), CheerfulNotification::getMessage("Pembayaran untuk {$record->partnerMedia->name} telah berhasil dicatat.", "Proses pembayaran untuk {$record->partnerMedia->name} telah berhasil diselesaikan.") )->send(); $partnerUser = $record->partnerMedia->company?->user; if ($partnerUser) { $partnerUser->notify(new BroadcastNotification([ 'title' => CheerfulNotification::getMessage('Pembayaran Telah Dikirim! πŸ’Έβœ¨', 'Pembayaran Kerja Sama Telah Dikirim'), 'body' => CheerfulNotification::getMessage("Halo! Pembayaran untuk kerja sama \"{$record->cooperation->title}\" telah berhasil dikirim oleh Admin. Silakan cek detailnya ya! 😊", "Admin telah mengirimkan pembayaran untuk kerja sama \"{$record->cooperation->title}\". Silakan periksa detail transaksi Anda."), 'action' => [ Action::make('view') ->label('Lihat') ->url(CooperationResource::getUrl('view', ['record' => $record->cooperation_id, 'relation' => 0])), ], ])); } }) ->modalWidth(Width::Large); } }