| @@ 27-71 (lines=45) @@ | ||
| 24 | } |
|
| 25 | } |
|
| 26 | ||
| 27 | public function postUserAssignRoles(ServerRequestInterface $request, ResponseInterface $response, $args) |
|
| 28 | { |
|
| 29 | $this->logger->info("Create user people POST '/user/".$args['id']."/roles'"); |
|
| 30 | ||
| 31 | $userId = filter_var($args['id'], FILTER_SANITIZE_NUMBER_INT); |
|
| 32 | $existingRoles = RoleQuery::create()->useUserRoleQuery()->filterByUserId($userId)->endUse()->find(); |
|
| 33 | ||
| 34 | $existingRoleIds = []; |
|
| 35 | foreach ($existingRoles as $r) { |
|
| 36 | $existingRoleIds[] = $r->getId(); |
|
| 37 | } |
|
| 38 | ||
| 39 | $data = $request->getParsedBody(); |
|
| 40 | ||
| 41 | if (empty($data['role']) || !is_array($data['role'])) { |
|
| 42 | // delete all roles |
|
| 43 | $urs = UserRoleQuery::create()->filterByUserId($userId)->find(); |
|
| 44 | foreach ($urs as $ur) { |
|
| 45 | $ur->delete(); |
|
| 46 | } |
|
| 47 | } else { |
|
| 48 | // sanitize data from user |
|
| 49 | foreach ($data['role'] as $key => $role) { |
|
| 50 | $data['role'][$key] = filter_var(trim($role), FILTER_SANITIZE_NUMBER_INT); |
|
| 51 | } |
|
| 52 | ||
| 53 | // add new roles |
|
| 54 | $addArray = array_diff($data['role'], $existingRoleIds); |
|
| 55 | foreach ($addArray as $roleToAdd) { |
|
| 56 | $ur = new UserRole(); |
|
| 57 | $ur->setRoleId($roleToAdd); |
|
| 58 | $ur->setUserId($userId); |
|
| 59 | $ur->save(); |
|
| 60 | } |
|
| 61 | ||
| 62 | // remove existing roles |
|
| 63 | $deleteArray = array_diff($existingRoleIds, $data['role']); |
|
| 64 | foreach ($deleteArray as $roleToRemove) { |
|
| 65 | $ur = UserRoleQuery::create()->filterByUserId($userId)->filterByRoleId($roleToRemove)->findOne(); |
|
| 66 | $ur->delete(); |
|
| 67 | } |
|
| 68 | } |
|
| 69 | ||
| 70 | return $response->withStatus(303)->withHeader('Location', $this->router->pathFor('user', ['id' => $userId])); |
|
| 71 | } |
|
| 72 | } |
|
| 73 | ||
| @@ 178-222 (lines=45) @@ | ||
| 175 | } |
|
| 176 | } |
|
| 177 | ||
| 178 | public function postEventAssign(ServerRequestInterface $request, ResponseInterface $response, $args) |
|
| 179 | { |
|
| 180 | $this->logger->info("Create event people POST '/event".$args['id']."/assign'"); |
|
| 181 | ||
| 182 | $eventId = filter_var($args['id'], FILTER_SANITIZE_NUMBER_INT); |
|
| 183 | $existingUserRoles = UserRoleQuery::create()->useEventPersonQuery()->filterByEventId($eventId)->endUse()->find(); |
|
| 184 | ||
| 185 | $existing = []; |
|
| 186 | foreach ($existingUserRoles as $ur) { |
|
| 187 | $existing[] = $ur->getId(); |
|
| 188 | } |
|
| 189 | ||
| 190 | $data = $request->getParsedBody(); |
|
| 191 | ||
| 192 | if (!is_array($data['userrole'])) { |
|
| 193 | // delete all roles |
|
| 194 | $eps = EventPersonQuery::create()->filterByEventId($eventId)->find(); |
|
| 195 | foreach ($eps as $ep) { |
|
| 196 | $ep->delete(); |
|
| 197 | } |
|
| 198 | } else { |
|
| 199 | // sanitize data from user |
|
| 200 | foreach ($data['userrole'] as $key => $userRole) { |
|
| 201 | $data['userrole'][$key] = filter_var(trim($userRole), FILTER_SANITIZE_NUMBER_INT); |
|
| 202 | } |
|
| 203 | ||
| 204 | // add new roles |
|
| 205 | $addArray = array_diff($data['userrole'], $existing); |
|
| 206 | foreach ($addArray as $roleToAdd) { |
|
| 207 | $ep = new EventPerson(); |
|
| 208 | $ep->setUserRoleId($roleToAdd); |
|
| 209 | $ep->setEventId($eventId); |
|
| 210 | $ep->save(); |
|
| 211 | } |
|
| 212 | ||
| 213 | // remove existing roles |
|
| 214 | $deleteArray = array_diff($existing, $data['userrole']); |
|
| 215 | foreach ($deleteArray as $roleToRemove) { |
|
| 216 | $ep = EventPersonQuery::create()->filterByEventId($eventId)->filterByUserRoleId($roleToRemove)->findOne(); |
|
| 217 | $ep->delete(); |
|
| 218 | } |
|
| 219 | } |
|
| 220 | ||
| 221 | return $response->withStatus(303)->withHeader('Location', $this->router->pathFor('event', ['id' => $eventId])); |
|
| 222 | } |
|
| 223 | ||
| 224 | public function getAllEventsToPrintForGroup(ServerRequestInterface $request, ResponseInterface $response, $args) |
|
| 225 | { |
|