/** * @param string|int $group_name * @param string $cond * @return LessonModel[]|array */ public static function getAllByGroupNameOrGroupId($group_name, $cond = "") { $group_name = mb_strtolower($group_name, "UTF-8"); $group_name = str_replace(array_values(GroupModel::$replace), array_keys(GroupModel::$replace), $group_name); /** @var PDO $db */ $db = Registry::get('db'); $group_id = $db->query("\r\n SELECT group_id FROM " . GroupModel::TABLE . "\r\n WHERE (group_full_name = " . $db->quote($group_name) . " OR group_id = " . $db->quote($group_name) . ")\r\n ")->fetchColumn(); $count = $db->query("\r\n SELECT COUNT(*) FROM " . LessonModel::TABLE . "\r\n WHERE (group_id = '{$group_id}' OR group_id = " . $db->quote($group_name) . ") {$cond}\r\n ")->fetchColumn(); $result = array(); if ($count > 0) { $query = $db->query("\r\n SELECT * FROM " . LessonModel::TABLE . "\r\n WHERE (group_id = '{$group_id}' OR group_id = " . $db->quote($group_name) . ") {$cond} ORDER BY lesson_week,day_number,lesson_number ASC\r\n "); while ($data = $query->fetch(PDO::FETCH_ASSOC)) { $lessonModel = new LessonModel(); $lessonModel->unpack($data); $lessonModel->teachers = TeacherModel::getAllByLessonId($lessonModel->lesson_id); //enable duplicate filter $lessonModel->teachers = TeacherModel::teachersDuplicateFilter($lessonModel->teachers); //load rooms $lessonModel->rooms = RoomModel::getAllByLessonId($lessonModel->lesson_id); $result[] = $lessonModel->toArray(); } } else { throw new ApiException("Lessons not found"); } return $result; }
/** * url GET /v2/groups/{group_name|group_id}/teachers * @api * @param $data * @return string * @throws ApiException */ public function groups_teachersRelationAction($data) { $allowFilters = ['duplicateTeachersFilter' => true]; $filter = $this->_fc->getFilter(); $group_name = $data["groups"]; $group_name = urldecode($group_name); $teachers = TeacherModel::getAllByGroupNameOrGroupId($group_name); if ($filter != null) { Utilities::checkFilters($filter, $allowFilters); $teachers = TeacherModel::teachersDuplicateFilter($teachers); } $this->data = $teachers; return $this->send(200); }