<?php
namespace App\Controller\admin;
use App\Service\Utils\Upload;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class UploadController extends AbstractController
{
/**
* @Security("is_granted('ROLE_RH')")
* @Route("/upload-file", name="upload-file")
* @param Request $request
*/
public function processFiles(Request $request,Upload $upload)
{
$type = $request->request->has('type') ? $request->request->get('type') : 'logo' ;
/* @var $file UploadedFile*/
$file = $request->files->get('filepond-'.$type);
if(is_array($file)){
$file = $file[0];
}
$uniqId = $upload->saveTmpFile($file);
return new Response($uniqId);
}
/**
* @Security("is_granted('ROLE_RH')")
* @Route("/upload-file/revert", name="upload-file-revert", methods={"DELETE"})
* @param Request $request
*/
public function revertFiles(Request $request,Upload $upload)
{
$uniqId =$request->getContent();
$upload->removeTmpDir($uniqId);
return new Response("");
}
/**
* @Security("is_granted('ROLE_RH')")
* @Route("/upload-file/restore/{source}", name="upload-file-restore", methods={"GET"})
* @param Request $request
*/
public function loadFiles(Request $request,$source)
{
$filePath = $this->getParameter('upload_tmp_directory') . '/' . $source . '/';
$name = "";
foreach (scandir($filePath) as $item) {
if ($item == '.' || $item == '..') {
continue;
}
$name = $item;
}
$filePath .= $name;
// check if file exists
$fs = new FileSystem();
if (!$fs->exists($filePath)) {
throw $this->createNotFoundException();
}
// load the file from the filesystem
$file = new File($filePath);
return $this->file($file);
}
/**
* @Security("is_granted('ROLE_RH')")
* @Route("/upload-file/load/logo/{source}", name="upload-file-restore-logo", methods={"GET"})
* @param Request $request
*/
public function restoreLogoFile(Request $request,$source)
{
$filePath = $this->getParameter('upload_logo_directory') . '/' . $source ;
// check if file exists
$fs = new FileSystem();
if (!$fs->exists($filePath)) {
throw $this->createNotFoundException();
}
// load the file from the filesystem
$file = new File($filePath);
return $this->file($file);
}
/**
* @Security("is_granted('ROLE_RH')")
* @Route("/upload-file/load/doc/{source}", name="upload-file-restore-doc", methods={"GET"})
* @param Request $request
*/
public function restoreDocFile(Request $request,$source)
{
$filePath = $this->getParameter('upload_doc_directory') . '/' . $source ;
// check if file exists
$fs = new FileSystem();
if (!$fs->exists($filePath)) {
throw $this->createNotFoundException();
}
// load the file from the filesystem
$file = new File($filePath);
return $this->file($file);
}
/**
* @Security("is_granted('ROLE_RH')")
* @Route("/upload-file/remove/{context}/{source}", name="upload-file-remove", methods={"DELETE"})
* @param Request $request
*/
public function removeFiles(Request $request,Upload $upload,$source,$context)
{
$filePath = $this->getParameter($context === 'doc' ? 'upload_doc_directory' : 'upload_logo_directory') . '/' . $source ;
$upload->removeFile($filePath);
return new JsonResponse('');
}
/**
* @Security("is_granted('ROLE_RH') or is_granted('ROLE_ADMIN')")
* @Route("/admin/dl/files/{type}", name="admin-dl-files")
*/
public function downloadDocuments(Request $request,$type,Upload $upload)
{
$filename = $request->query->get('filename');
$company = $request->query->get('company');
if ($company) {
$filePath = $upload->getDirectoryFile($type) . DIRECTORY_SEPARATOR . $company . DIRECTORY_SEPARATOR . $filename;
}
else{
$filePath = $upload->getDirectoryFile($type) . DIRECTORY_SEPARATOR . $filename;
}
$upload->getDirectoryFile($type);
// check if file exists
$fs = new FileSystem();
if (!$fs->exists($filePath)) {
throw $this->createNotFoundException();
}
// load the file from the filesystem
$file = new File($filePath);
return $this->file($file);
}
}