Beispiel #1
0
        private List <DeviceViewModel> CreateDeviceNoInvNum(DeviceViewModel vmdl)
        {
            var response = new List <DeviceViewModel>();

            // Check for new fields and add them
            vmdl.DeviceMeta.ForEach(i =>
            {
                var fg = _bl.GetFieldGroup(i.FieldGroupSlug);
                if (fg.Fields.Count(j => j.Name == i.Field) == 0)
                {
                    _bl.UpdateFieldGroup(fg);
                    var field = _bl.CreateField();
                    var fvmdl = new FieldViewModel {
                        Name = i.Field
                    };
                    fvmdl.ApplyChanges(field, _bl);
                    fg.Fields.Add(field);
                }
            });

            for (var i = 0; i < vmdl.Quantity; i++)
            {
                var d = _bl.CreateDevice();
                d.CreateDate         = DateTime.Now;
                vmdl.DeviceGroupSlug = vmdl.Name + "-" + _bl.GetCurrentUid();
                vmdl.ApplyChanges(d, _bl);
                response.Add(new DeviceViewModel(d).LoadMeta(d));
            }

            _bl.SaveChanges();

            return(response);
        }
Beispiel #2
0
        public IActionResult PutDevice(int id, [FromBody] DeviceViewModel vmdl)
        {
            if (id != vmdl.DeviceId)
            {
                return(BadRequest());
            }

            try
            {
                // Check for new fields and add them
                vmdl.DeviceMeta.ForEach(i =>
                {
                    var fg = _bl.GetFieldGroup(i.FieldGroupSlug);
                    if (fg.Fields.Count(j => j.Name == i.Field) == 0)
                    {
                        _bl.UpdateFieldGroup(fg);
                        var field        = _bl.CreateField();
                        field.FieldGroup = fg;
                        var fvmdl        = new FieldViewModel {
                            Name = i.Field
                        };
                        fvmdl.ApplyChanges(field, _bl);
                        fg.Fields.Add(field);
                    }
                });



                var dev = _bl.GetSingleDevice(vmdl.DeviceId);
                _bl.UpdateDevice(dev);
                var dm = dev.DeviceMeta.ToList();
                dm.ForEach(i => _bl.DeleteMeta(i));
                dev.DeviceMeta.Clear();
                vmdl.ApplyChanges(dev, _bl);
                _bl.SaveChanges();

                _log.LogInformation("Device '{0}({1})' updated by '{2}'", vmdl.InvNum, vmdl.Name, User.Identity.Name);
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!_bl.DeviceExists(id))
                {
                    _log.LogWarning("Not Found: Device '{0}' not found", id);
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }
            catch (SecurityException)
            {
                _log.LogWarning("Security: '{0}' tried to update Device '{1}'", User.Identity.Name, vmdl.InvNum);
            }
            catch (Exception ex)
            {
                _log.LogError("Exception: {0}", ex);
                return(StatusCode(500));
            }



            return(Ok(vmdl));
        }
Beispiel #3
0
        private List <DeviceViewModel> CreateDeviceWithInvNum(DeviceViewModel vmdl)
        {
            // Put all invNums into one List
            var invNums = new List <AdditionalInvNumViewModel>
            {
                new AdditionalInvNumViewModel {
                    InvNum = vmdl.InvNum
                }
            };

            if (vmdl.AdditionalInvNums != null)
            {
                invNums.AddRange(vmdl.AdditionalInvNums);
            }

            // Get Existing InvNums
            var existingInvNums = _bl.GetDevices(false).Select(i => i.InvNum)
                                  .ToList();


            var invNumsNoDupl = invNums.Select(i => i.InvNum).Distinct().ToList();

            // Check if new InvNums do not exist
            if (invNums.Select(i => i.InvNum).Intersect(existingInvNums).Any() ||
                invNumsNoDupl.Count() != invNums.Count())
            {
                throw new ArgumentException("Es existiert bereits ein Gerät mit dieser Inventarnummer.");
            }

            // Check for new fields and add them
            vmdl.DeviceMeta?.ForEach(i =>
            {
                var fg = _bl.GetFieldGroup(i.FieldGroupSlug);
                if (fg.Fields.Count(j => j.Name == i.Field) == 0)
                {
                    _bl.UpdateFieldGroup(fg);
                    var field = _bl.CreateField();
                    var fvmdl = new FieldViewModel {
                        Name = i.Field
                    };
                    fvmdl.ApplyChanges(field, _bl);
                    fg.Fields.Add(field);
                }
            });

            var response = new List <DeviceViewModel>();

            invNums?
            .Select(i => i.InvNum)?
            .ForEach(i =>
            {
                var d        = _bl.CreateDevice();
                d.CreateDate = DateTime.Now;
                vmdl.InvNum  = i;
                vmdl.ApplyChanges(d, _bl);
                vmdl.Refresh(d);
                response.Add(new DeviceViewModel(d).LoadMeta(d));
            });

            _bl.SaveChanges();

            _log.LogInformation("Device '{0}({1})' added by '{2}'", vmdl.InvNum, vmdl.Name, User.Identity);
            if (vmdl.AdditionalInvNums != null)
            {
                foreach (var n in vmdl.AdditionalInvNums)
                {
                    _log.LogInformation("Device '{0}({1})' added by '{2}'", n.InvNum, vmdl.Name, User.Identity.Name);
                }
            }

            return(response);
        }