/** * @api {post} /groups/users/:idUser/add Add New Group by Manager * @apiName Add New Group by Manager * @apiGroup Group * @apiDescription Create a child group of the company the specified user is in. * <p>The user must be admin/owner of his company group.</p> * <p>The user will be the owner of the new group.</p> * @apiHeader (Header) {String} X_Authorization Authorization value. * @apiParam (url Parameter) {Number} idUser User's unique ID. * @apiParam (Parameter) {String} name New group name. <b>Unique</b> * @apiParam (Parameter) {String} description New group description. * * @apiError 400 Input Invalid. This will happen if the param is missing or not in the valid format. * @apiError 404 Not found. This will happen if the role id/user id/group id is not in our system. * @apiError 403 Permission denied. * @apiError 401 Not authorized. This will happen if the header value is not attached. * @apiError 409 Group name already exists. * * @apiSuccess 200 */ public static function add($idUser) { $app = \Slim\Slim::getInstance(); $data = $app->request->post(); //validate input $validata = $app->validata; $validator = $validata::key('name', $validata::stringType()->notEmpty())->key('description', $validata::stringType()->notEmpty()); if (!$validator->validate((array) $data)) { $app->halt(400, json_encode("Input Invalid")); } $group = Group::where('name', $data['name'])->first(); if ($group) { $app->halt(409, json_encode("Group name already exists")); } $companies = User::find($idUser)->companies; $parent_group = CompanyController::getCompanyGroup($companies[0]->id); if (!$parent_group) { $app->halt(404, json_encode("Parent group does not exist")); } if ($companies) { $role = self::getRole($parent_group->id, $idUser); if ($role->id < 3) { $app->halt("403", json_encode("Permission denied")); } $group = new Group(); $group->company_id = $companies[0]->id; $group->is_exclusive = 0; $group->parent_id = $parent_group->id; $group->name = $data['name']; $group->description = $data['description']; $group->access_code = CompanyController::generateRandomString(8); $group->save(); if ($group->id) { $group->members()->attach($idUser, array('role_id' => 3)); } } }