From 2ba6a57975f65a6bfac4b15ec5df5119cb7e681c Mon Sep 17 00:00:00 2001 From: Olga Nemt Date: Fri, 3 Feb 2023 11:15:14 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B5=D1=84=D0=B0=D0=BA=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=BD=D0=B3=20+=20=D1=83=D1=8C=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D1=8B=20=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B5=20using?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AsbCloudApp/Requests/MessageRequest.cs | 10 ++--- .../Services/SAUB/MessageService.cs | 38 ++++++++++--------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/AsbCloudApp/Requests/MessageRequest.cs b/AsbCloudApp/Requests/MessageRequest.cs index d352f4f7..8f7f06f6 100644 --- a/AsbCloudApp/Requests/MessageRequest.cs +++ b/AsbCloudApp/Requests/MessageRequest.cs @@ -1,8 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace AsbCloudApp.Requests { @@ -10,7 +7,7 @@ namespace AsbCloudApp.Requests /// /// параметры для запроса списка сообщений /// - public class MessageRequestBase: RequestBase + public class MessageRequestBase : RequestBase { /// /// категория @@ -26,7 +23,7 @@ namespace AsbCloudApp.Requests /// /// конечная дата /// - public DateTime? End { get; set; } + public DateTime? End { get; set; } /// /// строка поиска @@ -38,7 +35,8 @@ namespace AsbCloudApp.Requests /// /// параметры для запроса списка сообщений (с id скважины) /// - public class MessageRequest: MessageRequestBase { + public class MessageRequest : MessageRequestBase + { /// /// id скважины diff --git a/AsbCloudInfrastructure/Services/SAUB/MessageService.cs b/AsbCloudInfrastructure/Services/SAUB/MessageService.cs index fe195fea..cd4a1749 100644 --- a/AsbCloudInfrastructure/Services/SAUB/MessageService.cs +++ b/AsbCloudInfrastructure/Services/SAUB/MessageService.cs @@ -13,6 +13,7 @@ using System.Linq; using System.Threading; using System.Threading.Tasks; +#nullable enable namespace AsbCloudInfrastructure.Services.SAUB { public class MessageService : IMessageService @@ -28,16 +29,21 @@ namespace AsbCloudInfrastructure.Services.SAUB public async Task> GetMessagesAsync(MessageRequest request, CancellationToken token) { + var result = new PaginationContainer + { + Skip = request.Skip ?? 0, + Take = request.Take ?? 32, + }; var idTelemetry = telemetryService.GetOrDefaultIdTelemetryByIdWell(request.IdWell); if (idTelemetry is null) - return null; + return result; var allEvents = await db.TelemetryEvents.FromCacheAsync(token); var events = allEvents.Where(e => e.IdTelemetry == idTelemetry); if (!events.Any()) - return null; + return result; var query = db.TelemetryMessages.Where(m => m.IdTelemetry == idTelemetry) .OrderBy(m => m.DateTime).AsNoTracking(); @@ -53,7 +59,7 @@ namespace AsbCloudInfrastructure.Services.SAUB var eventIds = events.Select(e => e.IdEvent); if (!eventIds.Any()) - return null; + return result; query = query.Where(m => eventIds.Contains(m.IdEvent)); } @@ -62,31 +68,26 @@ namespace AsbCloudInfrastructure.Services.SAUB var timezone = telemetryService.GetTimezone(idTelemetry ?? default); - if (request.Begin != default) + if (request.Begin is not null) { var beginUtc = request.Begin.Value.ToUtcDateTimeOffset(timezone.Hours); query = query.Where(m => m.DateTime >= beginUtc); } - if (request.End != default) + if (request.End is not null) { var endUtc = request.End.Value.ToUtcDateTimeOffset(timezone.Hours); query = query.Where(m => m.DateTime <= endUtc); } - var result = new PaginationContainer - { - Skip = request.Skip ?? 0, - Take = request.Take ?? 32, - Count = query.Count() - }; + result.Count = query.Count(); if (request.SortFields?.Any() == true) { query = query.SortBy(request.SortFields); } - var messagesList = await query.Skip(request.Skip ?? 0) - .Take(request.Take ?? 32).AsNoTracking() + var messagesList = await query.Skip(result.Skip) + .Take(result.Take).AsNoTracking() .ToListAsync(token).ConfigureAwait(false); if (messagesList.Count == 0) @@ -95,8 +96,8 @@ namespace AsbCloudInfrastructure.Services.SAUB var allUsers = await db.TelemetryUsers.FromCacheAsync(token); var users = allUsers.Where(u => u.IdTelemetry == idTelemetry); - var eventsDict = events.GroupBy(x => x.IdEvent).ToDictionary(x => x.Key, x => x.FirstOrDefault()); - var usersDict = users.GroupBy(x => x.IdUser).ToDictionary(x => x.Key, x => x.FirstOrDefault()); + var eventsDict = events.ToDictionary(x=>x.IdEvent, x => x); + var usersDict = users.ToDictionary(x => x.IdUser, x => x); foreach (var message in messagesList) { @@ -110,7 +111,7 @@ namespace AsbCloudInfrastructure.Services.SAUB if (message.IdTelemetryUser is not null) { - if (usersDict.TryGetValue((int)message.IdTelemetryUser, out TelemetryUser user)) + if (usersDict.TryGetValue((int)message.IdTelemetryUser, out TelemetryUser? user)) { messageDto.User = user.MakeDisplayName(); } @@ -118,7 +119,7 @@ namespace AsbCloudInfrastructure.Services.SAUB messageDto.User = message.IdTelemetryUser.ToString(); } - if (eventsDict.TryGetValue(message.IdEvent, out TelemetryEvent e)) + if (eventsDict.TryGetValue(message.IdEvent, out TelemetryEvent? e)) { messageDto.CategoryId = e.IdCategory; messageDto.Message = e.MakeMessageText(message); @@ -134,7 +135,7 @@ namespace AsbCloudInfrastructure.Services.SAUB CancellationToken token = default) { if (!dtos.Any()) - return null; + return Task.CompletedTask; var telemetryId = telemetryService.GetOrCreateTelemetryIdByUid(uid); var timezone = telemetryService.GetTimezone(telemetryId); @@ -152,3 +153,4 @@ namespace AsbCloudInfrastructure.Services.SAUB } } } +#nullable disable