aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/Web/Tango.MachineService
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-10-21 04:06:23 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-10-21 04:06:23 +0300
commite8cec64cf5c35b17fed6a1f8f4ea0665d4ddf39b (patch)
treeb6818e4199eef7cb0b1e183aaf1af08cdba723e9 /Software/Visual_Studio/Web/Tango.MachineService
parente54736fabf4338e9f98a7b8aba738180ae57c120 (diff)
downloadTango-e8cec64cf5c35b17fed6a1f8f4ea0665d4ddf39b.tar.gz
Tango-e8cec64cf5c35b17fed6a1f8f4ea0665d4ddf39b.zip
DataStore EF !
Diffstat (limited to 'Software/Visual_Studio/Web/Tango.MachineService')
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Controllers/PPCController.cs89
-rw-r--r--Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs2
2 files changed, 74 insertions, 17 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;
diff --git a/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
index 11c9ee72a..41fa77771 100644
--- a/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
+++ b/Software/Visual_Studio/Web/Tango.MachineService/Properties/AssemblyInfo.cs
@@ -24,4 +24,4 @@ using System.Runtime.InteropServices;
//
// You can specify all the values or you can default the Revision and Build Numbers
// by using the '*' as shown below:
-[assembly: AssemblyVersion("3.0.5.0")]
+[assembly: AssemblyVersion("3.0.6.0")]