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) { ; } } }
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; }
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\">Портал инициатив > {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); }
public ConnectionService(DBPIParams dbPIParams) { connectionString = dbPIParams.ConnectionString; }