public void Delete(Guid id, int nodeType, [FromBody] FormCollection collection)
        {
            // TODO: Add delete logic here
            switch (nodeType)
            {
            case 0:
                DeviceFactoryViewModel.Delete(id);
                break;

            case 1:
                DeviceGroupViewModel.Delete(id);
                break;

            case 2:
                DeviceInfoViewModel.Delete(id);
                break;

            case 3:
                DeviceDataViewModel.Delete(id);
                break;

            case 4:
                DeviceDataFormatViewModel.Delete(id);
                break;
            }
        }
        private void AddDevice_OnClick(object sender, RoutedEventArgs e)
        {
            var device = (sender as MenuItem)?.DataContext as Core.Models.Device
                         ?? DeviceTreeView.SelectedItem as Core.Models.Device;

            if (device == null)
            {
                MessageBox.Show("Please select a device", "No device selected!", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                return;
            }

            var deviceGroup = DeviceGroupTreeView.SelectedItem as DeviceGroupViewModel;

            if (deviceGroup == null)
            {
                var outputDevice = DeviceGroupTreeView.SelectedItem as Core.Models.Device;
                if (outputDevice != null)
                {
                    deviceGroup = DeviceGroupViewModel.FindDeviceGroupViewModelWithDevice(GetViewModel().OutputDeviceGroups, outputDevice);
                }
                else
                {
                    MessageBox.Show("Please select a device group", "No device group selected!", MessageBoxButton.OK, MessageBoxImage.Exclamation);
                    return;
                }
            }
            GetViewModel().AddDeviceToDeviceGroup(device, deviceGroup.Guid);
        }
 // POST api/<controller>
 public void Post([FromBody] DeviceGroupViewModel value)
 {
     if (value == null)
     {
         return;
     }
     value.Save();
 }
        public JsonResult GetData(Guid id, int nodeType, string sort)
        {
            switch (nodeType)
            {
            case 0:
                return(Json(DeviceFactoryViewModel.GetChildren(id).OrderBy(m => m.GetType().GetProperty(sort).GetValue(m)), JsonRequestBehavior.AllowGet));

            case 1:
                return(Json(DeviceGroupViewModel.GetChildren(id).OrderBy(m => m.GetType().GetProperty(sort).GetValue(m)), JsonRequestBehavior.AllowGet));

            case 2:
                return(Json(DeviceInfoViewModel.GetChildren(id).OrderBy(m => m.GetType().GetProperty(sort).GetValue(m)), JsonRequestBehavior.AllowGet));

            case 3:
                return(Json(DeviceDataViewModel.GetChildren(id).OrderBy(m => m.GetType().GetProperty(sort).GetValue(m)), JsonRequestBehavior.AllowGet));

            default:
                return(null);
            }
        }
        // GET api/<controller>/5/5
        public JsonResult GetInstance(Guid id, int nodeType)
        {
            switch (nodeType)
            {
            case 0:
                return(Json(DeviceGroupViewModel.NewDeviceGroup(id), JsonRequestBehavior.AllowGet));

            case 1:
                return(Json(DeviceInfoViewModel.NewDeviceGroup(id), JsonRequestBehavior.AllowGet));

            case 2:
                return(Json(DeviceDataViewModel.NewDeviceData(id), JsonRequestBehavior.AllowGet));

            case 3:
                return(Json(DeviceDataFormatViewModel.NewDeviceDataFormat(id), JsonRequestBehavior.AllowGet));

            default:
                return(null);
            }
        }
        public JsonResult CopyObject(Guid parentId, Guid id, int nodeType)
        {
            switch (nodeType)
            {
            case 1:
                return(Json(DeviceGroupViewModel.Copy(id, parentId), JsonRequestBehavior.AllowGet));

            case 2:
                return(Json(DeviceInfoViewModel.Copy(id, parentId), JsonRequestBehavior.AllowGet));

            case 3:
                return(Json(DeviceDataViewModel.Copy(id, parentId), JsonRequestBehavior.AllowGet));

            case 4:
                return(Json(DeviceDataFormatViewModel.Copy(id, parentId), JsonRequestBehavior.AllowGet));

            default:
                return(null);
            }
        }
        public IEnumerable <DeviceBaseViewModel> Get(Guid id, int nodeType)
        {
            switch (nodeType)
            {
            case 0:
                return(DeviceFactoryViewModel.GetChildren(id).OrderBy(m => m.index).AsQueryable());

            case 1:
                return(DeviceGroupViewModel.GetChildren(id).AsQueryable());

            case 2:
                return(DeviceInfoViewModel.GetChildren(id).OrderBy(m => m.index).AsQueryable());

            case 3:
                return(DeviceDataViewModel.GetChildren(id).OrderBy(m => m.index).AsQueryable());

            default:
                return(null);
            }
        }
        public void Edit(Guid id, int nodeType, [FromBody] FormCollection collection)
        {
            if (!ModelState.IsValid)
            {
                return;
            }
            switch (nodeType)
            {
            case 0:
                var factory = DeviceFactoryViewModel.GetDeviceFactory(id);
                UpdateModel(factory);
                factory.Save();
                break;

            case 1:
                var group = DeviceGroupViewModel.GetDeviceGroup(id);
                UpdateModel(group);
                group.Save();
                break;

            case 2:
                var info = DeviceInfoViewModel.GetDeviceInfo(id);
                UpdateModel(info);
                info.Save();
                break;

            case 3:
                var data = DeviceDataViewModel.GetDeviceData(id);
                UpdateModel(data, new[] { "unit", "upper", "lower", "AlarmAble", "address", "lengthOrIndex", "group", "type", "id", "groupIndex", "parentId", "index", "name" });
                data.Save();
                break;

            case 4:
                var format = DeviceDataFormatViewModel.GetDeviceDataFormat(id);
                UpdateModel(format);
                format.Save();
                break;
            }
            // TODO: Add update logic here
        }
 // GET api/<controller>/5
 public DeviceGroupViewModel Get(Guid id)
 {
     return(DeviceGroupViewModel.GetDeviceGroup(id));
 }
 // GET api/<controller>
 public DeviceGroupViewModel Get()
 {
     //Create(DeviceContext.Instance);
     return(DeviceGroupViewModel.GetDeviceGroup().ElementAt(0));
 }