public ActionResult <AddValueResponse> Post(AddValue request) { AddValueResponse ret = new AddValueResponse(); GXUpdateArgs arg; if (request.Items != null) { DateTime now = DateTime.Now; foreach (GXValue it in request.Items) { if (it.Read == DateTime.MinValue) { it.Read = now; } GXAttribute value = new GXAttribute(); value.Id = it.AttributeId; value.Value = it.Value; value.Read = it.Read; arg = GXUpdateArgs.Update <GXAttribute>(value, q => new { q.Value, q.Read }); host.Connection.Update(arg); } host.Connection.Insert(GXInsertArgs.InsertRange(request.Items)); host.SetChange(TargetType.Value, now); } return(ret); }
public ActionResult <ReaderDevicesUpdateResponse> AddDevicesToReaders(ReaderDevicesUpdate request) { try { List <GXDeviceToReader> list = new List <GXDeviceToReader>(); for (int pos = 0; pos != request.Readers.Length; ++pos) { GXDeviceToReader it = new GXDeviceToReader(); it.ReaderId = request.Readers[pos]; it.DeviceId = request.Devices[pos]; if (it.ReaderId == 0) { return(BadRequest(Gurux.DLMS.AMI.Properties.Resources.ReaderIdIsZero)); } if (it.DeviceId == 0) { return(BadRequest(Gurux.DLMS.AMI.Properties.Resources.DeviceIdIsZero)); } list.Add(it); } host.Connection.Insert(GXInsertArgs.InsertRange(list)); host.SetChange(TargetType.Readers | TargetType.Device, DateTime.Now); return(new ReaderDevicesUpdateResponse()); } catch (Exception ex) { return(BadRequest(ex)); } }
public void CultureTest() { List <GXLanguage> list = new List <GXLanguage>(); list.Add(new GXLanguage() { Id = "fi", EnglishName = "Finland", }); GXInsertArgs insert = GXInsertArgs.InsertRange(list); insert.Exclude <GXConfigurationValue>(e => e.Group); Assert.AreEqual("Mikko", insert.ToString()); }
public ActionResult <AddObjectResponse> Post(AddObject request) { AddObjectResponse ret = new AddObjectResponse(); foreach (var it in request.Items) { it.Generation = DateTime.Now; } host.Connection.Insert(GXInsertArgs.InsertRange(request.Items)); host.SetChange(TargetType.Object, DateTime.Now); ret.Ids = new UInt64[request.Items.Length]; int pos = 0; foreach (var it in request.Items) { ret.Ids[pos] = it.Id; ++pos; } return(ret); }
public void InsertSettingsTest() { List <GXConfigurationValue> list = new List <GXConfigurationValue>(); list.Add(new GXConfigurationValue() { Name = "SiteName", }); list.Add(new GXConfigurationValue() { Name = "Email", }); list.Add(new GXConfigurationValue() { Name = "Slogan", }); // GXInsertArgs insert = GXInsertArgs.InsertRange(list, c => new { c.Id, c.Generation }); GXInsertArgs insert = GXInsertArgs.InsertRange(list); insert.Exclude <GXConfigurationValue>(e => e.Group); Assert.AreEqual("Mikko", insert.ToString()); }
public ActionResult <AddTestDeviceResponse> Post(AddTestDevice request) { if (request.Device.TemplateId == 0) { return(BadRequest("Device template ID is unknown.")); } if (request.Device.DeviceSystemTitle != null) { request.Device.DeviceSystemTitle = request.Device.DeviceSystemTitle.Replace(" ", ""); } if (request.Device.AuthenticationKey != null) { request.Device.AuthenticationKey = request.Device.AuthenticationKey.Replace(" ", ""); } if (request.Device.BlockCipherKey != null) { request.Device.BlockCipherKey = request.Device.BlockCipherKey.Replace(" ", ""); } DateTime now = DateTime.Now; //Add new DC. request.Device.Generation = now; //We are accessing meters using serial number when test mode is used. request.Device.HDLCAddressing = ManufacturerSettings.HDLCAddressType.SerialNumber; request.Device.LogicalAddress = request.Index; for (UInt16 pos = 0; pos != request.Count; ++pos) { request.Device.Objects = null; request.Device.Name = "Test_" + request.Device.LogicalAddress; ++request.Device.LogicalAddress; request.Device.Id = 0; host.Connection.Insert(GXInsertArgs.Insert(request.Device)); //Add default objects. GXSelectArgs arg = GXSelectArgs.SelectAll <GXObjectTemplate>(q => q.DeviceTemplateId == request.Device.TemplateId); arg.Columns.Add <GXAttributeTemplate>(); arg.Joins.AddLeftJoin <GXObjectTemplate, GXAttributeTemplate>(o => o.Id, a => a.ObjectTemplateId); List <GXObjectTemplate> l = host.Connection.Select <GXObjectTemplate>(arg); foreach (GXObjectTemplate it in l) { GXObject obj = new GXObject() { TemplateId = it.Id, Generation = now, DeviceId = request.Device.Id, ObjectType = it.ObjectType, Name = it.Name, LogicalName = it.LogicalName, ShortName = it.ShortName, }; host.Connection.Insert(GXInsertArgs.Insert(obj)); foreach (GXAttributeTemplate ait in it.Attributes) { GXAttribute a = new GXAttribute(); a.ObjectId = obj.Id; a.Index = ait.Index; a.TemplateId = ait.Id; a.AccessLevel = ait.AccessLevel; a.DataType = ait.DataType; a.UIDataType = ait.UIDataType; a.Generation = now; a.ExpirationTime = ait.ExpirationTime; obj.Attributes.Add(a); } ; host.Connection.Insert(GXInsertArgs.InsertRange(obj.Attributes)); } } host.SetChange(TargetType.Device, DateTime.Now); return(new AddTestDeviceResponse()); }
public ActionResult <UpdateDeviceTemplateResponse> Post(UpdateDeviceTemplate request) { GXDeviceTemplate dev = request.Device; if (dev == null) { return(BadRequest("Device is null.")); } bool newDevice = dev.Id == 0; if (dev.DeviceSystemTitle != null) { dev.DeviceSystemTitle = dev.DeviceSystemTitle.Replace(" ", ""); } if (dev.AuthenticationKey != null) { dev.AuthenticationKey = dev.AuthenticationKey.Replace(" ", ""); } if (dev.BlockCipherKey != null) { dev.BlockCipherKey = dev.BlockCipherKey.Replace(" ", ""); } dev.Generation = DateTime.Now; if (newDevice) { //Add new DC. List <GXObjectTemplate> tmp = dev.Objects; dev.Objects = null; DateTime now = DateTime.Now; dev.Generation = now; host.Connection.Insert(GXInsertArgs.Insert(dev)); if (tmp != null) { //Add default objects. foreach (GXObjectTemplate it in tmp) { List <GXAttributeTemplate> tmp2 = it.Attributes; it.Attributes = null; it.DeviceTemplateId = dev.Id; it.Generation = now; host.Connection.Insert(GXInsertArgs.Insert(it)); if (it.Attributes != tmp2) { foreach (GXAttributeTemplate a in tmp2) { a.Generation = now; a.ObjectTemplateId = it.Id; } host.Connection.Insert(GXInsertArgs.InsertRange(tmp2)); } } } host.SetChange(TargetType.Object, DateTime.Now); } else { host.Connection.Update(GXUpdateArgs.Update(dev)); host.SetChange(TargetType.DeviceTemplate, DateTime.Now); } return(new UpdateDeviceTemplateResponse() { DeviceId = dev.Id }); }