recordServiceContainer = $recordServiceContainer; } public function postActionProcess(Request $request) : StdClass { $body = $request->getParsedBody(); $entityType = $body->entityType ?? null; $action = $body->action ?? null; $params = $body->params ?? null; $data = $body->data ?? (object) []; if (!$entityType || !$action || !$params) { throw new BadRequest(); } $service = $this->recordServiceContainer->get($entityType); $result = $service->massAction( $action, $this->prepareMassActionParams($params), $data ); return $result->getValueMap(); } protected function prepareMassActionParams(StdClass $data) : array { $params = []; $where = $data->where ?? null; $searchParams = $data->searchParams ?? null; $ids = $data->ids ?? null; if (!is_null($where) || !is_null($searchParams)) { $params = []; if (!is_null($where)) { $params['where'] = json_decode(json_encode($where), true); } if (!is_null($searchParams)) { $params['searchParams'] = json_decode(json_encode($searchParams), true); } } else if (!is_null($ids)) { $params['ids'] = $ids; } else { throw new BadRequest("Bad search params for mass action."); } return $params; } }