/** * @param Order $order * @param boolean $dummyObject Empty object, non saved to database * @return OrderDeliveryInformation|null * @throws \Exception */ public static function createNewOrderDeliveryInformation(Order $order, $dummyObject = true) { /** @var OrderDeliveryInformation|HasProperties $model */ $model = new static(); $model->order_id = $order->id; $model->loadDefaultValues(); $groups = PropertyGroup::getForObjectId($model->getObject()->id, true); $group = array_shift($groups); if (null !== $group) { $model->setPropertyGroup($group); $abstractModel = new AbstractModel(); $abstractModel->setPropertiesModels(array_reduce($group->properties, function ($result, $item) { /** @var Property $item */ $result[$item->key] = $item; return $result; }, [])); $abstractModel->setAttributes(array_reduce($group->properties, function ($result, $item) use($model) { /** @var Property $item */ $result[$item->key] = new PropertyValue([], $item->id, $model->getObject()->id, null); return $result; }, [])); $abstractModel->setFormName('OrderDeliveryInformationNew'); $model->setAbstractModel($abstractModel); } if (!$dummyObject) { $model->shipping_option_id = 0; if ($model->save()) { if (!empty($model->getPropertyGroup())) { $model->getPropertyGroup()->appendToObjectModel($model); } } else { return null; } } return $model; }
/** * @param int $user_id * @param bool $dummyObject * @return Customer|null */ public static function createEmptyCustomer($user_id = 0, $dummyObject = true) { $model = new static(); $model->user_id = intval($user_id); $model->loadDefaultValues(); if ($model->user_id === 0 && (int) Yii::$app->getModule('shop')->registrationGuestUserInCart === 1) { $model->setScenario('registerUser'); } $groups = PropertyGroup::getForObjectId($model->getObject()->id, true); $group = array_shift($groups); if (null !== $group) { $model->setPropertyGroup($group); $abstractModel = new AbstractModel(); $abstractModel->setPropertiesModels(array_reduce($group->properties, function ($result, $item) { /** @var Property $item */ $result[$item->key] = $item; return $result; }, [])); $abstractModel->setAttributes(array_reduce($group->properties, function ($result, $item) use($model) { /** @var Property $item */ $result[$item->key] = new PropertyValue([], $item->id, $model->getObject()->id, null); return $result; }, [])); $abstractModel->setFormName('CustomerNew'); $model->setAbstractModel($abstractModel); } if (!$dummyObject) { $model->first_name = 'Имя'; if ($model->save()) { if (!empty($model->getPropertyGroup())) { $model->getPropertyGroup()->appendToObjectModel($model); } } else { return null; } } return $model; }