55 lines
1.3 KiB
PHP
55 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace classes;
|
|
|
|
use interfaces\minio_invoices_i;
|
|
use traits\minio_t;
|
|
|
|
class invoice_store implements minio_invoices_i
|
|
{
|
|
use minio_t;
|
|
|
|
public function __construct()
|
|
{
|
|
self::setBucket('invoices'); // Change the bucket to invoices
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function invoice_exists(int $invoice_id): bool
|
|
{
|
|
// Check if the file exists
|
|
$objects = self::getS3Client()->listObjects([
|
|
'Bucket' => self::getBucket(),
|
|
'Prefix' => 'invoice_' . $invoice_id . '.pdf'
|
|
]);
|
|
return count($objects['Contents'] ?? []) > 0;
|
|
}
|
|
|
|
public function getInvoiceDownloadUrl(int|string $id): string
|
|
{
|
|
return self::getPresignedUrl('invoice_' . $id . '.pdf');
|
|
}
|
|
|
|
/**
|
|
* @param string $file
|
|
* @return string The path to the downloaded file
|
|
*/
|
|
public function download(string $file): string
|
|
{
|
|
$path = '/tmp/' . $file;
|
|
$result = self::getS3Client()->getObject([
|
|
'Bucket' => self::getBucket(),
|
|
'Key' => $file,
|
|
'SaveAs' => $path
|
|
]);
|
|
return $path;
|
|
}
|
|
|
|
public function isFileInStore(string $file): bool
|
|
{
|
|
return self::getS3Client()->doesObjectExist(self::getBucket(), $file);
|
|
}
|
|
}
|