<?php

class PancekKomponenTemplateController extends BaseController
{
    public function download($uuid)
    {
        $service = new AttachmentService($this->shared, $this->minio);

        return $service->downloadUsingDualS3(
            PancekKomponenTemplate::DOCUMENT_DIR . DIRECTORY_SEPARATOR,
            $uuid,
            true,
            LogAttachments::PancekKomponenTemplate
        );
    }

    public function upload()
    {
        $this->checkOneOfScopes(['admin.view', 'pancek.admin']);

        $postParams = $this->request->getPost();

        $this->validate($postParams, [
            'keterangan' => ['validators' => []],
            'metadata' => ['validators' => []]
        ]);

        $service = new AttachmentService($this->shared, $this->minio);

        if ($this->minio->isSecondaryS3Available()) {
            $result = $service->uploadUsingSecondaryS3(
                getenv("FILESYSTEM_CLOUD"),
                [
                    'allowed-types' => [
                        "application/pdf",
                        "application/msword",
                        "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
                    ],
                    'max-file-count' => 5,
                    'max-size-kb' => 10240
                ],
                ['tipe' => Attachments::TIPE_PUBLIC],
                $this->request,
                PancekKomponenTemplate::DOCUMENT_DIR . DIRECTORY_SEPARATOR
            );
        } else {
            $result = $service->upload(
                getenv("FILESYSTEM_CLOUD"),
                [
                    'allowed-types' => [
                        "application/pdf",
                        "application/msword",
                        "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
                    ],
                    'max-file-count' => 5,
                    'max-size-kb' => 10240
                ],
                ['tipe' => Attachments::TIPE_PUBLIC],
                $this->request,
                PancekKomponenTemplate::DOCUMENT_DIR . DIRECTORY_SEPARATOR
            );
        }

        return new CollectionPaginatedResponse($result);
    }
}
