<?php

namespace classes;

use interfaces\minio_wash_certificates_i;
use traits\minio_t;

class wash_certificate_store implements minio_wash_certificates_i
{
    use minio_t;

    public function __construct()
    {
        self::setBucket('truckwashdev'); // Change this to washcertificates when in production
    }

    /**
     * @inheritDoc
     */
    public function washCertificateExists(string $certificate_id): bool
    {
        // Check if the file exists
        $objects = self::getS3Client()->listObjects([
            'Bucket' => self::getBucket(),
            'Prefix' => 'wash_certificate_' . $certificate_id . '.pdf'
        ]);
        return count($objects['Contents'] ?? []) > 0;
    }

    public function getWashCertificateDownload(int $id): string
    {
        return self::getPresignedUrl('wash_certificate_' . $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);
    }
}