public SearchOperator(JToken node) : base(node)
 {
     if (node["type"] != null)
     {
         this._Type = (SearchOperatorType)ParseEnum(typeof(SearchOperatorType), node["type"].Value <string>());
     }
     if (node["items"] != null)
     {
         this._Items = new List <SearchItem>();
         foreach (var arrayNode in node["items"].Children())
         {
             this._Items.Add(ObjectFactory.Create <SearchItem>(arrayNode));
         }
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Закрытый метод создания объекта поиска по имени объекта
        /// </summary>
        /// <param name="searchConditionType">Параметр условия поиска, значение Enum указывает по какому критерию будет поиск</param>
        /// <param name="searchOperatorType">Оператор операции поиска</param>
        /// <param name="name">Имя объекта</param>
        /// <returns>Список объектов FindObject</returns>
        private FindObject MakeFindObject(SearchConditionType searchConditionType, SearchOperatorType searchOperatorType, string name)
        {
            var searchOperatorTypeInt  = (int?)searchOperatorType;
            var searchConditionTypeInt = (int?)searchConditionType;
            var findObject             = new FindObject
            {
                Conditions = new Condition[]
                {
                    new Condition {
                        Type     = searchConditionTypeInt,
                        Operator = searchOperatorTypeInt,
                        Value    = name
                    }
                },
                Filters = new Filter[]
                {}
            };

            return(findObject);
        }
        public SearchOperator(XmlElement node) : base(node)
        {
            foreach (XmlElement propertyNode in node.ChildNodes)
            {
                switch (propertyNode.Name)
                {
                case "type":
                    this._Type = (SearchOperatorType)ParseEnum(typeof(SearchOperatorType), propertyNode.InnerText);
                    continue;

                case "items":
                    this._Items = new List <SearchItem>();
                    foreach (XmlElement arrayNode in propertyNode.ChildNodes)
                    {
                        this._Items.Add(ObjectFactory.Create <SearchItem>(arrayNode));
                    }
                    continue;
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Метод поиска по имени объекта
        /// </summary>
        /// <param name="searchConditionType">Параметр условия поиска, значение Enum указывает по какому критерию будет поиск</param>
        /// <param name="searchOperatorType">Оператор операции поиска</param>
        /// <param name="name">Имя объекта</param>
        /// <param name="address">Относительный адрес API сервиса (опциональное значение)</param>
        /// <returns></returns>
        public async Task <List <Result> > SearchObjectAsync(SearchConditionType searchConditionType, SearchOperatorType searchOperatorType, string name, string address = @"api/objects/search")
        {
            var findObject = MakeFindObject(searchConditionType, searchOperatorType, name);

            var results = await Request(findObject, address);

            return(results);
        }
Esempio n. 5
0
        /// <summary>
        /// Метод поиска объекта по атрибуту в определнной группе объектов
        /// </summary>
        /// <param name="objectId">Id класса объекта для поиска</param>
        /// <param name="attibuteId">значение для поиска</param>
        /// <param name="filterTypes">Фильтр типа(по родительскому каталогу или по Id класса объекта)</param>
        /// <param name="searchCondition">Параметр условия поиска, значение Enum указывает по какому критерию будет поиск</param>
        /// <param name="searchOperatorType">Оператор операции поиска</param>
        /// <param name="address">Относительный адрес API сервиса (опциональное значение)</param>
        /// <returns>Список объектов Result</returns>
        public async Task <List <Result> > SearchObjectAsync(string objectId, string attibuteId, FilterTypes filterTypes, SearchConditionType searchCondition, SearchOperatorType searchOperatorType, string address = @"api/objects/search")
        {
            var findObject = MakeFindObject(objectId, attibuteId, filterTypes, searchCondition, searchOperatorType);

            var results = await Request(findObject, address);

            return(results);
        }
Esempio n. 6
0
        /// <summary>
        /// Закрытый метод создания объекта поиска по атрибуту объекта
        /// </summary>
        /// <param name="attributeId">значение для поиска</param>
        /// <param name="searchConditionType">Параметр условия поиска, значение Enum указывает по какому критерию будет поиск</param>
        /// <param name="searchOperatorType">Оператор операции поиска</param>
        /// <returns>Список объектов FindObject</returns>
        private FindObject MakeFindObject(string attributeId, SearchConditionType searchConditionType, SearchOperatorType searchOperatorType)
        {
            var searchOperatorTypeInt  = (int?)searchOperatorType;
            var searchConditionTypeInt = (int?)searchConditionType;
            var findObject             = new FindObject
            {
                Conditions = new Condition[]
                {
                    new Condition {
                        Type      = searchConditionTypeInt,
                        Operator  = searchOperatorTypeInt,
                        Attribute = attributeId
                    }
                },
                Filters = new Filter[]
                {}
            };

            return(findObject);
        }
Esempio n. 7
0
        /// <summary>
        /// Закрытый метод создания объекта поиска по аттрибуту в определнной группе объектов
        /// </summary>
        /// <param name="objecteId">Id объекта для фильтра значения</param>
        /// <param name="attributeId">значение для поиска</param>
        /// <param name="filterTypes">Фильтр типа(по родительскому каталогу или по Id класса объекта)</param>
        /// <param name="searchConditionType">Параметр условия поиска, значение Enum указывает по какому критерию будет поиск</param>
        /// <param name="searchOperatorType">Оператор операции поиска</param>
        /// <returns>Список объектов FindObject</returns>
        private FindObject MakeFindObject(string objectId, string attributeId, FilterTypes filterTypes, SearchConditionType searchConditionType, SearchOperatorType searchOperatorType)
        {
            var newFindObject = new FindObject();

            var findObject = new FindObject
            {
                Filters = new Filter[]
                {
                    new Filter()
                    {
                        Type  = (int)filterTypes,
                        Value = objectId
                    }
                },

                Conditions = new Condition[]
                {
                    new Condition {
                        Type      = (int?)searchConditionType,
                        Operator  = (int?)searchOperatorType,
                        Attribute = attributeId
                    }
                }
            };

            return(findObject);
        }
Esempio n. 8
0
        /// <summary>
        /// Основной метод обновления данных по атрибуту
        /// </summary>
        /// <param name="existedAttributeId">Значение которое необходимо изменить</param>
        /// <param name="newValue">Значение на которое необходимо изменить</param>
        /// <param name="newVsearchConditionTypealue">Значение на которое необходимо изменить</param>
        /// <param name="searchOperatorType">Значение на которое необходимо изменить</param>
        /// <param name="address">Относительный адрес API сервиса (опциональное значение)</param>
        /// <returns>Список объектов Result</returns>
        public async Task <List <UpdateResult> > UpdateAttributeAsync(string existedAttributeId, string newValue, SearchConditionType searchConditionType, SearchOperatorType searchOperatorType, string address = @"api/objects")
        {
            var existedObjects = await search.SearchObjectAsync(existedAttributeId, searchConditionType, searchOperatorType, address);

            List <UpdateResult> results = new List <UpdateResult>();

            foreach (var @object in existedObjects)
            {
                var sortedattributes = SortingAttributes(@object, existedAttributeId, newValue);
                results.AddRange(await SendRequestAsync(address, @object.ObjectId, sortedattributes));
            }
            return(results);
        }