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); }
public IActionResult PostField(string groupSlug, [FromBody] FieldViewModel vmdl) { var obj = _bl.GetFieldGroup(groupSlug); _bl.UpdateFieldGroup(obj); var field = _bl.CreateField(); vmdl.ApplyChanges(field, _bl); obj.Fields.Add(field); _bl.SaveChanges(); vmdl.Refresh(field); _log.LogInformation("New Field '{0}' added to '{1}' by '{2}'", vmdl.Name, obj.Name, User.Identity.Name); return(Ok(vmdl)); }
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)); }
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); }