<?php
namespace JExtstore\Component\JChat\Site\Model;
/** 
 * @package JCHAT::FORM::components::com_jchat
 * @subpackage models
 * @author Joomla! Extensions Store
 * @Copyright (C) 2015 - Joomla! Extensions Store
 * @license GNU/GPLv2 http://www.gnu.org/licenses/gpl-2.0.html   
 */
defined( '_JEXEC' ) or die( 'Restricted access' );
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use JExtstore\Component\JChat\Administrator\Framework\Model as JChatModel;
use JExtstore\Component\JChat\Administrator\Framework\Helpers\Users as JChatHelpersUsers;

/**
 * Group users chat model
 * 
 * @package JCHAT::FORM::components::com_jchat
 * @subpackage models
 * @since 1.0
 */ 
class FormModel extends JChatModel {
	/**
	 * Private view params
	 *
	 * @access private
	 * @var object
	 */
	private $cparams;
	
	/**
	 * Main get data method
	 *
	 * @access public
	 * @return Object[]
	 */
	public function getData(): array {
		$return = [];
		
		$data = new \stdClass();
		
		// Get current guest user name
		$data->guestName = JChatHelpersUsers::generateRandomGuestNameSuffix(session_id(), $this->cparams);
		
		// Get meeting details
		if($meetingHash = $this->getState('meeting_hash')) {
			$meetingQuery = "SELECT" .
							"\n " . $this->dbInstance->quoteName('hash') . "," .
							"\n " . $this->dbInstance->quoteName('name') . "," .
							"\n " . $this->dbInstance->quoteName('description') . "," .
							"\n " . $this->dbInstance->quoteName('participants') . "," .
							"\n " . $this->dbInstance->quoteName('start_datetime') . "," .
							"\n " . $this->dbInstance->quoteName('end_datetime') .
							"\n FROM " . $this->dbInstance->quoteName('#__jchat_meetings') .
							"\n WHERE" .
							"\n " . $this->dbInstance->quoteName('hash') . " = " . $this->dbInstance->quote($meetingHash) .
							"\n AND " . $this->dbInstance->quoteName('published') . " = 1";
			$data->meetingObject = $this->dbInstance->setQuery($meetingQuery)->loadObject();
		}
		
		$return[] = $data;
		return $return;
	}
	
	/**
	 * Class constructor
	 * @access public
	 * @param Object& $wpdb
	 * @param Object& $userObject
	 * @return Object &
	 */
	public function __construct($config = array(), MVCFactoryInterface $factory = null) {
		// Parent model construct
		parent::__construct( $config, $factory );
		
		// Component config
		$this->cparams = $this->getComponentParams();
		$this->setState('cparams', $this->cparams);
	}
}