From 956e564f564ec0cd55d83dc2730cc167f3c2c042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A4=D1=80=D0=BE=D0=BB=D0=BE=D0=B2?= Date: Thu, 23 Sep 2021 10:53:48 +0500 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B5=D1=80=D0=B5=D0=B8=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=D0=B2=D0=B0=D0=BB=20=D1=80=D1=8F=D0=B4=20=D0=BC?= =?UTF-8?q?=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=BD?= =?UTF-8?q?=D0=B8=D0=BC=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/DrillingProgramService.cs | 2 +- .../Services/FileService.cs | 28 ++++++++++++------- ...Service.cs => TelemetryDataBaseService.cs} | 4 +-- .../Services/TelemetryDataSaubService.cs | 10 +++---- .../Services/TelemetryDataSpinService.cs | 2 +- .../Services/TelemetryService.cs | 2 +- .../Controllers/DrillingProgramController.cs | 2 +- AsbCloudWebApi/Controllers/FileController.cs | 3 +- 8 files changed, 30 insertions(+), 23 deletions(-) rename AsbCloudInfrastructure/Services/{TelemetryDataService.cs => TelemetryDataBaseService.cs} (96%) diff --git a/AsbCloudInfrastructure/Services/DrillingProgramService.cs b/AsbCloudInfrastructure/Services/DrillingProgramService.cs index 7197c4e9..275a106f 100644 --- a/AsbCloudInfrastructure/Services/DrillingProgramService.cs +++ b/AsbCloudInfrastructure/Services/DrillingProgramService.cs @@ -55,7 +55,7 @@ namespace AsbCloudInfrastructure.Services var fileNames = filesInfos .Where(f => f.Name != resultFileName) - .Select(f => fileService.GetFileName(f)); + .Select(f => fileService.GetUrl(f)); var stream = new MemoryStream(1024 * 1024); UniteExcelFiles(fileNames, stream); diff --git a/AsbCloudInfrastructure/Services/FileService.cs b/AsbCloudInfrastructure/Services/FileService.cs index 615fcc08..f6454701 100644 --- a/AsbCloudInfrastructure/Services/FileService.cs +++ b/AsbCloudInfrastructure/Services/FileService.cs @@ -52,10 +52,8 @@ namespace AsbCloudInfrastructure.Services Directory.CreateDirectory(Path.GetDirectoryName(relativePath)); - using (var newfileStream = new FileStream(relativePath, FileMode.Create)) - { - await fileStream.CopyToAsync(newfileStream); - } + using var newfileStream = new FileStream(relativePath, FileMode.Create); + await fileStream.CopyToAsync(newfileStream, token).ConfigureAwait(false); var dto = entry.Entity.Adapt(); return dto; @@ -164,7 +162,7 @@ namespace AsbCloudInfrastructure.Services if (fileInfo is null) return 0; - var fileName = GetFileName(fileInfo.Adapt()); + var fileName = GetUrl(fileInfo.Adapt()); if (File.Exists(fileName)) File.Delete(fileName); @@ -172,12 +170,22 @@ namespace AsbCloudInfrastructure.Services return await db.SaveChangesAsync(token).ConfigureAwait(false); } - public string GetFileName(FileInfoDto fileInfo) + public string GetUrl(FileInfoDto fileInfo) => + GetUrl(fileInfo.IdWell, fileInfo.IdCategory, fileInfo.Id, Path.GetExtension(fileInfo.Name)); + + public string GetUrl(int idFile) { - var fileName = $"{fileInfo.Id}{Path.GetExtension(fileInfo.Name)}"; - fileName = Path.Combine(RootPath, fileInfo.IdWell.ToString(), fileInfo.IdCategory.ToString(), fileName); - fileName = Path.GetFullPath(fileName); - return fileName; + var fileInfo = db.Files + .FirstOrDefault(f => f.Id == idFile); + + if (fileInfo is null) + return null; + + return GetUrl(fileInfo.IdWell, fileInfo.IdCategory, fileInfo.Id, Path.GetExtension(fileInfo.Name)); } + + public string GetUrl(int idWell, int idCategory, int idFile, string dotExtention) => + Path.Combine(RootPath, idWell.ToString(), idCategory.ToString(), $"{idFile}{dotExtention}"); + } } diff --git a/AsbCloudInfrastructure/Services/TelemetryDataService.cs b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs similarity index 96% rename from AsbCloudInfrastructure/Services/TelemetryDataService.cs rename to AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs index 568fd352..d818e37d 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataBaseService.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace AsbCloudInfrastructure.Services { - public abstract class TelemetryDataService : ITelemetryDataService, IConverter + public abstract class TelemetryDataBaseService : ITelemetryDataService, IConverter where TDto : AsbCloudApp.Data.ITelemetryData where TModel : class, AsbCloudDb.Model.ITelemetryData { @@ -23,7 +23,7 @@ namespace AsbCloudInfrastructure.Services protected readonly CacheTable cacheTelemetryUsers; protected readonly CacheTable cacheWells; - public TelemetryDataService( + public TelemetryDataBaseService( IAsbCloudDbContext db, ITelemetryService telemetryService, CacheDb cacheDb) diff --git a/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs b/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs index f29fae45..c2b1248f 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataSaubService.cs @@ -6,7 +6,7 @@ using Mapster; namespace AsbCloudInfrastructure.Services { - public class TelemetryDataSaubService: TelemetryDataService + public class TelemetryDataSaubService: TelemetryDataBaseService { public TelemetryDataSaubService( IAsbCloudDbContext db, @@ -18,18 +18,18 @@ namespace AsbCloudInfrastructure.Services public override TelemetryDataSaub Convert(TelemetryDataSaubDto src) { var entity = src.Adapt(); - var telemetryUser = cacheTelemetryUsers + var telemetryUser = cacheTelemetryUsers? .FirstOrDefault(u => u.IdTelemetry == src.IdTelemetry && (u.Name == src.User || u.Surname == src.User)); - entity.IdUser = telemetryUser.IdUser; + entity.IdUser = telemetryUser?.IdUser; return entity; } public override TelemetryDataSaubDto Convert(TelemetryDataSaub src) { var dto = src.Adapt(); - var telemetryUser = cacheTelemetryUsers + var telemetryUser = cacheTelemetryUsers? .FirstOrDefault(u => u.IdTelemetry == src.IdTelemetry && u.IdUser == src.IdUser); - dto.User = telemetryUser.MakeDisplayName(); + dto.User = telemetryUser?.MakeDisplayName(); return dto; } } diff --git a/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs b/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs index ebbe306a..a753da67 100644 --- a/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryDataSpinService.cs @@ -6,7 +6,7 @@ using Mapster; namespace AsbCloudInfrastructure.Services { - public class TelemetryDataSpinService : TelemetryDataService + public class TelemetryDataSpinService : TelemetryDataBaseService { public TelemetryDataSpinService( IAsbCloudDbContext db, diff --git a/AsbCloudInfrastructure/Services/TelemetryService.cs b/AsbCloudInfrastructure/Services/TelemetryService.cs index 5e14c310..93c85cb3 100644 --- a/AsbCloudInfrastructure/Services/TelemetryService.cs +++ b/AsbCloudInfrastructure/Services/TelemetryService.cs @@ -52,7 +52,7 @@ namespace AsbCloudInfrastructure.Services } private Telemetry GetOrCreateTelemetryByUid(string uid) - => cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid, RefreshMode.IfResultEmpty) + => cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid) ?? cacheTelemetry.Insert(new Telemetry { RemoteUid = uid, }); } diff --git a/AsbCloudWebApi/Controllers/DrillingProgramController.cs b/AsbCloudWebApi/Controllers/DrillingProgramController.cs index 42497429..7fbb9f35 100644 --- a/AsbCloudWebApi/Controllers/DrillingProgramController.cs +++ b/AsbCloudWebApi/Controllers/DrillingProgramController.cs @@ -29,7 +29,7 @@ namespace AsbCloudWebApi.Controllers .ConfigureAwait(false); if (fileInfo is null) return NoContent(); - var relativePath = fileService.GetFileName(fileInfo); + var relativePath = fileService.GetUrl(fileInfo); return PhysicalFile(Path.GetFullPath(relativePath), "application/octet-stream", fileInfo.Name); } } diff --git a/AsbCloudWebApi/Controllers/FileController.cs b/AsbCloudWebApi/Controllers/FileController.cs index 42058db1..28cf1d3b 100644 --- a/AsbCloudWebApi/Controllers/FileController.cs +++ b/AsbCloudWebApi/Controllers/FileController.cs @@ -157,8 +157,7 @@ namespace AsbCloudWebApi.Controllers if (fileInfo is null) throw new FileNotFoundException(); - // TODO: словарь content typoв - var relativePath = fileService.GetFileName(fileInfo); + var relativePath = fileService.GetUrl(fileInfo); return PhysicalFile(Path.GetFullPath(relativePath), "application/octet-stream", fileInfo.Name); } catch (FileNotFoundException ex)