/** * @param Widget $widget * * @return bool|Widget * @throws ValidationException */ public function create(Widget $widget) { if ($widget->isExists()) { return false; } $data = ['name' => $widget->getName(), 'description' => $widget->getDescription(), 'settings' => $widget->getSettings(), 'type' => $widget->getType()]; $creator = new WidgetCreator(); $validator = $creator->validator($data); if ($validator->fails()) { throw (new ValidationException())->setValidator($validator); } $widgetModel = $creator->create($data); $widget->setId($widgetModel->id); return $widget; }