/**
  * @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;
 }
Example #2
0
 /**
  * @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;
 }