AutorÃa | Ultima modificación | Ver Log |
<?phpdeclare(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);}}