Exemplo n.º 1
0
        public void SelectCommand(string consoleString)
        {
            if (String.IsNullOrWhiteSpace(consoleString))
            {
                Console.WriteLine("Команда не введена");
            }

            if (Regex.IsMatch(consoleString, @"(?:найди объекты класса)\s(.*)$"))
            {
                try
                {
                    var className = Regex.Match(consoleString, @"(?:класса)\s(.*)").Groups[1].Value.ToLower();
                    var classId   = Dictionaries.systemObjects[className].ToLower();

                    var result = search.SearchObjectAsync(classId, FilterTypes.Class).Result;
                    foreach (var item in result)
                    {
                        Console.WriteLine($"{item.ObjectId} {item.ObjectName}");
                    }
                }
                catch (ArgumentNullException argumentNull)
                {
                    logger.Fatal("Произошло исключение ArgumentNullException", argumentNull);
                    Console.WriteLine(argumentNull.Message);
                }
                catch (ArgumentException argument)
                {
                    logger.Fatal("Произошло исключение ArgumentException", argument);
                    Console.WriteLine(argument.Message);
                }
                catch (Exception exception)
                {
                    logger.Fatal("Произошло исключение", exception);
                    Console.WriteLine(exception.Message);
                }
            }
            else if (Regex.IsMatch(consoleString, @"(?:найди объекты с атрибутом)\s(.*)$"))
            {
                try
                {
                    var value       = Regex.Match(consoleString, @"(?:атрибутом)\s(.*)").Groups[1].Value.ToLower();
                    var attributeId = Dictionaries.attributes[value].ToLower();
                    var result      = search.SearchObjectAsync(attributeId, SearchConditionType.Attribute, SearchOperatorType.Exists).Result;
                    foreach (var item in result)
                    {
                        var className = Dictionaries.systemObjects.Where(x => x.Value.ToLower() == item.EntityId.ToLower()).Select(y => y.Key).FirstOrDefault();
                        Console.WriteLine($"{item.ObjectId} {className}");
                        foreach (var attrib in item.ObjectAttributes)
                        {
                            Console.WriteLine($"{attrib.Id} {attrib.AttributeType}");
                        }
                    }
                }
                catch (ArgumentNullException argumentNull)
                {
                    logger.Fatal("Произошло исключение ArgumentNullException", argumentNull);
                    Console.WriteLine(argumentNull.Message);
                }
                catch (ArgumentException argument)
                {
                    logger.Fatal("Произошло исключение ArgumentException", argument);
                    Console.WriteLine(argument.Message);
                }
                catch (Exception exception)
                {
                    logger.Fatal("Произошло исключение", exception);
                    Console.WriteLine(exception.Message);
                }
            }
            else if (Regex.IsMatch(consoleString, @"(?:найдем объекты класса)\s(.*)\s(присвоим атрибуту)\s(.*)\s(значение)\s(.*)$"))
            {
                try
                {
                    var match       = Regex.Match(consoleString, @"(?:найдем объекты класса)\s(.*)\s(присвоим атрибуту)\s(.*)\s(значение)\s(.*)$");
                    var objectId    = Dictionaries.systemObjects[match.Groups[1].Value].ToLower();
                    var attributeId = Dictionaries.attributes[match.Groups[3].Value].ToLower();
                    var value       = match.Groups[5].Value.ToLower();
                    var result      = update.UpdateAttributeAsync(objectId, attributeId, value, FilterTypes.Class).Result;

                    Console.WriteLine($"Операция выполнена успешно. Изменеия произведены в {result.Count} объектах");
                }
                catch (ArgumentNullException argumentNull)
                {
                    logger.Fatal("Произошло исключение ArgumentNullException", argumentNull);
                    Console.WriteLine(argumentNull.Message);
                }
                catch (ArgumentException argument)
                {
                    logger.Fatal("Произошло исключение ArgumentException", argument);
                    Console.WriteLine(argument.Message);
                }
                catch (Exception exception)
                {
                    logger.Fatal("Произошло исключение", exception);
                    Console.WriteLine(exception.Message);
                }
            }
            else if (Regex.IsMatch(consoleString, @"(?:найдем объекты класса)\s(.*)\s(присвоим атрибуту)\s(.*)\s(объект)\s(.*)$"))
            {
                try
                {
                    var match       = Regex.Match(consoleString, @"(?:найдем объекты класса)\s(.*)\s(присвоим атрибуту)\s(.*)\s(объект)\s(.*)$");
                    var classId     = Dictionaries.systemObjects[match.Groups[1].Value.ToLower()].ToLower();
                    var attributeId = Dictionaries.attributes[match.Groups[3].Value.ToLower()].ToLower();
                    var value       = match.Groups[5].Value.ToLower();

                    var result = update.UpdateAttributeAsync(classId, attributeId, value, FilterTypes.Class).Result;

                    Console.WriteLine($"Операция выполнена успешно. Изменеия произведены в {result.Count} объектах");
                }
                catch (ArgumentNullException argumentNull)
                {
                    logger.Fatal("Произошло исключение ArgumentNullException", argumentNull);
                    Console.WriteLine(argumentNull.Message);
                }
                catch (ArgumentException argument)
                {
                    logger.Fatal("Произошло исключение ArgumentException", argument);
                    Console.WriteLine(argument.Message);
                }
                catch (Exception exception)
                {
                    logger.Fatal("Произошло исключение", exception);
                    Console.WriteLine(exception.Message);
                }
            }
            else
            {
                Console.WriteLine("Плохая команда, сверьте синтаксис");
            }
        }