/** * @param RequestInterface $request * @param ResponseInterface $response * @return ResponseInterface */ public function dispatch(RequestInterface $request, ResponseInterface $response) { $criteria = $request->getCriteria(); $changes = $request->getChanges(); if ($this->criteriaValidator->isValid($criteria)) { if ($this->changesValidator->isValid($changes)) { $result = $this->service->handle($this->criteriaValidator->getValid(), $this->changesValidator->getValid()); $response->setResult($result); } else { $response->setChangesErrors($this->changesValidator->getErrors()); } } else { $response->setCriteriaErrors($this->criteriaValidator->getErrors()); } $response->setCriteria($criteria); $response->setChanges($changes); $response->setValidCriteria($this->criteriaValidator->getValid()); $response->setValidChanges($this->changesValidator->getValid()); return $response; }