Files
api/services/nginx/app/classes/invoice_store.php
T

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