AutorÃa | Ultima modificación | Ver Log |
<?php
declare(strict_types=1);
namespace LeadersLinked\Mapper;
use Laminas\Db\Adapter\AdapterInterface;
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
use LeadersLinked\Mapper\Common\MapperCommon;
use LeadersLinked\Model\Meeting;
class MeetingsMapper extends MapperCommon {
const __TABLE = 'tbl_meetings';
/**
*
* @var MeetingsMapper
*/
private static $_instance;
/**
*
* @param AdapterInterface $adapter
*/
private function __construct($adapter)
{
parent::__construct($adapter);
}
/**
*
* @param AdapterInterface $adapter
* @return MeetingsMapper
*/
public static function getInstance($adapter)
{
if (self::$_instance == null) {
self::$_instance = new MeetingsMapper($adapter);
}
return self::$_instance;
}
/**
*
* @return Meeting[]
*/
public function fetchAllMeetings()
{
$prototype = new Meeting();
$select = $this->sql->select(self::__TABLE);
return $this->executeFetchAllObject($select, $prototype);
}
/**
*
* @return Meeting[]
*/
public function fetchAllPendingMeetingsWithNoBbbId()
{
$prototype = new Meeting;
$select = $this->sql->select(self::__TABLE);
$select->where->equalTo('status', Meeting::STATUS_PENDING);
$select->where->isNull('bbb_id');
return $this->executeFetchAllObject($select, $prototype);
}
/**
*
* @param int $user_id
* @return Meeting[]
*/
public function fetchAllMeetingsCreatedByUserId($user_id)
{
$prototype = new Meeting();
$select = $this->sql->select(self::__TABLE);
$select->where->equalTo('user_id', $user_id);
return $this->executeFetchAllObject($select, $prototype);
}
/**
*
* @param int $user_id
* @return Meeting[]
*/
public function fetchAllNotCancelledMeetingsCreatedByUserId($user_id)
{
$prototype = new Meeting();
$select = $this->sql->select(self::__TABLE);
$select->where->equalTo('user_id', $user_id);
$select->where->notEqualTo('status', Meeting::STATUS_CANCELLED);
return $this->executeFetchAllObject($select, $prototype);
}
/**
*
* @param int $meetingId
* @return Meeting
*/
public function fetchMeetingById($meetingId)
{
$prototype = new Meeting();
$select = $this->sql->select(self::__TABLE);
$select->where->equalTo('id', $meetingId);
return $this->executeFetchOneObject($select, $prototype);
}
/**
*
* @param int $meetingId
* @return Meeting
*/
public function fetchMeetingIfNotCancelledById($meetingId)
{
$prototype = new Meeting();
$select = $this->sql->select(self::__TABLE);
$select->where->equalTo('id', $meetingId);
$select->where->notEqualTo('status', Meeting::STATUS_CANCELLED);
return $this->executeFetchOneObject($select, $prototype);
}
/**
*
* @param Meeting $meeting
* @return boolean
*/
public function insert($meeting) {
$hydrator = new ObjectPropertyHydrator();
$values = $hydrator->extract($meeting);
$values = $this->removeEmpty($values);
$insert = $this->sql->insert(self::__TABLE);
$insert->values($values);
$result = $this->executeInsert($insert);
if ($result) {
$meeting->id = $this->lastInsertId;
}
return $result;
}
/**
*
* @param int $meetingId
* @return boolean
*/
public function changeMeetingStatusToDeleteddById($meetingId)
{
$update = $this->sql->update(self::__TABLE);
$update->set(['status' => Meeting::STATUS_DELETED]);
$update->where->equalTo('id', $meetingId);
return $this->executeUpdate($update);
}
/**
*
* @param int $meetingId
* @return boolean
*/
public function cancelMeetingById($meetingId)
{
$update = $this->sql->update(self::__TABLE);
$update->set(['status' => Meeting::STATUS_CANCELLED]);
$update->where->equalTo('id', $meetingId);
return $this->executeUpdate($update);
}
/**
*
* @param int $meetingId
* @return boolean
*/
public function changeMeetingStatusToStartedById($meetingId)
{
$update = $this->sql->update(self::__TABLE);
$update->set(['status' => Meeting::STATUS_STARTED]);
$update->where->equalTo('id', $meetingId);
return $this->executeUpdate($update);
}
/**
*
* @param string $bbb_id
* @param string $attendee_password
* @param string $moderator_password
* @param int $meeting_id
* @return boolean
*/
public function asignBigBlueButtonInfoToMeetingId($bbb_id, $attendee_password, $moderator_password, $meeting_id)
{
$update = $this->sql->update(self::__TABLE);
$update->set([
'bbb_id' => $bbb_id,
'attendee_password' => $attendee_password,
'moderator_password' => $moderator_password
]);
$update->where->equalTo('id', $meeting_id);
return $this->executeUpdate($update);
}
public function fetchBbbIdFromMeetingId($id) {
$prototype = new Meeting;
$select = $this->sql->select(self::__TABLE);
$select->columns(['bbb_id']);
$select->where->equalTo('id', $id);
return $this->executeFetchAllObject($select, $prototype);
}
public function setMeetingRecordingToReadyStatus ($meetingId) {
$update = $this->sql->update(self::__TABLE);
$update->set(['recording_ready' => Meeting::RECORDING_READY]);
$update->where->equalTo('id', $meetingId);
return $this->executeUpdate($update);
}
public function setMeetingReminderToSent ($meetingId) {
$update = $this->sql->update(self::__TABLE);
$update->set(['reminder_sent' => Meeting::REMINDER_SENT]);
$update->where->equalTo('id', $meetingId);
return $this->executeUpdate($update);
}
public function setMeetingUrlById ($meetingUrl, $meetingId) {
$update = $this->sql->update(self::__TABLE);
$update->set(['meeting_url' => $meetingUrl]);
$update->where->equalTo('id', $meetingId);
return $this->executeUpdate($update);
}
}