getUser($request))) { throw new AuthorizationFailedException(); } $json = $this->validate($request); $cs = new \CourseSet(); $cs->setName(self::arrayGet($json, 'data.attributes.name')); foreach (self::arrayGet($json, 'data.attributes.rules') as $oneRule) { $classname = '\\' . $oneRule['attributes']['type']; $rule = new $classname(); $rule->setAllData($oneRule['attributes']['payload']); $cs->addAdmissionRule($rule); } $cs->setPrivate(self::arrayGet($json, 'data.attributes.private')); $cs->setAlgorithm('RandomAlgorithm'); $cs->setInstitutes(self::arrayGet($json, 'data.attributes.institutes')); $cs->setCourses(self::arrayGet($json, 'data.attributes.courses')); $cs->setUserlists(self::arrayGet($json, 'data.attributes.userlists')); $cs->store(); return $this->getCreatedResponse($cs); } protected function validateResourceDocument($json, $data) { if (!self::arrayHas($json, 'data')) { return 'Missing `data` member at document“s top level.'; } if (!self::arrayHas($json, 'data.attributes')) { return 'Missing `attributes` member of data block.'; } if (!self::arrayHas($json, 'data.attributes.name')) { return 'Missing `name` member of data block.'; } } }