<?php

/**
 * This file contains \QUI\Interview\Controls\IntervieweeData
 */

namespace QUI\Interview\Controls;

use QUI;
use QUI\Exception;

/**
 * Class IntervieweeData
 *
 * @author  Dominik Chrzanowski
 * @package quiqqer/interview
 *
 */
class IntervieweeData extends QUI\Control
{
    /**
     * constructor
     *
     * @param array $attributes
     */
    public function __construct($attributes = [])
    {
        // default options
        $this->setAttributes([
            'class'    => 'quiqqer-interview-control-interviewee',
            'template' => 'largeImageTop' // template
        ]);

        $this->addCSSFile(dirname(__FILE__).'/IntervieweeData.css');

        parent::__construct($attributes);

        $this->setAttribute('cacheable', 0);
    }

    /**
     * (non-PHPdoc)
     *
     * @see \QUI\Control::create()
     */
    public function getBody()
    {
        $Engine = QUI::getTemplateManager()->getEngine();
        $Site   = $this->getSite();

        if ($Site->getAttribute("type") !== 'quiqqer/blog:blog/entry' &&
            $Site->getAttribute("type") !== 'quiqqer/news:news/entry') {
            return '';
        }

        switch ($this->getAttribute('template')) {
            case 'largeImageLeft':
                $html = '/IntervieweeData.LargeImageLeft.html';
                break;
            case 'smallImageLeft':
                $html = '/IntervieweeData.SmallImageLeft.html';
                break;
            case 'largeImageTop':
            default:
                $html = '/IntervieweeData.LargeImageTop.html';
                break;
        }

        try {
            $intervieweeData = $this->getIntervieweeData();
        } catch (Exception $Exception) {
            QUI\System\Log::addInfo($Exception->getMessage());

            return '';
        }

        $Engine->assign([
            'this'           => $this,
            'name'           => $intervieweeData['name'],
            'additionalInfo' => $intervieweeData['additionalInfo'],
            'avatar'         => $intervieweeData['avatar'],
            'description'    => $intervieweeData['description']
        ]);

        $Engine->assign('controlTemplate', $Engine->fetch(dirname(__FILE__).$html));

        return $Engine->fetch(dirname(__FILE__).'/IntervieweeData.html');
    }

    /**
     * Get intrerviewee data
     *
     * @return array
     * @throws Exception
     */
    private function getIntervieweeData()
    {
        $Site = $this->getSite();

        return [
            'name'           => $Site->getAttribute('quiqqer.interview.settings.intervieweeData.name'),
            'additionalInfo' => $Site->getAttribute('quiqqer.interview.settings.intervieweeData.additionalInfo'),
            'avatar'         => $Site->getAttribute('quiqqer.interview.settings.intervieweeData.avatar'),
            'description'    => $Site->getAttribute('quiqqer.interview.settings.intervieweeData.description')
        ];
    }

    /**
     * @return mixed|QUI\Projects\Site
     *
     * @throws QUI\Exception
     */
    protected function getSite()
    {
        if ($this->getAttribute('Site')) {
            return $this->getAttribute('Site');
        }

        $Site = QUI::getRewrite()->getSite();

        $this->setAttribute('Site', $Site);

        return $Site;
    }
}