/** * Save resource * * @access public * @param Courses\Entity\Resource $resource * @param array $data ,default is empty array * @param bool $isAdminUser ,default is bool false * @param string $userEmail ,default is null */ public function save($resource, $data = array(), $isAdminUser = false, $userEmail = null) { $notifyAdminFlag = false; $editFlag = false; if (empty($data)) { $editFlag = true; } if ($isAdminUser === false) { $resource->setStatus(Status::STATUS_NOT_APPROVED); $notifyAdminFlag = true; } $this->query->setEntity('Courses\\Entity\\Resource')->save($resource, $data); if (isset($data["fileAdded"])) { // save added resources foreach ($data["fileAdded"] as $fileKey => $fileValue) { $filter = new RenameUpload($fileValue["uploadOptions"]); $resource = clone $resource; $uploadedFile = $filter->filter($fileValue); $resource->setFile($uploadedFile); $resource->setName($data["nameAdded"][$fileKey]); $this->query->setEntity('Courses\\Entity\\Resource')->save($resource); } } if ($notifyAdminFlag === true) { $this->sendMail($userEmail, $editFlag); } }
/** * setup form * * * @access public * @param string $name ,default is null * @param array $options ,default is null */ public function __construct($name = null, $options = null) { $this->query = $options['query']; unset($options['query']); parent::__construct($name, $options); $this->setAttribute('class', 'form form-inline'); $this->setAttribute('method', 'GET'); $this->add(array('name' => 'title', 'type' => 'Zend\\Form\\Element\\Text', 'attributes' => array('class' => 'form-control'), 'options' => array('label' => 'Title'))); $this->add(array('name' => 'directUrl', 'type' => 'Zend\\Form\\Element\\Text', 'attributes' => array('class' => 'form-control'), 'options' => array('label' => 'Url'))); $this->add(array('name' => 'type', 'type' => 'Zend\\Form\\Element\\Select', 'attributes' => array('class' => 'form-control'), 'options' => array('label' => 'Type', "value_options" => array(MenuItem::TYPE_PAGE => "Page", MenuItem::TYPE_DIRECT_URL => "Direct Url"), 'empty_option' => "All"))); $this->add(array('name' => 'menu', 'type' => 'DoctrineModule\\Form\\Element\\ObjectSelect', 'attributes' => array('class' => 'form-control'), 'options' => array('label' => 'Menu', 'object_manager' => $this->query->setEntity('CMS\\Entity\\Menu')->entityManager, 'target_class' => 'CMS\\Entity\\Menu', 'property' => "title", 'find_method' => array('name' => 'findAll', 'params' => array()), 'display_empty_item' => true, 'empty_item_label' => "All"))); $this->add(array('name' => 'status', 'type' => 'Zend\\Form\\Element\\Select', 'attributes' => array('class' => 'form-control'), 'options' => array('label' => 'Status', "value_options" => array(Status::STATUS_ACTIVE => Status::STATUS_ACTIVE_TEXT, Status::STATUS_INACTIVE => Status::STATUS_INACTIVE_TEXT), 'empty_option' => "All"))); $this->add(array('name' => 'filter', 'type' => 'Zend\\Form\\Element\\Submit', 'attributes' => array('class' => 'btn btn-success', 'value' => 'Filter'))); $this->add(array('name' => 'reset', 'type' => 'Zend\\Form\\Element', 'attributes' => array('class' => 'btn btn-danger resetButton', 'value' => 'Reset', 'type' => 'button'))); }
/** * Save OrganizationUser * Add new role if user does not have it * * @access public * @param Organizations\Entity\OrganizationUser $organizationUser * @param array $data ,default is empty array */ public function save($organizationUser, $data = array()) { $this->query->setEntity('Organizations\\Entity\\OrganizationUser')->save($organizationUser, $data); $roleExists = false; $user = $organizationUser->getUser(); foreach ($user->getRoles() as $role) { if ($role->getName() == $organizationUser->getRole()->getName()) { $roleExists = true; break; } } if ($roleExists === false) { $user->addRole($organizationUser->getRole()); $this->query->setEntity('Users\\Entity\\User')->save($user, array()); } }
/** * this function is meant to save evaluation no matters it's type * template or course evaluation * @param Evaluation $evalObj * @param int $courseId not required if template * @param string $userEmail ,default is null * @param bool $isAdminUser ,default is true * @param bool $editFlag ,default is false */ public function saveEvaluation($evalObj, $courseId = null, $userEmail = null, $isAdminUser = true, $editFlag = false) { // if evaluation is admin template if ($evalObj->isTemplate()) { $this->query->setEntity("Courses\\Entity\\Evaluation")->save($evalObj); } else { //find the course to assign it to the evaluation $course = $this->query->findOneBy("Courses\\Entity\\Course", array('id' => $courseId)); //assign course to evaluation $evalObj->setCourse($course); $this->query->setEntity('Courses\\Entity\\Evaluation')->save($evalObj); } if ($isAdminUser === false) { $this->sendMail($userEmail, $editFlag); } }
public function saveCourseVotes($questionIds, $values, $userObj, $evalObj) { // removing unset value form array unset($values['submit']); //looping over values for ($i = 0; $i < count($questionIds); $i++) { $vote = new \Courses\Entity\Vote(); $questionObj = $this->query->findOneBy('Courses\\Entity\\Question', array('id' => $questionIds[$i])); $vote->setEvaluation($evalObj); $vote->setUser($userObj); $vote->setQuestion($questionObj); // each key is radios_XX where x is question Id $vote->setVote($values['radios_' . $questionIds[$i]]); // save vote $this->query->setEntity('Courses\\Entity\\Vote')->save($vote); // update course evaluation percentage $evalObj->setPercentage($this->getVotePercentage($evalObj)); $this->query->setEntity('Courses\\Entity\\Evaluation')->save($evalObj); } }
/** * Enroll course * * @access public * @param Courses\Entity\Course $course * @param Users\Entity\User $user * @throws \Exception Capacity exceeded */ public function enrollCourse($course, $user) { $studentsNo = $course->getStudentsNo(); $studentsNo++; $capacity = $course->getCapacity(); if ($capacity < $studentsNo) { throw new \Exception("Capacity exceeded"); } $course->setStudentsNo($studentsNo); $course->addUser($user); $this->query->setEntity('Courses\\Entity\\Course')->save($course); }
public function saveBookingRequest($data, $config) { $bookObj = new \Courses\Entity\ExamBook(); $course = $this->query->findOneBy('Courses\\Entity\\Course', array('id' => $data['courseId'])); $atc = $this->query->findOneBy('Organizations\\Entity\\Organization', array('id' => $data['atcId'])); // exam date $bookObj->setDate(\DateTime::createFromFormat(Time::DATE_FORMAT, $data['date'])); // creation time $bookObj->setCreatedAt(new \DateTime()); // number of students $bookObj->setStudentNum($data['studentsNo']); // assign request to course $bookObj->setCourse($course); // assign request to atc $bookObj->setAtc($atc); // admin pending request $bookObj->setAdminStatus(\Courses\Entity\ExamBook::ADMIN_PENDING); // tvtc nothing $bookObj->setTvtcStatus(Null); $this->query->setEntity('Courses\\Entity\\ExamBook')->save($bookObj); $forceFlush = APPLICATION_ENV == "production" ? false : true; $cachedSystemData = $this->systemCacheHandler->getCachedSystemData($forceFlush); $settings = $cachedSystemData[CacheHandler::SETTINGS_KEY]; if (array_key_exists(Settings::TVTC_EMAIL, $settings)) { $tvtcMail = $settings[Settings::TVTC_EMAIL]; } $toBeNotifiedArray = array(); if (array_key_exists(Settings::ADMIN_EMAIL, $settings) && array_key_exists(Settings::OPERATIONS_EMAIL, $settings)) { $toBeNotifiedArray[] = $settings[Settings::ADMIN_EMAIL]; $toBeNotifiedArray[] = $settings[Settings::OPERATIONS_EMAIL]; } if (isset($tvtcMail)) { // send tvtc new mail $this->sendMail($bookObj, $tvtcMail); } if (count($toBeNotifiedArray) > 0) { // send admin new mail $this->sendMail($bookObj, $toBeNotifiedArray, true); } }
/** * Save page * * @access public * @param CMS\Entity\Page $page * @param array $data ,default is empty array * @param bool $editFlag ,default is false */ public function save($page, $data = array(), $editFlag = false) { if (array_key_exists(FormButtons::SAVE_AND_PUBLISH_BUTTON, $data)) { $page->setStatus(Status::STATUS_ACTIVE); } elseif (array_key_exists(FormButtons::UNPUBLISH_BUTTON, $data)) { $page->setStatus(Status::STATUS_INACTIVE); } elseif (array_key_exists(FormButtons::SAVE_BUTTON, $data) && $editFlag === false) { $page->setStatus(Status::STATUS_INACTIVE); } if ($editFlag === true) { $data = array(); } $this->query->setEntity("CMS\\Entity\\Page")->save($page, $data); }
/** * Disapprove entities changes * * @access public * * @param array $entities * @param array $entitiesLogs * * @return bool process result */ public function disapproveChanges($entities, $entitiesLogs) { $processResult = true; foreach ($entitiesLogs as $logsPerEntity) { foreach ($logsPerEntity as $entityLog) { $entityLogClass = get_class($entityLog); $this->query->setEntity($entityLogClass)->remove($entityLog, true); } } foreach ($entities as $entity) { if (property_exists($entity, "status") && $entity->status == Status::STATUS_NOT_APPROVED) { $entityClass = get_class($entity); $this->query->setEntity($entityClass)->remove($entity, true); } } if (count($entities) > 0 && count($entitiesLogs) > 0) { // flush all entities changes $this->query->entityManager->flush(); } return $processResult; }
/** * set validation constraints * * * @uses InputFilter * * @access public * * @param Utilities\Service\Query\Query $query * @return InputFilter validation constraints */ public function getInputFilter($query) { if (!$this->inputFilter) { $inputFilter = new InputFilter(); $query->setEntity("Organizations\\Entity\\OrganizationUser"); $inputFilter->add(array('name' => 'user', 'required' => true, 'validators' => array(array('name' => 'Utilities\\Service\\Validator\\UniqueObject', 'options' => array('use_context' => true, 'object_manager' => $query->entityManager, 'object_repository' => $query->entityRepository, 'fields' => array('user', 'organization', 'role'), 'messages' => array(UniqueObject::ERROR_OBJECT_NOT_UNIQUE => "There is already another organization user with the same user and role")))))); $inputFilter->add(array('name' => 'role', 'required' => true)); $this->inputFilter = $inputFilter; } return $this->inputFilter; }