diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-21 04:06:23 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2020-10-21 04:06:23 +0300 |
| commit | e8cec64cf5c35b17fed6a1f8f4ea0665d4ddf39b (patch) | |
| tree | b6818e4199eef7cb0b1e183aaf1af08cdba723e9 /Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs | |
| parent | e54736fabf4338e9f98a7b8aba738180ae57c120 (diff) | |
| download | Tango-e8cec64cf5c35b17fed6a1f8f4ea0665d4ddf39b.tar.gz Tango-e8cec64cf5c35b17fed6a1f8f4ea0665d4ddf39b.zip | |
DataStore EF !
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs')
| -rw-r--r-- | Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs | 89 |
1 files changed, 73 insertions, 16 deletions
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs index 2c1c27f52..2eb2b01c4 100644 --- a/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs +++ b/Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs @@ -562,26 +562,38 @@ namespace Tango.MachineService.Controllers } } - //Insert JobRuns. - foreach (var dto in request.JobRuns) + //Insert Update DataStore Items + foreach (var dto in request.DataStoreItems) { using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { try { - var run = dto.ToObservable(); - run.ID = 0; - run.IsSynchronized = true; + var dataStoreItem = dto.ToObservable(); + dataStoreItem.MachineGuid = RequestToken.Object.MachineGuid; - if (db.JobRuns.SingleOrDefault(x => x.Guid == run.Guid) == null) + dataStoreItem.ID = 0; + dataStoreItem.IsSynchronized = true; + + var existingItem = db.DataStoreItems.SingleOrDefault(x => x.Guid == dataStoreItem.Guid); + + if (existingItem == null) { - db.JobRuns.Add(run); + db.DataStoreItems.Add(dataStoreItem); + db.SaveChanges(); + } + else if (dataStoreItem.LastUpdated > existingItem.LastUpdated) + { + existingItem.DataType = dataStoreItem.DataType; + existingItem.Value = dataStoreItem.Value; + existingItem.IsSynchronized = true; + existingItem.LastUpdated = dataStoreItem.LastUpdated; db.SaveChanges(); } } catch (Exception ex) { - response.FailedJobRuns.Add(new SynchronizationFailedEntity() + response.FailedDataStoreItems.Add(new SynchronizationFailedEntity() { Guid = dto.Guid, Reason = ex.FlattenMessage(), @@ -590,26 +602,26 @@ namespace Tango.MachineService.Controllers } } - //Insert MachineEvents. - foreach (var dto in request.MachineEvents) + //Insert JobRuns. + foreach (var dto in request.JobRuns) { using (ObservablesContext db = ObservablesContextHelper.CreateContext()) { try { - var ev = dto.ToObservable(); - ev.ID = 0; - ev.IsSynchronized = true; + var run = dto.ToObservable(); + run.ID = 0; + run.IsSynchronized = true; - if (db.MachinesEvents.SingleOrDefault(x => x.Guid == ev.Guid) == null) + if (db.JobRuns.SingleOrDefault(x => x.Guid == run.Guid) == null) { - db.MachinesEvents.Add(ev); + db.JobRuns.Add(run); db.SaveChanges(); } } catch (Exception ex) { - response.FailedMachineEvents.Add(new SynchronizationFailedEntity() + response.FailedJobRuns.Add(new SynchronizationFailedEntity() { Guid = dto.Guid, Reason = ex.FlattenMessage(), @@ -645,6 +657,34 @@ namespace Tango.MachineService.Controllers } } } + + //Insert MachineEvents. + foreach (var dto in request.MachineEvents) + { + using (ObservablesContext db = ObservablesContextHelper.CreateContext()) + { + try + { + var ev = dto.ToObservable(); + ev.ID = 0; + ev.IsSynchronized = true; + + if (db.MachinesEvents.SingleOrDefault(x => x.Guid == ev.Guid) == null) + { + db.MachinesEvents.Add(ev); + db.SaveChanges(); + } + } + catch (Exception ex) + { + response.FailedMachineEvents.Add(new SynchronizationFailedEntity() + { + Guid = dto.Guid, + Reason = ex.FlattenMessage(), + }); + } + } + } } catch (Exception ex) { @@ -711,6 +751,18 @@ namespace Tango.MachineService.Controllers response.MachineEvents.Add(dto); } } + + //Send DataStore Items + if (request.RequestDataStoreItems) + { + var dataStoreItems = db.DataStoreItems.Where(x => x.MachineGuid == machine.Guid && !x.IsSynchronized).Take(request.MaxDataStoreItems).OrderByDescending(x => x.LastUpdated).ToList(); + + foreach (var item in dataStoreItems) + { + DataStoreItemDTO dto = DataStoreItemDTO.FromObservable(item); + response.DataStoreItems.Add(dto); + } + } } return response; @@ -745,6 +797,11 @@ namespace Tango.MachineService.Controllers { db.Database.ExecuteSqlCommand($"UPDATE MACHINES_EVENTS SET IS_SYNCHRONIZED = 1 WHERE GUID IN ({String.Join(",", request.SynchronizedMachineEvents.Select(x => "'" + x + "'"))});"); } + + if (request.SynchronizedDataStoreItems.Count > 0) + { + db.Database.ExecuteSqlCommand($"UPDATE DATA_STORE_ITEMS SET IS_SYNCHRONIZED = 1 WHERE GUID IN ({String.Join(",", request.SynchronizedDataStoreItems.Select(x => "'" + x + "'"))});"); + } } return response; |
