<?php

class DashboardController extends Zend_Controller_Action
{

    public function init()
    {
        $ajaxContext = $this->_helper->getHelper('AjaxContext');
        $ajaxContext->addActionContext('switch-source', 'json')
                    ->addActionContext('disconnect-source', 'json')
                    ->initContext();
    }

    public function indexAction()
    {
        // action body
    }
    
    public function disconnectSourceAction(){
        $request = $this->getRequest();
        $sourcename = $request->getParam('sourcename');
        
        $userInfo = Zend_Auth::getInstance()->getStorage()->read();
        $user = new Application_Model_User($userInfo->id);
        
        $show = Application_Model_Show::GetCurrentShow();
        
        $show_id = isset($show['id'])?$show['id']:0;
        
        $source_connected = Application_Model_Preference::GetSourceStatus($sourcename);
        
        if($user->canSchedule($show_id) && $source_connected){
            $data = array("sourcename"=>$sourcename);
            Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data);
        }else{
            if($source_connected){
                $this->view->error = "You don't have permission to disconnect source.";
            }else{
                $this->view->error = "There is no source connected to this input.";
            }
        }
    }
    
    public function switchSourceAction(){
        $request = $this->getRequest();
        $sourcename = $this->_getParam('sourcename');
        $current_status = $this->_getParam('status');
        
        $userInfo = Zend_Auth::getInstance()->getStorage()->read();
        $user = new Application_Model_User($userInfo->id);
        
        $show = Application_Model_Show::GetCurrentShow();
        $show_id = isset($show[0]['id'])?$show[0]['id']:0;
        
        $source_connected = Application_Model_Preference::GetSourceStatus($sourcename);
        if($user->canSchedule($show_id) && ($source_connected || $sourcename == 'scheduled_play' || $current_status == "on")){
        
            $change_status_to = "on";
            
            if(strtolower($current_status) == "on"){
                $change_status_to = "off";
            }
            
            $data = array("sourcename"=>$sourcename, "status"=>$change_status_to);
            Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data);
            if(strtolower($current_status) == "on"){
                Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off");
                $this->view->status = "OFF";
                
                //Log table updates
                Application_Model_LiveLog::SetEndTime($sourcename == 'scheduled_play'?'S':'L',
                                                      new DateTime("now", new DateTimeZone('UTC')));
            }else{
                Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on");
                $this->view->status = "ON";
                
                //Log table updates
                Application_Model_LiveLog::SetNewLogTime($sourcename == 'scheduled_play'?'S':'L',
                                                         new DateTime("now", new DateTimeZone('UTC')));
            }
        }
        else{
            if($source_connected){
                $this->view->error = "You don't have permission to switch source.";
            }else{
                if($sourcename == 'scheduled_play'){
                    $this->view->error = "You don't have permission to disconnect source.";
                }else{
                    $this->view->error = "There is no source connected to this input.";
                }
            }
        }
    }
    
    public function switchOffSource(){
        
    }
    
    public function streamPlayerAction()
    {
        global $CC_CONFIG;
        
        $request = $this->getRequest();
        $baseUrl = $request->getBaseUrl();
        
        $this->view->headLink()->appendStylesheet($baseUrl.'/js/jplayer/skin/jplayer.blue.monday.css?'.$CC_CONFIG['airtime_version']);
        $this->_helper->layout->setLayout('bare');

        $logo = Application_Model_Preference::GetStationLogo();
        if($logo){
            $this->view->logo = "data:image/png;base64,$logo";
        } else {
            $this->view->logo = "$baseUrl/css/images/airtime_logo_jp.png";
        }
    }

    public function helpAction()
    {
        // action body
    }

    public function aboutAction()
    {
        $this->view->airtime_version = Application_Model_Preference::GetAirtimeVersion();
    }

}