<?php

/**
 * Class DefaultController
 */
class DefaultController
{
    /**
     * The default index test controller
     *
     * @return string   HTML Code
     * @throws Exception
     */
    public function indexAction()
    {
        $view = new Template( 'start' );
        $Request = new Request();

        $room_code = mb_strtoupper( $Request->getVar( 'code', null, 'GET' ) );
        if( !empty( $room_code ) )
        {
            // Redirect to Join
            header( 'Location: ?a=joinFAQ&code=' . $room_code );
        }

        $view->set_placeholder( 'max_len', CODE_LENGTH );
        $view->set_placeholder( 'wasted_time', WASTED_TIME );
        $reason = $Request->getVar( 'rsn', false, 'GET' );
        if( $reason !== false )
        {
            $view->set_placeholder( 'error', $reason );
        }

        // Return the HTML Code to the index.php
	    return $view->getHtml();

    } # function indexAction()

    /**
     * @return string
     * @throws Exception
     */
    public function joinFAQAction()
    {
        $view = new Template( 'start' );
        $DefaultModel = new DefaultModel();

        $Request = new Request();

        $view->set_placeholder( 'max_len', CODE_LENGTH );
        $view->set_placeholder( 'wasted_time', WASTED_TIME );
        $room_code = mb_strtoupper( $Request->getVar( 'code', null, 'POST' ) );
        if( empty( $room_code ) )
        {
            $room_code = mb_strtoupper( $Request->getVar( 'code', null, 'GET' ) );
        }


        if( empty( $room_code ) && !isset( $room_code ) )
        {
            $view->set_placeholder( 'error', 'Room-Code is invalid!' );
            return $view->getHtml();
        }

        if( ( $room_id = $DefaultModel->checkCode( $room_code ) ) === false )
        {
            $view->set_placeholder( 'error', 'Room-Code is invalid!' );
            return $view->getHtml();
        }

        if( !$DefaultModel->joinRoom( $room_id ) )
        {
            $view->set_placeholder( 'error', 'An error occurred, please try again later!' );
            return $view->getHtml();
        }




        return $view->getHtml();

    }

    /**
     * @return string
     * @throws Exception
     */
    public function createFAQAction()
    {
        $view = new Template( 'start' );
        $DefaultModel = new DefaultModel();

        $Request = new Request();
        $view->set_placeholder( 'max_len', CODE_LENGTH );
        $view->set_placeholder( 'wasted_time', WASTED_TIME );
        $room_name = $Request->getVar( 'room-name', '', 'POST' );

        if( empty( $room_name ) || strlen( $room_name) > 15 || strlen( $room_name ) < 3 )
        {
            $view->set_placeholder( 'error', 'The Room-Name must contain 3-15 characters!' );
            return $view->getHtml();
        }

        if( ( $id = $DefaultModel->createRoom( $room_name ) ) === false )
        {
            $view->set_placeholder( 'error', 'An error occurred, please try again later!' );
            return $view->getHtml();
        }

        $DefaultModel->joinRoom( $id );

        return $view->getHtml();
    }


} # class