/**
  * get default reservation category id
  * @return string
  */
 public function getDefaultReservationCategoryId()
 {
     $condition = ['name' => ModelProductCategory::RESERVATION_CATEGORY_NAME, 'accountId' => $this->accountId];
     $category = ModelProductCategory::findOne($condition);
     $categoryId = '';
     if (!empty($category)) {
         $categoryId = (string) $category->_id;
     }
     return $categoryId;
 }
 public static function checkCategoryNameUniqueByName($name, $accountId, $categoryId)
 {
     $where = ['accountId' => $accountId, 'name' => $name];
     $data = ProductCategory::findOne($where);
     if (empty($data)) {
         return true;
     }
     if (!empty($categoryId)) {
         if ($categoryId == $data->_id . '' && $data->name == $name) {
             return true;
         }
     }
     return false;
 }
 private function checkReversationProperty($id, $propertyId, $accountId)
 {
     $condition = ['_id' => new MongoId($id), 'properties.id' => $propertyId, 'accountId' => $accountId];
     $category = ProductCategory::findOne($condition);
     if (!empty($category)) {
         foreach ($category->properties as $properties) {
             if ($properties['id'] == $propertyId) {
                 if ($category->name == ProductCategory::RESERVATION_CATEGORY_NAME && $properties['name'] == ProductCategory::RESERVATION_CATEGORY_PROPERTY_NAME) {
                     throw new InvalidParameterException(['categoryPropertyName' => Yii::t("product", "can_not_update")]);
                 }
             }
         }
     }
 }