diff --git a/AsbCloudApp/Data/TelemetryDto.cs b/AsbCloudApp/Data/TelemetryDto.cs
index d243c749..e4e3be80 100644
--- a/AsbCloudApp/Data/TelemetryDto.cs
+++ b/AsbCloudApp/Data/TelemetryDto.cs
@@ -19,6 +19,11 @@ namespace AsbCloudApp.Data
/// информация о бурении, панели оператора и контроллерах
///
public TelemetryInfoDto? Info { get; set; }
+
+ ///
+ /// Смещение часового пояса от UTC
+ ///
+ public SimpleTimezoneDto? TimeZone { get; set; }
}
///
diff --git a/AsbCloudApp/Services/ITelemetryDataSaubService.cs b/AsbCloudApp/Services/ITelemetryDataSaubService.cs
index f8d9c3be..a0bb271d 100644
--- a/AsbCloudApp/Services/ITelemetryDataSaubService.cs
+++ b/AsbCloudApp/Services/ITelemetryDataSaubService.cs
@@ -1,5 +1,7 @@
using AsbCloudApp.Data.SAUB;
+using System;
using System.Collections.Generic;
+using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -20,5 +22,15 @@ namespace AsbCloudApp.Services
///
///
Task> GetTelemetryDataStatAsync(int idTelemetry, CancellationToken token);
+
+ ///
+ /// Получить упакованый csv файл
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task GetZippedCsv(int idWell, DateTime beginDate, DateTime endDate, CancellationToken token);
}
}
\ No newline at end of file
diff --git a/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs b/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs
new file mode 100644
index 00000000..a7b5a80f
--- /dev/null
+++ b/AsbCloudInfrastructure/Services/SAUB/CsvSerializer.cs
@@ -0,0 +1,85 @@
+using DocumentFormat.OpenXml.Drawing.Diagrams;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Text.RegularExpressions;
+
+namespace System.Text.Csv
+{
+#nullable enable
+ public class CsvSerializer
+ {
+ private readonly PropertyInfo[] props;
+ private readonly static Regex numbers = new Regex(@"^[0-9\-\+\.]+$");
+
+ public string Separator { get; set; } = ";";
+ public string NewLine { get; set; } = "\r\n";
+ public string Quot { get; set; } = "\"";
+ public Encoding Encoding { get; set; } = Encoding.UTF8;
+ public string FloatingPointFormat { get; set; } = "#0.000#";
+ public string DateTimeFormat { get; set; } = "yyyy-MM-dd HH:mm:ss";
+ public string objDateTimeOffsetFormat { get; set; } = "yyyy-MM-dd HH:mm:ss zzz";
+ public string TimeOnlyFormat { get; set; } = "HH:mm:ss";
+ public string DateOnlyFormat { get; set; } = "yyyy-MM-dd";
+
+ public CsvSerializer()
+ {
+ props = typeof(T).GetProperties();
+ }
+
+ public void Serialize(IEnumerable data, Stream toStream)
+ {
+ if (!data.Any())
+ return;
+
+ if(!props.Any())
+ return;
+
+ void HandleRow(IEnumerable