AutorÃa | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace LeadersLinked\Mapper;use Laminas\Db\Adapter\AdapterInterface;use LeadersLinked\Mapper\Common\MapperCommon;use LeadersLinked\Hydrator\ObjectPropertyHydrator;use LeadersLinked\Model\MeetingMember;class MeetingMemberMapper extends MapperCommon {const __TABLE = 'tbl_meeting_members';/**** @var MeetingMemberMapper*/private static $_instance;/**** @param AdapterInterface $adapter*/private function __construct($adapter){parent::__construct($adapter);}/**** @param AdapterInterface $adapter* @return MeetingMemberMapper*/public static function getInstance($adapter){if (self::$_instance == null) {self::$_instance = new MeetingMemberMapper($adapter);}return self::$_instance;}public function fetchAllUsersInvitedByMeetingId($meetingId){$prototype = new MeetingMember;$select = $this->sql->select(self::__TABLE);$select->where->equalTo('meeting_id', $meetingId);return $this->executeFetchAllObject($select, $prototype);}public function fetchAllAcceptedMembersByMeetingId($meeting_id){$prototype = new MeetingMember;$select = $this->sql->select(self::__TABLE);$select->where->equalTo('meeting_id', $meeting_id);$select->where->equalTo('action', MeetingMember::STATUS_ACCEPTED);return $this->executeFetchAllObject($select, $prototype);}public function fetchAllMeetingsAUserWasInvitedByUserId($userId){$prototype = new MeetingMember;$select = $this->sql->select(self::__TABLE);$select->where->equalTo('user_id', $userId);return $this->executeFetchAllObject($select, $prototype);}public function fetchAllNotCancelledMeetingsAUserWasInvitedByUserId($userId){$prototype = new MeetingMember;$select = $this->sql->select(self::__TABLE);$select->where->equalTo('user_id', $userId);$select->where->notEqualTo('action', MeetingMember::ACTION_DECLINED);return $this->executeFetchAllObject($select, $prototype);}public function fetchUserRoleForAMeeting($user_id, $meeting_id){$prototype = new MeetingMember;$select = $this->sql->select(self::__TABLE);$select->columns(['member_role']);$select->where->equalTo('user_id', $user_id);$select->where->equalTo('meeting_id', $meeting_id);return $this->executeFetchAllObject($select, $prototype);}public function insert($member){$hydrator = new ObjectPropertyHydrator();$values = $hydrator->extract($member);$values = $this->removeEmpty($values);$insert = $this->sql->insert(self::__TABLE);$insert->values($values);$result = $this->executeInsert($insert);if ($result) {$member->id = $this->lastInsertId;}return $result;}public function updateMeetingMemberToAcceptedStatusById($id){$update = $this->sql->update(self::__TABLE);$update->set(['action' => MeetingMember::STATUS_ACCEPTED,'joined_on' => date('Y-m-d\TH:i', time())]);$update->where->equalTo('id', $id);return $this->executeUpdate($update);}public function deleteAllMembersFromMeetingByMeetingId($meetingId){$delete = $this->sql->delete(self::__TABLE);$delete->where->equalTo('meeting_id', $meetingId);return $this->executeDelete($delete);}public function declineMeetingById($id){$update = $this->sql->update(self::__TABLE);$update->set(['action' => MeetingMember::ACTION_DECLINED]);$update->where->equalTo('id', $id);return $this->executeUpdate($update);}}