diff --git a/app/Console/Commands/MigrateMediaCooperationCommand.php b/app/Console/Commands/MigrateMediaCooperationCommand.php index 12229a0..d4b61b2 100644 --- a/app/Console/Commands/MigrateMediaCooperationCommand.php +++ b/app/Console/Commands/MigrateMediaCooperationCommand.php @@ -278,7 +278,7 @@ private function importOfferFile(int $proposalId, object $legacy): void } // Adjust path based on where these files are stored in S3 - $sourcePath = 'old-data/proposals/'.$legacyPath; + $sourcePath = 'old-data/mediacooperations/'.$legacyPath; $fileName = basename($sourcePath); $legacyDir = dirname($sourcePath); @@ -286,7 +286,7 @@ private function importOfferFile(int $proposalId, object $legacy): void 'model_type' => CooperationProposal::class, 'model_id' => $proposalId, 'uuid' => (string) Str::uuid(), - 'collection_name' => 'proposals', + 'collection_name' => 'cooperations', 'name' => pathinfo($fileName, PATHINFO_FILENAME), 'file_name' => $fileName, 'mime_type' => $this->guessMime($fileName), @@ -295,8 +295,9 @@ private function importOfferFile(int $proposalId, object $legacy): void 'size' => 0, 'manipulations' => '[]', 'custom_properties' => json_encode([ - 'feature' => 'proposals', + 'feature' => 'cooperations', 'date' => Carbon::parse($legacy->created_at ?? now())->toDateString(), + 'doc_type' => 'proposal-attachment', 'legacy_dir' => $legacyDir, ]), 'generated_conversions' => '[]', diff --git a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php index ae8df56..29e3956 100644 --- a/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php +++ b/app/Filament/Resources/Manage/Cooperations/RelationManagers/CooperationProposalRelationManager.php @@ -155,11 +155,53 @@ public function infolist(Schema $infolist): Schema ->label('Deskripsi') ->columnSpanFull(), - PdfViewerEntry::make('proposal_attachment') + PdfViewerEntry::make('proposal_attachment_pdf') ->label('Lampiran Proposal') - ->getStateUsing(fn (CooperationProposal $record): ?string => optional($record->getMedia('cooperations')->where('custom_properties.doc_type', 'proposal-attachment')->sortByDesc('created_at')->first())->getPathRelativeToRoot()) + ->visible(function (CooperationProposal $record): bool { + $media = $record->getMedia('cooperations')->where('custom_properties.doc_type', 'proposal-attachment')->sortByDesc('created_at')->first(); + + return $media && str_contains($media->mime_type ?? '', 'pdf'); + }) + ->getStateUsing(fn (CooperationProposal $record): ?string => optional($record->getMedia('cooperations')->where('custom_properties.doc_type', 'proposal-attachment')->sortByDesc('created_at')->first())->getUrl()) ->disk(config('filesystems.default')), + TextEntry::make('proposal_attachment_image') + ->label('Lampiran Proposal') + ->html() + ->visible(function (CooperationProposal $record): bool { + $media = $record->getMedia('cooperations')->where('custom_properties.doc_type', 'proposal-attachment')->sortByDesc('created_at')->first(); + + return $media && str_contains($media->mime_type ?? '', 'image'); + }) + ->getStateUsing(function (CooperationProposal $record): string { + $media = $record->getMedia('cooperations')->where('custom_properties.doc_type', 'proposal-attachment')->sortByDesc('created_at')->first(); + + if (! $media) { + return ''; + } + + $url = $media->getUrl(); + $downloadUrl = $url; + + if (in_array($media->disk, ['s3', 'minio'])) { + $downloadUrl = $media->getTemporaryUrl(now()->addMinutes(30), '', [ + 'ResponseContentDisposition' => 'attachment; filename="'.$media->file_name.'"', + ]); + } + + $downloadLink = ' + + Unduh Dokumen + '; + + return '