Beispiel #1
0
        static async Task Main(string[] args)
        {
            var provider = new ServiceCollection()
                           .AddMemoryCache()
                           .BuildServiceProvider();

            var cache      = provider.GetService <IMemoryCache>();
            var dbPIParams = new DBPIParams()
            {
                ConnectionString = "server=127.0.0.1;port=3307;uid=gpnadmin;pwd=8FxLWcquHb;database=pidump"
            };
            var connectionService = new ConnectionService(dbPIParams);

            var errorNo = 0;

            for (ulong i = 10217; i < 15000; i++)
            {
                var(success, error, body) = await PI.GetInitiativeExportAsync(cache, i).ConfigureAwait(false);

                errorNo = success ? 0 : errorNo + 1;
                if (errorNo > 100)
                {
                    break;
                }
                await Task.Delay(500);

                try
                {
                    var initiative = success ?
                                     JsonSerializer.Deserialize <Initiative>(body, GPNJsonSerializer.Option()) :
                                     new Initiative()
                    {
                        Iid = i
                    };

                    var apiLogWebRepository = new InitiativeRepository(connectionService);
                    (success, _, _) = await apiLogWebRepository.PostAsync(initiative).ConfigureAwait(false);

                    if (!success)
                    {
                        ;
                    }
                }
                catch (Exception ex)
                {
                    ;
                }
            }
        }
Beispiel #2
0
 public AnswerService(IConnectionService connectionService,
                      IMemoryCache memoryCache,
                      UsersRepository users,
                      WebSocketHandler webSocketHandler,
                      IOptions <MessageParams> messageOptions,
                      IOptions <Dialog> dialogOptions,
                      IOptions <DBPIParams> dbPIParamsOptions
                      )
 {
     _connectionService = connectionService;
     _cache             = memoryCache;
     _users             = users;
     _webSocketHandler  = webSocketHandler;
     _messageParams     = messageOptions.Value;
     _dialog            = dialogOptions.Value;
     _dbPIParams        = dbPIParamsOptions.Value;
 }
Beispiel #3
0
        public static async Task <(bool, string, Message)> FindReferenceDataByQuestion(Message source, long serviceId, User user,
                                                                                       UsersRepository users, MessageParams messageParams, DBPIParams dbPIParams)
        {
            // TODO must be 1
            var startTime = DateTime.Now;
            var question  = source.Body;

            var lastMessageID = users.GetLastMessageID(user.GUID);

            var(success, error, apsolutionsAnswer) = await SearchText(user.GUID, user.Fio, user.Position, user.EmploymentDate, serviceId, question).ConfigureAwait(false);

            if (users.IsOlderThenLast(user.GUID, lastMessageID))
            {
                return(false, error, null);
            }
            // TODO if(service != null && apsolutionsAnswer.QuestionCategory == "information")

            if (!success || apsolutionsAnswer is null || apsolutionsAnswer.Records is null || apsolutionsAnswer.Records.Length == 0)
            {
                users.SetLastMessageID(user.GUID);
                return(false, null, Message.Answer(source, success ? messageParams.NotFound : messageParams.AIError, DateTime.Now.Ticks - startTime.Ticks));
            }

            var userMessages = new Queue <Message>();

            foreach (var record in apsolutionsAnswer.Records)
            {
                var    body = record.Text;
                string description = null, title = null;
                ulong  iid = 0;
                if (ulong.TryParse(body, out var pid))
                {
                    var initiativeRepository = new InitiativeRepository(new ConnectionService(dbPIParams));
                    var(notFound, _, info) = await initiativeRepository.GetAsync(pid).ConfigureAwait(false);

                    if (notFound)
                    {
                        title       = info.Problem.Length < 65 ? info.Problem : $"{info.Problem.Substring(0, 62)}...";
                        body        = $"<div class=\"gpn-source\">Портал инициатив &#62; {info.Iid}</div><div class=\"gpn-title\">{title}</div><div class=\"gpn-shortDescription\">{info.Organization} {info.Status}</div>";
                        description =
                            $"<div class=\"gpn-key\">Инициатива:</div><div class=\"gpn-value\">{info.Iid}</div>" +
                            $"<div class=\"gpn-key\">Создана:</div><div class=\"gpn-value\">{info.Created:dd.MM.yyyy}</div>" +
                            $"<div class=\"gpn-key\">Автор:</div><div class=\"gpn-value\">{info.Author}</div>" +
                            $"<div class=\"gpn-key\">Организация/подразделение:</div><div class=\"gpn-value\">{info.Organization}</div>" +
                            $"<div class=\"gpn-key\">Проблема:</div><div class=\"gpn-value\">{info.Problem}</div>" +
                            $"<div class=\"gpn-key\">Решение:</div><div class=\"gpn-value\">{info.Solution}</div>" +
                            $"<div class=\"gpn-key\">Статус:</div><div class=\"gpn-value\">{info.Status}</div>" +
                            $"<div class=\"gpn-key\">Количество комментариев:</div><div class=\"gpn-value\">{info.CommentsCount}</div>" +
                            $"<div class=\"gpn-key\">Дата последнего комментария:</div><div class=\"gpn-value\">{info.LastCommentDate ?? "-"}</div>" +
                            $"<div class=\"gpn-key\">Комментарий:</div><div class=\"gpn-value\">{info.LastCommentText ?? "-"}</div>";
                        iid = pid;
                    }
                }

                var answer = Message.Answer(source, body);
                answer.Description = description;
                answer.Title       = title;
                answer.Iid         = iid;
                answer.CanClick    = true;
                answer.Created     = startTime;

                userMessages.Enqueue(answer);
            }

            users.SetMessages(user.GUID, QueueType.information, userMessages);
            users.SetLastMessageID(user.GUID);
            return(true, null, null);
        }
Beispiel #4
0
 public ConnectionService(DBPIParams dbPIParams)
 {
     connectionString = dbPIParams.ConnectionString;
 }