httpCode = $httpCode; $this->details = $details; } public function getHttpCode() { return $this->httpCode; } public function getDetails() { return $this->details; } } class WorkflowNotFoundException extends WorkflowException { public function __construct($message = "") { parent::__construct($message, 404); } } class WorkflowNotAllowedException extends WorkflowException { public function __construct($message = "") { parent::__construct($message, 403); } } class WorkflowRuleFailedException extends WorkflowException { public function __construct($message = "") { parent::__construct($message, 400); } } class WorkflowEligibilityException extends WorkflowException { private $reasons; public function __construct($message = "", $reasons = []) { parent::__construct($message, 422, ['reasons' => $reasons]); $this->reasons = $reasons; } public function getReasons() { return $this->reasons; } }