Ejemplo n.º 1
0
 public static function loadProperties(array $groupPost, array $postProperties, $update = false)
 {
     $data = $postProperties ? ArrayHelper::combine($groupPost, $postProperties) : $groupPost;
     if ($update) {
         $result = [];
         if ($groupPost) {
             foreach ($groupPost as $key => $group) {
                 $groupModel = ($model = GroupProperty::findOne(['id' => ArrayHelper::getValue($group, 'id')])) ? $model : new GroupProperty();
                 if ($groupModel->load($group, '')) {
                     //foreach properties
                     $properties = [];
                     foreach ($data[$key] as $property) {
                         $propertyModel = ($model = Property::findOne(['id' => ArrayHelper::getValue($property, 'id')])) ? $model : new Property();
                         if (!$propertyModel->load($property, '')) {
                             return [];
                         }
                         $properties[] = $propertyModel;
                     }
                     $result[] = ['group' => $groupModel, 'properties' => $properties];
                 }
             }
         }
     } else {
         $result = [];
         foreach ($data as $key => $items) {
             $properties = [];
             if ($postProperties) {
                 array_walk($items, function ($entry) use(&$properties) {
                     $properties[] = new Property($entry);
                 });
             }
             $result[] = ['group' => new GroupProperty($groupPost[$key]), 'properties' => $properties];
         }
     }
     return $result;
 }