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);
        }
Beispiel #2
0
 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));
     }
 }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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());
        }
Beispiel #7
0
        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
            });
        }