/**
  * @param bool $confirm
  * @param $lectureId
  * @param $speakerId
  * @return ServiceResponse
  */
 public function replyToSpeakerInvitation(bool $confirm, integer $lectureId, integer $speakerId) : ServiceResponse
 {
     $lecture = $this->dbContext->getLecturesRepository()->filterById(" = {$lectureId}")->findOne();
     $speaker = $this->dbContext->getUsersRepository()->filterById(" = {$speakerId}")->findOne();
     if ($lecture->getId() == null) {
         return new ServiceResponse(404, "Lecture not found.");
     }
     if ($speaker->getId() == null) {
         return new ServiceResponse(404, "Speaker not found.");
     }
     $invitation = $this->dbContext->getSpeakerInvitationsRepository()->filterByLectureId(" = {$lectureId}")->filterBySpeakerId(" = {$speakerId}")->findOne();
     if ($invitation->getId() == null) {
         return new ServiceResponse(404, "Invitation not found.");
     }
     $lectureStartDate = $lecture->getStartDate();
     $lectureEndDate = $lecture->getEndDate();
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $statement = $db->prepare($this::CHECK_SPEAKER_AVAILABILITY);
     $statement->execute([$speakerId, $lectureStartDate, $lectureStartDate, $lectureEndDate, $lectureEndDate]);
     if ($statement->rowCount() > 0) {
         return new ServiceResponse(1, "The hall is busy at this time. Request is denied.");
     }
     if ($confirm) {
         $invitation->setStatus(1);
         $this->dbContext->saveChanges();
         return new ServiceResponse(null, "Invitation was confirmed.");
     } else {
         $invitation->setStatus(2);
         $lecture->setSpeaker_Id(null);
         $this->dbContext->saveChanges();
         return new ServiceResponse(null, "Invitation was rejected.");
     }
 }
 public function getConferenceDetails(integer $conferenceId) : ServiceResponse
 {
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $statement = $db->prepare("select count(LectureId) as 'count' from lecturesParticipants where LectureId = ?");
     $conference = $this->dbContext->getConferencesRepository()->filterById(" = {$conferenceId}")->findOne();
     if ($conference->getId() == null) {
         return new ServiceResponse(1, "Conference not found.");
     }
     $venueId = $conference->getVenue_Id();
     $venue = $this->dbContext->getVenuesRepository()->filterById(" = {$venueId}")->findOne()->getTitle();
     $ownerId = $conference->getOwnerId();
     $owner = $this->dbContext->getUsersRepository()->filterById(" = {$ownerId}")->findOne()->getUsername();
     $model = new ConferenceDetailsViewModel($conference);
     $model->setVenueId($venueId);
     $model->setVenue($venue);
     $model->setOwnerUsername($owner);
     $venueStatus = $this->dbContext->getVenueReservationRequestsRepository()->filterByConferenceId(" = {$conferenceId}")->filterByVenueId(" = {$venueId}")->findOne()->getStatus();
     $model->setVenueRequestStatus($venueStatus);
     $lectures = $this->dbContext->getLecturesRepository()->filterByConferenceId(" = {$conferenceId}")->orderBy("StartDate")->findAll(" = {$conferenceId}");
     $lecturesModels = [];
     foreach ($lectures->getLectures() as $lecture) {
         $lectureModel = new LectureViewModel($lecture);
         $hallId = $lectureModel->getHallId() == null ? 0 : $lectureModel->getHallId();
         $hall = $this->dbContext->getHallsRepository()->filterById(" = {$hallId}")->findOne();
         $lectureModel->setHallTitle($hall->getTitle() == null ? "(to be decided)" : $hall->getTitle());
         $speakerId = $lectureModel->getSpeakerId();
         $speaker = $this->dbContext->getUsersRepository()->filterById(" = {$speakerId}")->findOne();
         $lectureModel->setSpeakerUsername($speaker->getUsername());
         $lectureId = $lecture->getId();
         $speakerRequest = $this->dbContext->getSpeakerInvitationsRepository()->filterByLectureId(" = {$lectureId}")->filterBySpeakerId(" = {$speakerId}")->findOne();
         $lectureModel->setSpeakerRequestStatus($speakerRequest->getStatus());
         $lectureId = $lectureModel->getId();
         $statement = $db->prepare("select count(LectureId) as 'count' from lecturesParticipants where LectureId = ?");
         $statement->execute([$lectureId]);
         $participants = $statement->fetch()['count'];
         $lectureModel->setParticipantsCount($participants);
         $participantId = HttpContext::getInstance()->getIdentity()->getUserId();
         if ($participantId == null) {
             $lectureModel->setIsParticipating(false);
             $lectureModel->setCanParticipate(false);
         } else {
             $participantsInLecture = $this->dbContext->getLecturesParticipantsRepository()->filterByLectureId(" = {$lectureId}")->filterByParticipantId(" = {$participantId}")->findOne();
             if ($participantsInLecture->getId() != null) {
                 $lectureModel->setIsParticipating(true);
             } else {
                 $lectureModel->setIsParticipating(false);
             }
             $statement = $db->prepare(self::CHECK_USER_CAN_PARTICIPATE);
             $statement->execute([$participantId, $lecture->getStartDate(), $lecture->getStartDate(), $lecture->getEndDate(), $lecture->getEndDate()]);
             if ($statement->rowCount() > 0) {
                 $lectureModel->setCanParticipate(false);
             } else {
                 $lectureModel->setCanParticipate(true);
             }
         }
         $lecturesModels[] = $lectureModel;
     }
     $model->setLectures($lecturesModels);
     return $model;
 }
 /**
  * @param $userId
  * @return mixed
  * @throws \Exception
  */
 public static function getUnreadCount(integer $userId) : ServiceResponse
 {
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $statement = $db->prepare(self::$GET_UNREAD_COUNT);
     $statement->execute([$userId]);
     $count = $statement->fetch()['count'];
     return $count;
 }
 private static function getUserFromDatabase()
 {
     $userTable = new IdentityUserTable();
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $statement = $db->query("show columns from users");
     $columns = array_map(function ($c) {
         return ['name' => $c['Field'], 'type' => $c['Type']];
     }, $statement->fetchAll());
     if (count($columns) == 0) {
         return null;
     }
     foreach ($columns as $column) {
         $userTable->setColumn($column['name'], $column['type']);
     }
     return $userTable;
 }
 private static function insert(Role $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO roles (Name) VALUES (:Name);";
     $result = $db->prepare($query);
     $result->execute([':Name' => $model->getName()]);
     $model->setId($db->lastInsertId());
 }
 public function insertRole($role)
 {
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $statement = $db->prepare(self::INSERT_ROLE);
     try {
         $statement->execute([$role]);
         return $statement->rowCount() > 0;
     } catch (\Exception $ex) {
         return false;
     }
 }
Exemplo n.º 7
0
<?php

ini_set('display_errors', 1);
ob_start();
session_start();
require_once "Autoloader.php";
\RedDevil\Autoloader::init();
$requestParts = explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
$indexBaseProjectFolder = array_search(\RedDevil\Config\AppConfig::BASE_PROJECT_FOLDER, $requestParts);
$requestParts = array_slice($requestParts, $indexBaseProjectFolder + 1);
$route = implode('/', $requestParts);
if (strlen($route) > 1 && $route[0] == '/') {
    $route = substr($route, 1, strlen($route));
}
\RedDevil\Core\DatabaseData::setInstance(RedDevil\Config\DatabaseConfig::DB_INSTANCE, RedDevil\Config\DatabaseConfig::DB_DRIVER, RedDevil\Config\DatabaseConfig::DB_USER, RedDevil\Config\DatabaseConfig::DB_PASS, RedDevil\Config\DatabaseConfig::DB_NAME, RedDevil\Config\DatabaseConfig::DB_HOST);
$app = new \RedDevil\Application($route);
$app->start();
 public function replyToVenueRequest(bool $confirm, integer $requestId) : ServiceResponse
 {
     $request = $this->dbContext->getVenueReservationRequestsRepository()->filterById(" = {$requestId}")->findOne();
     $venueId = $request->getVenueId();
     $conferenceId = $request->getConferenceId();
     $venue = $this->dbContext->getVenuesRepository()->filterById(" = {$venueId}")->findOne();
     $conference = $this->dbContext->getConferencesRepository()->filterById(" = {$conferenceId}")->findOne();
     if ($venue->getId() == null) {
         return new ServiceResponse(404, "Venue not found.");
     }
     if ($conference->getId() == null) {
         return new ServiceResponse(404, "Conference not found.");
     }
     if ($request->getId() == null) {
         return new ServiceResponse(404, "Venue request not found.");
     }
     if (HttpContext::getInstance()->getIdentity()->getUserId() != $venue->getOwnerId()) {
         return new ServiceResponse(401, 'Replying to venue request only allowed for venue owner.');
     }
     $conferenceStartDate = $conference->getStartDate();
     $conferenceEndDate = $conference->getEndDate();
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $statement = $db->prepare($this::CHECK_VENUE_AVAILABILITY);
     $statement->execute([$venueId, $conferenceStartDate, $conferenceStartDate, $conferenceEndDate, $conferenceEndDate]);
     if ($statement->rowCount() > 0) {
         $request->setStatus(2);
         $this->dbContext->saveChanges();
         return new ServiceResponse(1, "The venue is busy at this time. Request is denied.");
     }
     if ($confirm) {
         $request->setStatus(1);
         $this->dbContext->saveChanges();
         return new ServiceResponse(null, "Venue request was confirmed.");
     } else {
         $request->setStatus(2);
         $conference->setVenue_Id(null);
         $this->dbContext->saveChanges();
         return new ServiceResponse(null, "Venue request was rejected.");
     }
 }
 private static function insert(User $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO users (username,email,password,fullname,telephone) VALUES (:username, :email, :password, :fullname, :telephone);";
     $result = $db->prepare($query);
     $result->execute([':username' => $model->getUsername(), ':email' => $model->getEmail(), ':password' => $model->getPassword(), ':fullname' => $model->getFullname(), ':telephone' => $model->getTelephone()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(Conferencesparticipant $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO conferencesparticipants (ConferenceId,ParticipantId) VALUES (:ConferenceId, :ParticipantId);";
     $result = $db->prepare($query);
     $result->execute([':ConferenceId' => $model->getConferenceId(), ':ParticipantId' => $model->getParticipantId()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(Notification $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO notifications (Content,UserId,IsRead,CreatedOn) VALUES (:Content, :UserId, :IsRead, :CreatedOn);";
     $result = $db->prepare($query);
     $result->execute([':Content' => $model->getContent(), ':UserId' => $model->getUserId(), ':IsRead' => $model->getIsRead(), ':CreatedOn' => $model->getCreatedOn()]);
     $model->setId($db->lastInsertId());
 }
 public function deleteParticipant(integer $lectureId, integer $participantId) : ServiceResponse
 {
     $lecture = $this->dbContext->getLecturesRepository()->filterById(" = {$lectureId}")->findOne();
     $user = $this->dbContext->getUsersRepository()->filterById(" = {$participantId}")->findOne();
     if ($lecture->getId() == null) {
         return new ServiceResponse(404, "Lecture not found.");
     }
     if ($user->getId() == null) {
         return new ServiceResponse(404, "User not found.");
     }
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     $isParticipatingStatement = $db->prepare($this::IS_USER_A_PARTICIPANT_IN_LECTURE);
     $isParticipatingStatement->execute([$participantId, $lectureId]);
     if ($isParticipatingStatement->rowCount() == 0) {
         return new ServiceResponse(404, "User is not a participant in this lecture.");
     }
     $lectureParticipant = new LecturesParticipant($lectureId, $participantId);
     $this->dbContext->getLecturesParticipantsRepository()->filterByLectureId(" = {$lectureId}")->filterByParticipantId(" = {$participantId}")->delete();
     return new ServiceResponse(null, "Participant removed from lecture.");
 }
 private static function insert(Venue $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO venues (Title,Description,Address,OwnerId) VALUES (:Title, :Description, :Address, :OwnerId);";
     $result = $db->prepare($query);
     $result->execute([':Title' => $model->getTitle(), ':Description' => $model->getDescription(), ':Address' => $model->getAddress(), ':OwnerId' => $model->getOwnerId()]);
     $model->setId($db->lastInsertId());
 }
Exemplo n.º 14
0
 private function __construct()
 {
     $this->db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
 }
 private static function insert(Hall $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO halls (Title,Capacity,VenueId) VALUES (:Title, :Capacity, :VenueId);";
     $result = $db->prepare($query);
     $result->execute([':Title' => $model->getTitle(), ':Capacity' => $model->getCapacity(), ':VenueId' => $model->getVenueId()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(Lecturebreak $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO lecturebreaks (Title,Description,LectureId,StartDate,EndDate) VALUES (:Title, :Description, :LectureId, :StartDate, :EndDate);";
     $result = $db->prepare($query);
     $result->execute([':Title' => $model->getTitle(), ':Description' => $model->getDescription(), ':LectureId' => $model->getLectureId(), ':StartDate' => $model->getStartDate(), ':EndDate' => $model->getEndDate()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(Message $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO messages (SenderId,RecipientId,Content,CreatedOn) VALUES (:SenderId, :RecipientId, :Content, :CreatedOn);";
     $result = $db->prepare($query);
     $result->execute([':SenderId' => $model->getSenderId(), ':RecipientId' => $model->getRecipientId(), ':Content' => $model->getContent(), ':CreatedOn' => $model->getCreatedOn()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(Conference $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO conferences (Title,StartDate,EndDate,OwnerId,Venue_Id) VALUES (:Title, :StartDate, :EndDate, :OwnerId, :Venue_Id);";
     $result = $db->prepare($query);
     $result->execute([':Title' => $model->getTitle(), ':StartDate' => $model->getStartDate(), ':EndDate' => $model->getEndDate(), ':OwnerId' => $model->getOwnerId(), ':Venue_Id' => $model->getVenue_Id()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(UsersRole $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO users_roles (user_id,role_id) VALUES (:user_id, :role_id);";
     $result = $db->prepare($query);
     $result->execute([':user_id' => $model->getUser_id(), ':role_id' => $model->getRole_id()]);
     $model->setId($db->lastInsertId());
 }
 private static function insert(Venuereservationrequest $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO venuereservationrequests (VenueId,ConferenceId,Status) VALUES (:VenueId, :ConferenceId, :Status);";
     $result = $db->prepare($query);
     $result->execute([':VenueId' => $model->getVenueId(), ':ConferenceId' => $model->getConferenceId(), ':Status' => $model->getStatus()]);
     $model->setId($db->lastInsertId());
 }
 public function getSpeakerSchedule() : ServiceResponse
 {
     $userId = HttpContext::getInstance()->getIdentity()->getUserId();
     if ($userId == null) {
         return new ServiceResponse(401, "Unauthorised. Only logged users can get their speaker's schedule.");
     }
     $todayDate = new \DateTime('now');
     $today = $todayDate->format('Y-m-d H:i:s');
     $lectures = $this->dbContext->getLecturesRepository()->orderBy("StartDate")->filterBySpeaker_Id(" = {$userId}")->filterByStartDate(" >= '{$today}'")->findAll();
     $lecturesModels = [];
     $db = DatabaseData::getInstance(DatabaseConfig::DB_INSTANCE);
     foreach ($lectures->getLectures() as $lecture) {
         $lectureModel = new LectureViewModel($lecture);
         $hallId = $lectureModel->getHallId() == null ? 0 : $lectureModel->getHallId();
         $hall = $this->dbContext->getHallsRepository()->filterById(" = {$hallId}")->findOne();
         $lectureModel->setHallTitle($hall->getTitle() == null ? "(to be decided)" : $hall->getTitle());
         $speakerId = $lectureModel->getSpeakerId();
         $speaker = $this->dbContext->getUsersRepository()->filterById(" = {$speakerId}")->findOne();
         $lectureModel->setSpeakerUsername($speaker->getUsername());
         $lectureId = $lecture->getId();
         $speakerRequest = $this->dbContext->getSpeakerInvitationsRepository()->filterByLectureId(" = {$lectureId}")->filterBySpeakerId(" = {$speakerId}")->findOne();
         $lectureModel->setSpeakerRequestStatus($speakerRequest->getStatus());
         $lectureId = $lectureModel->getId();
         $statement = $db->prepare("select count(LectureId) as 'count' from lecturesParticipants where LectureId = ?");
         $statement->execute([$lectureId]);
         $participants = $statement->fetch()['count'];
         $lectureModel->setParticipantsCount($participants);
         $participantId = HttpContext::getInstance()->getIdentity()->getUserId();
         if ($participantId == null) {
             $lectureModel->setIsParticipating(false);
             $lectureModel->setCanParticipate(false);
         } else {
             $participantsInLecture = $this->dbContext->getLecturesParticipantsRepository()->filterByLectureId(" = {$lectureId}")->filterByParticipantId(" = {$participantId}")->findOne();
             if ($participantsInLecture->getId() != null) {
                 $lectureModel->setIsParticipating(true);
             } else {
                 $lectureModel->setIsParticipating(false);
             }
         }
         $lecturesModels[] = $lectureModel;
     }
     return new ServiceResponse(null, null, $lecturesModels);
 }
 private static function insert(Speakerinvitation $model)
 {
     $db = DatabaseData::getInstance(\RedDevil\Config\DatabaseConfig::DB_INSTANCE);
     $query = "INSERT INTO speakerinvitations (LectureId,SpeakerId,Status) VALUES (:LectureId, :SpeakerId, :Status);";
     $result = $db->prepare($query);
     $result->execute([':LectureId' => $model->getLectureId(), ':SpeakerId' => $model->getSpeakerId(), ':Status' => $model->getStatus()]);
     $model->setId($db->lastInsertId());
 }