From 5752ad40b77bd317e50717ff4097135b2edf94e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Tue, 7 Dec 2021 18:27:52 +0500 Subject: [PATCH] some rider recommendations and spelling --- AsbCloudApp/Services/ICrudService.cs | 2 +- AsbCloudApp/Services/ITimeZoneService.cs | 4 +- AsbCloudApp/Services/IWellOperationService.cs | 2 +- AsbCloudInfrastructure/DependencyInjection.cs | 2 +- AsbCloudInfrastructure/MapsterExtension.cs | 13 +- .../ReportDataSourcePgCloud.cs | 24 ++-- .../Services/AuthService.cs | 33 +++-- .../Services/Cache/CacheTable.cs | 113 ++++++++++-------- .../Services/CrudServiceBase.cs | 4 +- .../Services/EventService.cs | 2 +- .../Services/MessageService.cs | 2 +- .../Services/SetpointsService.cs | 4 +- .../Services/TelemetryDataBaseService.cs | 2 +- .../Services/TelemetryService.cs | 20 ++-- .../Services/TelemetryTracker.cs | 6 +- .../Services/TelemetryUserService.cs | 2 +- .../Services/TimeZoneService.cs | 6 +- .../Services/UserRoleService.cs | 46 ++++--- .../Services/WellCompositeService.cs | 4 +- .../OperationsStatService.cs | 2 +- .../WellOperationImportService.cs | 15 +-- .../WellOperationService.cs | 10 +- .../Services/_CachedCrudService.cs | 48 -------- .../Controllers/AdminClusterController.cs | 2 +- .../Controllers/AdminDepositController.cs | 2 +- .../Controllers/AdminTelemetryController.cs | 4 +- .../Controllers/AdminWellController.cs | 2 +- .../Controllers/DrillFlowChartController.cs | 2 +- .../Controllers/TelemetryController.cs | 2 +- .../TelemetryDataBaseController.cs | 2 +- 30 files changed, 163 insertions(+), 219 deletions(-) delete mode 100644 AsbCloudInfrastructure/Services/_CachedCrudService.cs diff --git a/AsbCloudApp/Services/ICrudService.cs b/AsbCloudApp/Services/ICrudService.cs index 99f42035..96034159 100644 --- a/AsbCloudApp/Services/ICrudService.cs +++ b/AsbCloudApp/Services/ICrudService.cs @@ -7,7 +7,7 @@ namespace AsbCloudApp.Services public interface ICrudService where Tdto : Data.IId { - List Incledes { get; } + List Includes { get; } Task InsertAsync(Tdto newItem, CancellationToken token = default); Task InsertRangeAsync(IEnumerable newItems, CancellationToken token = default); Task> GetAllAsync(CancellationToken token = default); diff --git a/AsbCloudApp/Services/ITimeZoneService.cs b/AsbCloudApp/Services/ITimeZoneService.cs index 87be0d67..213aed03 100644 --- a/AsbCloudApp/Services/ITimeZoneService.cs +++ b/AsbCloudApp/Services/ITimeZoneService.cs @@ -6,8 +6,8 @@ namespace AsbCloudApp.Services { public interface ITimeZoneService { - DateTime DateToUtc(DateTime date, double remoteOTimezoneffsetHours); - DateTime DateToTimeZone(DateTime date, double remoteOTimezoneffsetHours); + DateTime DateToUtc(DateTime date, double remoteTimezoneOffsetHours); + DateTime DateToTimeZone(DateTime date, double remoteTimezoneOffsetHours); Task GetByCoordinatesAsync(double latitude, double longitude, CancellationToken token); } } \ No newline at end of file diff --git a/AsbCloudApp/Services/IWellOperationService.cs b/AsbCloudApp/Services/IWellOperationService.cs index 6844cd7f..40b1c035 100644 --- a/AsbCloudApp/Services/IWellOperationService.cs +++ b/AsbCloudApp/Services/IWellOperationService.cs @@ -12,7 +12,7 @@ namespace AsbCloudApp.Services Task> GetOperationsAsync( int idWell, - int? opertaionType = null, + int? operationType = null, IEnumerable sectionTypeIds = null, IEnumerable operationCategoryIds = null, DateTime begin = default, diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 84267023..c71d548f 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -26,7 +26,7 @@ namespace AsbCloudInfrastructure public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration) { services.AddDbContext(options => - options.UseNpgsql(configuration.GetConnectionString("DefaultConnection")), ServiceLifetime.Scoped); + options.UseNpgsql(configuration.GetConnectionString("DefaultConnection"))); services.AddScoped(provider => provider.GetService()); services.AddScoped(); diff --git a/AsbCloudInfrastructure/MapsterExtension.cs b/AsbCloudInfrastructure/MapsterExtension.cs index d0ee8141..9f678a80 100644 --- a/AsbCloudInfrastructure/MapsterExtension.cs +++ b/AsbCloudInfrastructure/MapsterExtension.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; namespace Mapster { @@ -7,24 +8,21 @@ namespace Mapster { public static IEnumerable Adapt(this IEnumerable sourceList) { - foreach (var item in sourceList) - yield return item.Adapt(); + return sourceList.Select(item => item.Adapt()); } public static TDestination Adapt(this object source, Action afterMapAction = default) { var dest = source.Adapt(); - if (afterMapAction != default) - afterMapAction(dest); + afterMapAction?.Invoke(dest); return dest; } public static TDestination Adapt(this TSource source, Action afterMapAction = default) { var dest = source.Adapt(); - if (afterMapAction != default) - afterMapAction(dest, source); + afterMapAction?.Invoke(dest, source); return dest; } @@ -33,8 +31,7 @@ namespace Mapster foreach (var item in sourceList) { var dest = item.Adapt(); - if (eachAfterMapAction != default) - eachAfterMapAction(dest, item); + eachAfterMapAction?.Invoke(dest, item); yield return dest; } diff --git a/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs b/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs index 9a71b3aa..8f5bff6b 100644 --- a/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs +++ b/AsbCloudInfrastructure/ReportDataSourcePgCloud.cs @@ -1,11 +1,11 @@ -using AsbCloudDb.Model; -using AsbSaubReport.Model; -using Microsoft.EntityFrameworkCore; -using System; +using System; using System.Collections.Generic; using System.Linq; +using AsbCloudDb.Model; +using AsbSaubReport.Model; +using Microsoft.EntityFrameworkCore; -namespace AsbSaubReport +namespace AsbCloudInfrastructure { public class ReportDataSourcePgCloud : IReportDataSource { @@ -48,13 +48,13 @@ namespace AsbSaubReport info = new WellInfoReport { - Deposit = well.Cluster.Deposit.Caption, - Cluster = well.Cluster.Caption, - Well = well.Caption, - Customer = well.RelationCompaniesWells.FirstOrDefault(c => c.Company.IdCompanyType == 1)?.Company.Caption, - DrillingStartDate = well.Telemetry?.Info?.DrillingStartDate ?? default, - TimeZoneId = well.Telemetry?.Info?.TimeZoneId ?? default, - TimeZoneOffsetTotalHours = well.Telemetry?.Info?.TimeZoneOffsetTotalHours ?? default, + Deposit = well?.Cluster?.Deposit?.Caption, + Cluster = well?.Cluster?.Caption, + Well = well?.Caption, + Customer = well?.RelationCompaniesWells.FirstOrDefault(c => c.Company.IdCompanyType == 1)?.Company.Caption, + DrillingStartDate = well?.Telemetry?.Info?.DrillingStartDate ?? default, + TimeZoneId = well?.Telemetry?.Info?.TimeZoneId ?? default, + TimeZoneOffsetTotalHours = well?.Telemetry?.Info?.TimeZoneOffsetTotalHours ?? default, }; } diff --git a/AsbCloudInfrastructure/Services/AuthService.cs b/AsbCloudInfrastructure/Services/AuthService.cs index a8f3611d..d73c398b 100644 --- a/AsbCloudInfrastructure/Services/AuthService.cs +++ b/AsbCloudInfrastructure/Services/AuthService.cs @@ -26,15 +26,15 @@ namespace AsbCloudInfrastructure.Services public const string issuer = "a"; public const string audience = "a"; - public static readonly SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("супер секретный ключ для шифрования")); - public const string algorithms = SecurityAlgorithms.HmacSha256; + public static readonly SymmetricSecurityKey securityKey = new (Encoding.ASCII.GetBytes("супер секретный ключ для шифрования")); + private const string algorithms = SecurityAlgorithms.HmacSha256; private static readonly TimeSpan expiresTimespan = TimeSpan.FromDays(365.25); private static readonly Encoding encoding = Encoding.UTF8; private const int PasswordSaltLength = 5; private const string claimIdUser = "id"; - private const string claimNameidCompany = "idCompany"; - private readonly HashAlgorithm hashAlgoritm; + private const string claimNameIdCompany = "idCompany"; + private readonly HashAlgorithm hashAlgorithm; private readonly Random rnd; public AuthService(IAsbCloudDbContext db, CacheDb cacheDb) @@ -44,7 +44,7 @@ namespace AsbCloudInfrastructure.Services cacheUsersUserRoles = cacheDb.GetCachedTable((AsbCloudDbContext)db); cachePermissions = cacheDb.GetCachedTable((AsbCloudDbContext)db); cacheUserRolesPermissions = cacheDb.GetCachedTable((AsbCloudDbContext)db); - hashAlgoritm = SHA384.Create(); + hashAlgorithm = SHA384.Create(); rnd = new Random((int)(DateTime.Now.Ticks % 2147480161)); } @@ -123,7 +123,7 @@ namespace AsbCloudInfrastructure.Services try { db.SaveChanges(); - db.RelationUserUserRoles.Add(new RelationUserUserRole() + db.RelationUserUserRoles.Add(new RelationUserUserRole { IdUser = newUser.Id, IdUserRole = 2 @@ -167,8 +167,8 @@ namespace AsbCloudInfrastructure.Services var now = DateTime.Now; var jwt = new JwtSecurityToken( - issuer: issuer, - audience: audience, + issuer, + audience, notBefore: now, claims: claims, expires: now.Add(expiresTimespan), @@ -214,14 +214,11 @@ namespace AsbCloudInfrastructure.Services if (!CheckPassword(user.PasswordHash, password)) return default; - var userRolesNames = GetUserRoles(user.Id) - .Select(r => r.Caption); - var claims = new List { - new Claim(claimIdUser, user.Id.ToString()), - new Claim(ClaimsIdentity.DefaultNameClaimType, user.Login), - new Claim(claimNameidCompany, user.IdCompany.ToString()), + new (claimIdUser, user.Id.ToString()), + new (ClaimsIdentity.DefaultNameClaimType, user.Login), + new (claimNameIdCompany, user.IdCompany.ToString()), }; var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType); @@ -244,18 +241,18 @@ namespace AsbCloudInfrastructure.Services private string ComputeHash(string salt, string password) { - var hashBytes = hashAlgoritm.ComputeHash(encoding.GetBytes(salt + password)); + var hashBytes = hashAlgorithm.ComputeHash(encoding.GetBytes(salt + password)); var hashString = BitConverter.ToString(hashBytes) .Replace("-", "") .ToLower(); return hashString; } - public string GenerateSalt() + private string GenerateSalt() { const string saltChars = "sHwiaX7kZT1QRp0cPILGUuK2Sz=9q8lmejDNfoYCE3B_WtgyVv6M5OxAJ4Frbhnd"; - string salt = ""; - for (int i = 0; i < PasswordSaltLength - 1; i++) + var salt = ""; + for (var i = 0; i < PasswordSaltLength - 1; i++) salt += saltChars[rnd.Next(0, saltChars.Length)]; salt += "|"; return salt; diff --git a/AsbCloudInfrastructure/Services/Cache/CacheTable.cs b/AsbCloudInfrastructure/Services/Cache/CacheTable.cs index ebee1683..10fa3488 100644 --- a/AsbCloudInfrastructure/Services/Cache/CacheTable.cs +++ b/AsbCloudInfrastructure/Services/Cache/CacheTable.cs @@ -44,7 +44,8 @@ namespace AsbCloudInfrastructure.Services.Cache Refresh(false); } - internal CacheTable(DbContext context, CacheTableDataStore data, Func, IQueryable> configureDbSet = null) + internal CacheTable(DbContext context, CacheTableDataStore data, + Func, IQueryable> configureDbSet = null) { this.context = context; this.data = data; @@ -57,7 +58,10 @@ namespace AsbCloudInfrastructure.Services.Cache Refresh(false); } - public TEntity this[int index] { get => cached.ElementAt(index); } + public TEntity this[int index] + { + get => cached.ElementAt(index); + } /// /// Runs action like atomic operation. @@ -87,6 +91,7 @@ namespace AsbCloudInfrastructure.Services.Cache { semaphore.Release(); } + return result; } @@ -97,7 +102,8 @@ namespace AsbCloudInfrastructure.Services.Cache /// /// (wasFree) => {...} /// default if semaphoreTimeout. Or result of func(..) - private static async Task SyncAsync(Func> funcAsync, CancellationToken token = default) + private static async Task SyncAsync(Func> funcAsync, + CancellationToken token = default) { var wasFree = semaphore.CurrentCount > 0; T result = default; @@ -111,7 +117,8 @@ namespace AsbCloudInfrastructure.Services.Cache } catch (Exception ex) { - Trace.WriteLine($"{DateTime.Now:yyyy.MM.dd HH:mm:ss:fff} error in CacheTable<{nameOfTEntity}>.SyncAsync()"); + Trace.WriteLine( + $"{DateTime.Now:yyyy.MM.dd HH:mm:ss:fff} error in CacheTable<{nameOfTEntity}>.SyncAsync()"); Trace.WriteLine(ex.Message); Trace.WriteLine(ex.StackTrace); } @@ -119,6 +126,7 @@ namespace AsbCloudInfrastructure.Services.Cache { semaphore.Release(); } + return result; } @@ -133,6 +141,7 @@ namespace AsbCloudInfrastructure.Services.Cache cached.AddRange(entities); data.LastResreshDate = DateTime.Now; } + return cached.Count; } @@ -148,18 +157,20 @@ namespace AsbCloudInfrastructure.Services.Cache cached.AddRange(entities); data.LastResreshDate = DateTime.Now; } + return cached.Count; } public int Refresh(bool force) - => Sync((wasFree) => wasFree ? InternalRefresh(force) : 0); + => Sync((wasFree) => wasFree ? InternalRefresh(force) : 0); public Task RefreshAsync(bool force, CancellationToken token = default) { - return SyncAsync(async (wasFree, token) => - { - return wasFree ? await InternalRefreshAsync(force, token).ConfigureAwait(false) : 0; - }, token); + return SyncAsync( + async (wasFree, token) => + { + return wasFree ? await InternalRefreshAsync(force, token).ConfigureAwait(false) : 0; + }, token); } public bool Contains(Func predicate) @@ -169,22 +180,22 @@ namespace AsbCloudInfrastructure.Services.Cache => await FirstOrDefaultAsync(predicate, token) != default; public TEntity GetOrCreate(Func predicate, Func makeNew) - => Sync(wasFree => - { - var result = cached.FirstOrDefault(predicate); - if (result != default) - return result; + => Sync(wasFree => + { + var result = cached.FirstOrDefault(predicate); + if (result != default) + return result; - InternalRefresh(true); - result = cached.FirstOrDefault(predicate); - if (result != default) - return result; + InternalRefresh(true); + result = cached.FirstOrDefault(predicate); + if (result != default) + return result; - var entry = dbSet.Add(makeNew()); - context.SaveChanges(); - InternalRefresh(true); - return entry.Entity; - }); + var entry = dbSet.Add(makeNew()); + context.SaveChanges(); + InternalRefresh(true); + return entry.Entity; + }); public TEntity FirstOrDefault() { @@ -278,17 +289,17 @@ namespace AsbCloudInfrastructure.Services.Cache } public Task UpsertAsync(TEntity entity, CancellationToken token = default) - => SyncAsync(async (wasFree, token) => - { - if (dbSet.Contains(entity)) - dbSet.Update(entity); - else - dbSet.Add(entity); - var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); - if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); - return affected; - }, token); + => SyncAsync(async (wasFree, token) => + { + if (dbSet.Contains(entity)) + dbSet.Update(entity); + else + dbSet.Add(entity); + var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); + if (affected > 0) + await InternalRefreshAsync(true, token).ConfigureAwait(false); + return affected; + }, token); public int Upsert(IEnumerable entities) { @@ -304,6 +315,7 @@ namespace AsbCloudInfrastructure.Services.Cache else dbSet.Add(entity); } + var affected = context.SaveChanges(); if (affected > 0) InternalRefresh(true); @@ -326,6 +338,7 @@ namespace AsbCloudInfrastructure.Services.Cache else dbSet.Add(entity); } + var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); if (affected > 0) await InternalRefreshAsync(true, token).ConfigureAwait(false); @@ -334,7 +347,7 @@ namespace AsbCloudInfrastructure.Services.Cache } public int Remove(Func predicate) - => Sync(_ => + => Sync(_ => { dbSet.RemoveRange(dbSet.Where(predicate)); var affected = context.SaveChanges(); @@ -368,25 +381,25 @@ namespace AsbCloudInfrastructure.Services.Cache public Task InsertAsync(TEntity entity, CancellationToken token = default) { return SyncAsync(async (wasFree, token) => - { - var entry = dbSet.Add(entity); - var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); - if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); - return entry.Entity; - }, token); + { + var entry = dbSet.Add(entity); + var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); + if (affected > 0) + await InternalRefreshAsync(true, token).ConfigureAwait(false); + return entry.Entity; + }, token); } public int Insert(IEnumerable newEntities) { return Sync(_ => - { - dbSet.AddRange(newEntities); - var affected = context.SaveChanges(); - if (affected > 0) - InternalRefresh(true); - return affected; - }); + { + dbSet.AddRange(newEntities); + var affected = context.SaveChanges(); + if (affected > 0) + InternalRefresh(true); + return affected; + }); } public Task InsertAsync(IEnumerable newEntities, CancellationToken token = default) @@ -405,4 +418,4 @@ namespace AsbCloudInfrastructure.Services.Cache IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); } -} +} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/CrudServiceBase.cs b/AsbCloudInfrastructure/Services/CrudServiceBase.cs index 10d4141a..a8cbacf3 100644 --- a/AsbCloudInfrastructure/Services/CrudServiceBase.cs +++ b/AsbCloudInfrastructure/Services/CrudServiceBase.cs @@ -18,7 +18,7 @@ namespace AsbCloudInfrastructure.Services protected readonly IAsbCloudDbContext context; protected readonly DbSet dbSet; - public List Incledes { get; } = new List(); + public List Includes { get; } = new List(); public CrudServiceBase(IAsbCloudDbContext context) { @@ -139,7 +139,7 @@ namespace AsbCloudInfrastructure.Services private IQueryable GetQueryWithIncludes() { IQueryable query = dbSet; - foreach (var include in Incledes) + foreach (var include in Includes) query = query.Include(include); return query; } diff --git a/AsbCloudInfrastructure/Services/EventService.cs b/AsbCloudInfrastructure/Services/EventService.cs index d1d2f86e..f34d5cf0 100644 --- a/AsbCloudInfrastructure/Services/EventService.cs +++ b/AsbCloudInfrastructure/Services/EventService.cs @@ -26,7 +26,7 @@ namespace AsbCloudInfrastructure.Services if (!dtos.Any()) return; - var telemetryId = telemetryService.GetOrCreateTemetryIdByUid(uid); + var telemetryId = telemetryService.GetOrCreateTelemetryIdByUid(uid); var entities = dtos.Select(dto => new TelemetryEvent { diff --git a/AsbCloudInfrastructure/Services/MessageService.cs b/AsbCloudInfrastructure/Services/MessageService.cs index 11fd706a..e615cea5 100644 --- a/AsbCloudInfrastructure/Services/MessageService.cs +++ b/AsbCloudInfrastructure/Services/MessageService.cs @@ -171,7 +171,7 @@ namespace AsbCloudInfrastructure.Services if (!dtos.Any()) return null; - var telemetryId = telemetryService.GetOrCreateTemetryIdByUid(uid); + var telemetryId = telemetryService.GetOrCreateTelemetryIdByUid(uid); var maxDateDto = dtos.Max(m => m.Date); telemetryService.SaveRequestDate(uid, maxDateDto); diff --git a/AsbCloudInfrastructure/Services/SetpointsService.cs b/AsbCloudInfrastructure/Services/SetpointsService.cs index 688d5fa5..8e45a8af 100644 --- a/AsbCloudInfrastructure/Services/SetpointsService.cs +++ b/AsbCloudInfrastructure/Services/SetpointsService.cs @@ -61,7 +61,7 @@ namespace AsbCloudInfrastructure.Services public async Task> GetForPanelAsync(string uid, CancellationToken token) { - var idWell = telemetryService.GetidWellByTelemetryUid(uid) ?? -1; + var idWell = telemetryService.GetIdWellByTelemetryUid(uid) ?? -1; if (idWell < 0) return null; @@ -91,7 +91,7 @@ namespace AsbCloudInfrastructure.Services if (setpointsRequestDto.IdState != 3 && setpointsRequestDto.IdState != 4) throw new ArgumentOutOfRangeException(nameof(setpointsRequestDto), $"{nameof(setpointsRequestDto.IdState)} = {setpointsRequestDto.IdState}. Mast be 3 or 4."); - var idWell = telemetryService.GetidWellByTelemetryUid(uid) ?? -1; + var idWell = telemetryService.GetIdWellByTelemetryUid(uid) ?? -1; if (idWell < 0) return 0; diff --git a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs index f7b11e3b..f3fa8d89 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs @@ -40,7 +40,7 @@ namespace AsbCloudInfrastructure.Services if (dtos == default || !dtos.Any()) return 0; - var idTelemetry = telemetryService.GetOrCreateTemetryIdByUid(uid); + var idTelemetry = telemetryService.GetOrCreateTelemetryIdByUid(uid); var lastTelemetryDate = telemetryService.GetLastTelemetryDate(uid); var dtosList = dtos.OrderBy(d => d.Date).ToList(); diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs index bf490b18..15a646ca 100644 --- a/AsbCloudInfrastructure/Services/TelemetryService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryService.cs @@ -43,14 +43,13 @@ namespace AsbCloudInfrastructure.Services public IEnumerable GetTransmittingTelemetries() { var telemetryDtos = new List(); - IEnumerable activeTelemetriesUids = telemetryTracker.GetTransmittingTelemetriesUids(); - if (activeTelemetriesUids.Any()) - { - var telemetries = cacheTelemetry - .Where(t => activeTelemetriesUids.Contains(t.RemoteUid)); - telemetryDtos = telemetries.Adapt().ToList(); - } - + var activeTelemetriesUids = telemetryTracker.GetTransmittingTelemetriesUids(); + if (!activeTelemetriesUids.Any()) + return telemetryDtos; + var telemetries = cacheTelemetry + .Where(t => activeTelemetriesUids.Contains(t.RemoteUid)); + telemetryDtos = telemetries.Adapt().ToList(); + return telemetryDtos; } @@ -174,10 +173,7 @@ namespace AsbCloudInfrastructure.Services public int? GetIdTelemetryByIdWell(int idWell) { var well = cacheWells.FirstOrDefault(w => w.Id == idWell); - if (well is null) - return null; - - return well.IdTelemetry; + return well?.IdTelemetry; } private async Task<(double latitude, double longitude)?> GetWellCoordinatesAsync(int idWell, diff --git a/AsbCloudInfrastructure/Services/TelemetryTracker.cs b/AsbCloudInfrastructure/Services/TelemetryTracker.cs index 349a0667..8b935254 100644 --- a/AsbCloudInfrastructure/Services/TelemetryTracker.cs +++ b/AsbCloudInfrastructure/Services/TelemetryTracker.cs @@ -78,14 +78,14 @@ namespace AsbCloudInfrastructure.Services .ToListAsync() .ConfigureAwait(false); - var oldReqs = dates.Select(t => new + var oldRequests = dates.Select(t => new { Uid = cacheTelemetry.FirstOrDefault(c => c.Id == t.IdTelemetry)?.RemoteUid, t.DateMax, t.DateMin, }).Where(s => !string.IsNullOrEmpty(s.Uid)); - foreach (var oldReq in oldReqs) + foreach (var oldReq in oldRequests) { var telemetryStat = telemetriesStats.GetOrAdd(oldReq.Uid, (uid) => new TrackerStat { RemoteUid = uid }); telemetryStat.TelemetryDateMin = oldReq.DateMin; @@ -116,7 +116,7 @@ namespace AsbCloudInfrastructure.Services public void SaveRequestDate(string uid, DateTime remoteDate) { - var stat = telemetriesStats.GetOrAdd(uid, (uid) => new TrackerStat { + var stat = telemetriesStats.GetOrAdd(uid, _ => new TrackerStat { RemoteUid = uid, TelemetryDateMin = remoteDate} ); diff --git a/AsbCloudInfrastructure/Services/TelemetryUserService.cs b/AsbCloudInfrastructure/Services/TelemetryUserService.cs index a340ea61..fe6799c3 100644 --- a/AsbCloudInfrastructure/Services/TelemetryUserService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryUserService.cs @@ -24,7 +24,7 @@ namespace AsbCloudInfrastructure.Services if (!dtos.Any()) return; - var telemetryId = telemetryService.GetOrCreateTemetryIdByUid(uid); + var telemetryId = telemetryService.GetOrCreateTelemetryIdByUid(uid); var entities = dtos.Distinct(new TelemetryUserDtoComparer()).Select(dto => new TelemetryUser { diff --git a/AsbCloudInfrastructure/Services/TimeZoneService.cs b/AsbCloudInfrastructure/Services/TimeZoneService.cs index ac1cea7d..9bf0465e 100644 --- a/AsbCloudInfrastructure/Services/TimeZoneService.cs +++ b/AsbCloudInfrastructure/Services/TimeZoneService.cs @@ -10,7 +10,7 @@ namespace AsbCloudInfrastructure.Services { public class TimeZoneService : ITimeZoneService { - class TimeZoneInfo + private class TimeZoneInfo { public string Sunrise { get; set; } public double Lng { get; set; } @@ -25,8 +25,8 @@ namespace AsbCloudInfrastructure.Services public string Time { get; set; } } - private readonly string timeZoneApiUrl = "http://api.geonames.org/timezoneJSON"; - private readonly string timezoneApiUserName = "asbautodrilling"; + private const string timeZoneApiUrl = "http://api.geonames.org/timezoneJSON"; + private const string timezoneApiUserName = "asbautodrilling"; public async Task GetByCoordinatesAsync(double latitude, double longitude, CancellationToken token) { diff --git a/AsbCloudInfrastructure/Services/UserRoleService.cs b/AsbCloudInfrastructure/Services/UserRoleService.cs index 85adf9ff..7bb151a0 100644 --- a/AsbCloudInfrastructure/Services/UserRoleService.cs +++ b/AsbCloudInfrastructure/Services/UserRoleService.cs @@ -16,11 +16,11 @@ namespace AsbCloudInfrastructure.Services private readonly CacheTable cacheUserRoles; private readonly IPermissionService permissionService; - public List Incledes { get; } = new(); + public List Includes { get; } = new(); public UserRoleService(IAsbCloudDbContext context, CacheDb cacheDb, IPermissionService permissionService) { - cacheUserRoles = cacheDb.GetCachedTable((AsbCloudDbContext)context, new string[] { nameof(UserRole.Permissions) }); + cacheUserRoles = cacheDb.GetCachedTable((AsbCloudDbContext)context, new [] { nameof(UserRole.Permissions) }); this.permissionService = permissionService; } @@ -44,14 +44,13 @@ namespace AsbCloudInfrastructure.Services { var entity = dto.Adapt(); var updatedEntity = await cacheUserRoles.InsertAsync(entity, token).ConfigureAwait(false); - if (dto.Permissions?.Any() == true) - { - foreach (var permission in dto.Permissions) - permission.IdUserRole = updatedEntity.Id; - await permissionService.InsertRangeAsync(dto.Permissions, token).ConfigureAwait(false); - await cacheUserRoles.RefreshAsync(true, token) - .ConfigureAwait(false); - } + if (dto.Permissions?.Any() != true) + return updatedEntity?.Id ?? 0; + foreach (var permission in dto.Permissions) + permission.IdUserRole = updatedEntity.Id; + await permissionService.InsertRangeAsync(dto.Permissions, token).ConfigureAwait(false); + await cacheUserRoles.RefreshAsync(true, token) + .ConfigureAwait(false); return updatedEntity?.Id ?? 0; } @@ -91,22 +90,21 @@ namespace AsbCloudInfrastructure.Services private IEnumerable GetNestedPermissions(UserRole role, int counter = 10) { - List permissions = role.Permissions.ToList(); - if (role.IdParent is not null) + var permissions = role.Permissions.ToList(); + if (role.IdParent is null) + return permissions; + if (counter == 0) { - if (counter == 0) - { - Trace.WriteLine($"User role with id: {role.Id} has more than 10 nested childs"); - return permissions; - } - var parentRole = cacheUserRoles.FirstOrDefault(r => r.Id == role.IdParent); - - if (parentRole is null) - return permissions; - - var parentPermissions = GetNestedPermissions(parentRole, counter--); - Merge(ref permissions, parentPermissions); + Trace.WriteLine($"User role with id: {role.Id} has more than 10 nested childs"); + return permissions; } + var parentRole = cacheUserRoles.FirstOrDefault(r => r.Id == role.IdParent); + + if (parentRole is null) + return permissions; + + var parentPermissions = GetNestedPermissions(parentRole, --counter); + Merge(ref permissions, parentPermissions); return permissions; } diff --git a/AsbCloudInfrastructure/Services/WellCompositeService.cs b/AsbCloudInfrastructure/Services/WellCompositeService.cs index 7523af1b..15a6b81e 100644 --- a/AsbCloudInfrastructure/Services/WellCompositeService.cs +++ b/AsbCloudInfrastructure/Services/WellCompositeService.cs @@ -3,10 +3,8 @@ using AsbCloudApp.Services; using AsbCloudDb.Model; using Mapster; using Microsoft.EntityFrameworkCore; -using System; using System.Collections.Generic; using System.Linq; -using System.Text; using System.Threading; using System.Threading.Tasks; @@ -37,7 +35,7 @@ namespace AsbCloudInfrastructure.Services .Where(c => c.IdWell == idWell)); var entities = wellComposites - .Adapt((s, d) => { s.IdWell = idWell; }); + .Adapt((s, _) => { s.IdWell = idWell; }); context.WellComposites.AddRange(entities); return context.SaveChangesAsync(token); diff --git a/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs b/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs index 5f20c8ac..687788c7 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/OperationsStatService.cs @@ -50,7 +50,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService public async Task GetRopStatByUidAsync(string uid, CancellationToken token) { - var idWell = telemetryService.GetidWellByTelemetryUid(uid); + var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell is null) return null; diff --git a/AsbCloudInfrastructure/Services/WellOperationService/WellOperationImportService.cs b/AsbCloudInfrastructure/Services/WellOperationService/WellOperationImportService.cs index b616f8b5..1d87b9b6 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/WellOperationImportService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/WellOperationImportService.cs @@ -34,17 +34,10 @@ namespace AsbCloudInfrastructure.Services.WellOperationService private readonly IAsbCloudDbContext db; private List categories = null; - public List Categories - { - get - { - if (categories is null) - categories = db.WellOperationCategories - .AsNoTracking() - .ToList(); - return categories; - } - } + public List Categories => + categories ?? (categories = db.WellOperationCategories + .AsNoTracking() + .ToList()); private List sections = null; public List Sections diff --git a/AsbCloudInfrastructure/Services/WellOperationService/WellOperationService.cs b/AsbCloudInfrastructure/Services/WellOperationService/WellOperationService.cs index 865e95f2..54e43c03 100644 --- a/AsbCloudInfrastructure/Services/WellOperationService/WellOperationService.cs +++ b/AsbCloudInfrastructure/Services/WellOperationService/WellOperationService.cs @@ -17,7 +17,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService private readonly IAsbCloudDbContext context; private readonly CacheTable cachedOperationCategories; - public WellOperationService(IAsbCloudDbContext context, Cache.CacheDb cache) + public WellOperationService(IAsbCloudDbContext context, CacheDb cache) { this.context = context; cachedOperationCategories = cache.GetCachedTable((DbContext)context); @@ -35,7 +35,7 @@ namespace AsbCloudInfrastructure.Services.WellOperationService public async Task> GetOperationsAsync( int idWell, - int? opertaionType = default, + int? operationType = default, IEnumerable sectionTypeIds = default, IEnumerable operationCategoryIds = default, DateTime begin = default, @@ -51,10 +51,10 @@ namespace AsbCloudInfrastructure.Services.WellOperationService .Include(s => s.OperationCategory) .Where(s => s.IdWell == idWell); - if (opertaionType != default) - query = query.Where(e => e.IdType == (int)opertaionType); + if (operationType != default) + query = query.Where(e => e.IdType == (int)operationType); - if ((sectionTypeIds != default) && sectionTypeIds.Any()) + if (sectionTypeIds != default && sectionTypeIds.Any()) query = query.Where(e => sectionTypeIds.Contains(e.IdWellSectionType)); if (operationCategoryIds != default && operationCategoryIds.Any()) diff --git a/AsbCloudInfrastructure/Services/_CachedCrudService.cs b/AsbCloudInfrastructure/Services/_CachedCrudService.cs deleted file mode 100644 index b330d1c9..00000000 --- a/AsbCloudInfrastructure/Services/_CachedCrudService.cs +++ /dev/null @@ -1,48 +0,0 @@ -//using AsbCloudApp.Data; -//using AsbCloudApp.Services; -//using AsbCloudDb.Model; -//using AsbCloudInfrastructure.Services.Cache; -//using Mapster; -//using Microsoft.EntityFrameworkCore; -//using System; -//using System.Linq; -//using System.Threading; -//using System.Threading.Tasks; - -//namespace AsbCloudInfrastructure.Services -//{ -// public class _CachedCrudService : ICachedCrudService -// where TModel : class, AsbCloudDb.Model.IId -// where Tdto : AsbCloudApp.Data.IId -// { -// private readonly CacheTable cache; - -// public _CachedCrudService(IAsbCloudDbContext db, Cache.CacheDb cacheDb) -// { -// cache = cacheDb.GetCachedTable((DbContext)db); -// } - -// public virtual async Task> GetAsync(int skip = 0, int take = 32, CancellationToken token = default) -// { -// var count = cache.Count(); -// var result = new PaginationContainer { Skip = skip, Take = take, Count = count }; -// if (count <= skip) -// return result; - -// var items = await cache.WhereAsync(token).ConfigureAwait(false); - -// result.Items.AddRange(items.OrderBy(i => i.Id).Skip(skip).Take(take).Select(i => Convert(i))); - -// return result; -// } - -// public virtual Task GetAsync(int id, CancellationToken token = default) -// { -// throw new NotImplementedException(); -// } - -// public virtual Tdto Convert(TModel src) => src.Adapt(); - -// public virtual TModel Convert(Tdto src) => src.Adapt(); -// } -//} diff --git a/AsbCloudWebApi/Controllers/AdminClusterController.cs b/AsbCloudWebApi/Controllers/AdminClusterController.cs index 7f2dd0e1..c285a33d 100644 --- a/AsbCloudWebApi/Controllers/AdminClusterController.cs +++ b/AsbCloudWebApi/Controllers/AdminClusterController.cs @@ -13,7 +13,7 @@ namespace AsbCloudWebApi.Controllers public AdminClusterController(ICrudService service) :base(service) { - service.Incledes.Add("Wells"); + service.Includes.Add("Wells"); } } } diff --git a/AsbCloudWebApi/Controllers/AdminDepositController.cs b/AsbCloudWebApi/Controllers/AdminDepositController.cs index b4b4713c..42775fbc 100644 --- a/AsbCloudWebApi/Controllers/AdminDepositController.cs +++ b/AsbCloudWebApi/Controllers/AdminDepositController.cs @@ -13,7 +13,7 @@ namespace AsbCloudWebApi.Controllers public AdminDepositController(ICrudService service) :base(service) { - service.Incledes.Add("Clusters"); + service.Includes.Add("Clusters"); } } } diff --git a/AsbCloudWebApi/Controllers/AdminTelemetryController.cs b/AsbCloudWebApi/Controllers/AdminTelemetryController.cs index eba4b213..fc2386b4 100644 --- a/AsbCloudWebApi/Controllers/AdminTelemetryController.cs +++ b/AsbCloudWebApi/Controllers/AdminTelemetryController.cs @@ -18,7 +18,7 @@ namespace AsbCloudWebApi.Controllers ITelemetryService telemetryService) : base(service) { - service.Incledes.Add("Well"); + service.Includes.Add("Well"); this.telemetryService = telemetryService; } @@ -27,7 +27,7 @@ namespace AsbCloudWebApi.Controllers [Route("/reduntentUids")] public IActionResult GetRedundentRemoteUids() { - var result = telemetryService.GetRedundentRemoteUids().Select(i => new { i.Key, ids = i.Ids }); + var result = telemetryService.GetRedundantRemoteUids().Select(i => new { i.Key, ids = i.Ids }); return Ok(result); } diff --git a/AsbCloudWebApi/Controllers/AdminWellController.cs b/AsbCloudWebApi/Controllers/AdminWellController.cs index 1f7d9d17..5e593d62 100644 --- a/AsbCloudWebApi/Controllers/AdminWellController.cs +++ b/AsbCloudWebApi/Controllers/AdminWellController.cs @@ -13,7 +13,7 @@ namespace AsbCloudWebApi.Controllers public AdminWellController(ICrudService service) :base(service) { - service.Incledes.Add("Telemetry"); + service.Includes.Add("Telemetry"); } } } diff --git a/AsbCloudWebApi/Controllers/DrillFlowChartController.cs b/AsbCloudWebApi/Controllers/DrillFlowChartController.cs index dfb24088..6b17dbcd 100644 --- a/AsbCloudWebApi/Controllers/DrillFlowChartController.cs +++ b/AsbCloudWebApi/Controllers/DrillFlowChartController.cs @@ -66,7 +66,7 @@ namespace AsbCloudWebApi.Controllers [ProducesResponseType(typeof(IEnumerable), (int) System.Net.HttpStatusCode.OK)] public async Task GetByTelemetryAsync(string uid, DateTime updateFrom = default, CancellationToken token = default) { - var idWell = telemetryService.GetidWellByTelemetryUid(uid); + var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell is null) return BadRequest($"Wrong uid {uid}"); diff --git a/AsbCloudWebApi/Controllers/TelemetryController.cs b/AsbCloudWebApi/Controllers/TelemetryController.cs index 765c2e99..70fb90eb 100644 --- a/AsbCloudWebApi/Controllers/TelemetryController.cs +++ b/AsbCloudWebApi/Controllers/TelemetryController.cs @@ -83,7 +83,7 @@ namespace AsbCloudWebApi.Controllers public async Task PostMessagesAsync(string uid, [FromBody] IEnumerable dtos, CancellationToken token = default) { - var idWell = telemetryService.GetidWellByTelemetryUid(uid); + var idWell = telemetryService.GetIdWellByTelemetryUid(uid); await messageService.InsertAsync(uid, dtos, token).ConfigureAwait(false); if (dtos.Any()) diff --git a/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs b/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs index 1e5bd396..cc18cf8f 100644 --- a/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs +++ b/AsbCloudWebApi/Controllers/TelemetryDataBaseController.cs @@ -52,7 +52,7 @@ namespace AsbCloudWebApi.Controllers { await telemetryDataService.UpdateDataAsync(uid, dtos, token).ConfigureAwait(false); - var idWell = telemetryService.GetidWellByTelemetryUid(uid); + var idWell = telemetryService.GetIdWellByTelemetryUid(uid); if (idWell != null && dtos.Any()) await Task.Run(() => telemetryHubContext.Clients.Group($"well_{idWell}") .SendAsync(SirnalRMethodGetDataName, dtos), token).ConfigureAwait(false);