<?php
use \FileHosting\Models;
use \FileHosting\Helpers\Helper;

$app->get('/[upload]', function ($request, $response, $args) {
    $this->logger->info("Главная страница");
    $args['project_folder']=$this->settings['project_folder'];

    return $this->view->render($response, 'upload.html', $args);
})->setName('main');


$app->post('/upload', function ($request, $response, $args) {
    $this->logger->info("Кнопка: отправить файл");
    $args['project_folder']=$this->settings['project_folder'];

//Создаём объект FileModel
    $file=new Models\FileModel();

    $file->setName($_FILES['file_to_upload']['name']);
    $file->size=$_FILES['file_to_upload']['size'];
    $file->comment=$_POST['comment'];
 
//Копируем файл на сервер
    $args['status']=$this->filesFM->addFile($file,$this->settings['upload_folder']);  
//Записываем в БД
    if ($args['status']) {
        $this->filesGW->addFile($file);
    }

	//Представление
    return $this->view->render($response, 'upload.html', $args);
});


$app->get('/files_list', function ($request, $response, $args){
    $this->logger->info("Страница последних загрузок");
    $args['project_folder']=$this->settings['project_folder'];

    $args['upload_folder']=$this->settings['upload_folder'];
    $args['files']=$this->filesGW->getLastFiles(100);

    return $this->view->render($response, 'files_list.html', $args);
})->setName('files_list');



$app->get('/show_file/{id}', function ($request, $response, $args){
    $this->logger->info("Просмотр файла");
    $args['project_folder']=$this->settings['project_folder'];

    $args['upload_folder']=$this->settings['upload_folder'];
    $args['file']=$this->filesGW->getFile($args['id']);

    return $this->view->render($response, 'show_file.html', $args);
})->setName('show_file');





$app->get('/download/{id}', function ($request, $response, $args) {
    $this->logger->info("Загрузка файла");
    $args['project_folder']=$this->settings['project_folder'];
        
    $file=$this->filesGW->getFile($args['id']);

    $url=$this->settings['upload_folder'];
    $url.=$file->path;
    $url.=$file->name;

    $response = $response->withHeader('Content-Disposition', 'attachment');
    $response = $response->withHeader('Location', $url);
    return $this->view->render($response, 'download.html', $args);
})->setName('download');