<?php

namespace Irstea\FileUploadBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
use Irstea\FileUploadBundle\Entity\UploadedFile;

use Pagerfanta\Adapter\DoctrineORMAdapter;
use Pagerfanta\Pagerfanta;

/**
 * UploadedFile controller.
 *
 * @Route("/files")
 */
class UploadedFileController extends Controller
{
    /**
     * Lists all UploadedFile entities.
     *
     * @Route("/", name="files")
     * @Method("GET")
     * @Template()
     */
    public function indexAction(Request $request)
    {
        $em = $this->getDoctrine()->getManager();

        $queryBuilder = $em->getRepository('IrsteaFileUploadBundle:UploadedFile')
            ->createQueryBuilder("u")
            ->orderBy("u.createdAt", "DESC");

        $pager = new Pagerfanta(new DoctrineORMAdapter($queryBuilder));
        $pager->setCurrentPage($request->query->get("page", 1));

        $uploadedFiles = $pager->getCurrentPageResults();

        return [
            'uploadedFiles' => $uploadedFiles,
            'pager' => $pager,
        ];
    }

    /**
     * Finds and displays a UploadedFile entity.
     *
     * @Route("/{id}", name="files_show")
     * @Method("GET")
     * @Template()
     */
    public function showAction(UploadedFile $uploadedFile)
    {

        return [
            'uploadedFile' => $uploadedFile,
        ];
    }

    /**
     * @param string $message
     * @param array $parameters
     */
    public function notice($message, array $parameters = [])
    {
        $this->get('monolog.logger.irstea_logger')->notice($message, $parameters);
    }
}