<?php


class FaqController extends DefaultController
{
    public function indexAction()
    {
        $view = new Template( 'faq' );
        $FAQModel = new FaqModel();
        $room = $FAQModel->getRoom();

        $view->set_placeholder( 'room_name', $room['name'] );
        $view->set_placeholder( 'room_code', $room['code'] );
        $view->set_placeholder( 'wasted_time', WASTED_TIME );

        return $view->getHtml();
    }

    public function getQuestionsAction()
    {
        $view = new Apitemplate();
        $FAQModel = new FaqModel();
        $room = $FAQModel->getRoom();

        $questions = $FAQModel->getQuestions( $room['id'] );

        $view->setResponse( array( 'questions' => $questions ) );

        return $view->getResponse();
    }

    public function getQuestionAction()
    {
        $view = new Apitemplate();
        $FAQModel = new FaqModel();
        $room = $FAQModel->getRoom();

        $question_id = Api::getVar( 'question_id' );
        if( empty( $question_id ) || !isset( $question_id ) )
        {
            $view->setSuccess( false );
            $view->setHeaderCode( 903 );
            return $view->getResponse();
        }

        if( ( $question = $FAQModel->getQuestion( $question_id ) ) === false )
        {
            $view->setSuccess( false );
            $view->setHeaderCode( 906 );
            return $view->getResponse();
        }
        $view->setResponse( $question );
        $view->setSuccess( true );

        return $view->getResponse();
    }

    public function addQuestionAction()
    {
        $view = new Apitemplate();
        $FAQModel = new FaqModel();
        $room = $FAQModel->getRoom();
        $question = Api::getVar( 'question' );

        if( empty( $question ) || strlen( $question ) > 500 || strlen( $question ) < 10 )
        {
            $view->setSuccess( false );
            $view->setHeaderCode( 903 );
            return $view->getResponse();
        }

        try {
            $FAQModel->addQuestion( $room['id'], $question );
        } catch( Exception $e )
        {
            $view->setSuccess( false );
            $view->setHeaderCode( 901 );
            $view->setResponse( array( $e->getMessage() ));
            return $view->getResponse();
        }

        $view->setSuccess( true );

        return $view->getResponse();
    }

    public function addAnswerAction()
    {
        $view = new Apitemplate();
        $FAQModel = new FaqModel();
        $room = $FAQModel->getRoom();
        $question_id = Api::getVar( 'question_id' );
        $answer = Api::getVar( 'answer' );

        if( !$FAQModel->checkUserIsRoomOwner( $room ) )
        {
            $view->setSuccess( false );
            $view->setHeaderCode( 905 );
            return $view->getResponse();
        }

        try {
            $FAQModel->addAnswer( $question_id, $answer );
        } catch( Exception $e )
        {
            $view->setSuccess( false );
            $view->setHeaderCode( 902 );
            return $view->getResponse();
        }

        $view->setSuccess( true );

        return $view->getResponse();
    }


}