diff --git a/API/APIModels.cs b/API/APIModels.cs index a6b3746..7c54069 100644 --- a/API/APIModels.cs +++ b/API/APIModels.cs @@ -47,10 +47,12 @@ namespace SafeBagDE70.API TaskSendHealthCheck(deviceStatus).ContinueWith(t => { if (t.IsCompletedSuccessfully) { + AppData.IsInternetOk = true; Log.Information("Send HealthCheck Success"); } else { + AppData.IsInternetOk = false; Log.Information("Send HealthCheck Fail"); } }); diff --git a/AppData.cs b/AppData.cs index f8b06b3..59b31fb 100644 --- a/AppData.cs +++ b/AppData.cs @@ -36,6 +36,7 @@ namespace SafeBagDE70 public static int MaxNotes = 300; public static string BaseURL = ""; public static int TenantId = 0; + public static bool IsInternetOk = false; public static DeviceStatus? _DeviceStatus = null; public static DeviceStatus? DeviceStatus { diff --git a/DepositSMUCv2.xaml.cs b/DepositSMUCv2.xaml.cs index 2c0e14e..e61214c 100644 --- a/DepositSMUCv2.xaml.cs +++ b/DepositSMUCv2.xaml.cs @@ -392,46 +392,9 @@ namespace SafeBagDE70 AppData.DeviceStatus.DeviceTime = DateTime.Now; APIModels.SendHealthCheck(AppData.DeviceStatus); } - if (countSensorTimer % 1800 == 0) + if (countSensorTimer % 300 == 0) { - if (!AppData.IsInTransaction) - { - Task.Run(async () => - { - try - { - using (var context = new CDMDbContext()) - { - var startTime = DateTime.Now.Date.AddDays(-2).Date; - var unsentHist = context.Histories - .Where(x => x.DepositTime >= startTime) - .Where(x => ((x.IsSent == null || x.IsSent == false))) - .ToList(); - foreach(var item in unsentHist) - { - var data2Send = JsonConvert.DeserializeObject(item.Data); - var bResult = await APIModels.SendCountingData(data2Send); - if (bResult) - { - item.IsSent = true; - context.Update(item); - context.SaveChanges(); - Log.Information("Resend: " + item.Data + " successfully"); - } - else - { - Log.Error("Resend: " + item.Data + " failed"); - } - } - } - } - catch (Exception ex) - { - Log.Fatal(ex,"Resend failed"); - } - - }); - } + ResenData(); } countSensorTimer++; sensorTimer.IsEnabled = false; @@ -444,6 +407,53 @@ namespace SafeBagDE70 } sensorTimer.IsEnabled = true; } + static Task? resendTask=null; + private static void ResenData() + { + if (!AppData.IsInTransaction && AppData.IsInternetOk) + { + + if(resendTask==null || resendTask.IsCompleted) + { + resendTask = Task.Run(async () => + { + try + { + using (var context = new CDMDbContext()) + { + var startTime = DateTime.Now.Date.AddDays(-2).Date; + var unsentHist = context.Histories + .Where(x => x.DepositTime >= startTime) + .Where(x => ((x.IsSent == null || x.IsSent == false))) + .ToList(); + foreach (var item in unsentHist) + { + var data2Send = JsonConvert.DeserializeObject(item.Data); + var bResult = await APIModels.SendCountingData(data2Send); + if (bResult) + { + item.IsSent = true; + context.Update(item); + context.SaveChanges(); + Log.Information("Resend: " + item.Data + " successfully"); + } + else + { + Log.Error("Resend: " + item.Data + " failed"); + } + } + } + } + catch (Exception ex) + { + Log.Fatal(ex, "Resend failed"); + } + }); + } + + } + } + Stopwatch watch = new Stopwatch(); private void GetSensorValue() {