public void EditSchedule(Schedule sc)
        {
            Header.Description = sc.description;
            Header.Name        = sc.name;
            Header.Recycle     = sc.recycle;
            Header.Autodelete  = sc.autodelete;
            Header.Enabled     = sc.status;

            if (sc.localtime.Contains("PT"))
            {
                Header.ScheduleType = "PT";
                Regex timerRegex = new Regex(@"(^R(\d{2})\/?)?PT(\d\d:\d\d:\d\d)(A\d\d:\d\d:\d\d)?$");
                Match mc         = timerRegex.Match(sc.localtime);
                Header.Datetime = DateTime.Parse(mc.Groups[3].Value);

                if (mc.Groups[2].Value != string.Empty)
                {
                    Repetitions = Convert.ToInt32(mc.Groups[2].Value);
                }

                if (mc.Groups[4].Value != string.Empty)
                {
                    Header.Randomize = true;
                }
            }
            else if (sc.localtime.Contains("W"))
            {
                Header.ScheduleType = "W";
                Regex alarmRegex = new Regex(@"(^W(\d{3})//?)T(\d{2}:\d{2}:\d{2})(A\d{2}:\d{2}:\d{2})?$");
                Match mc         = alarmRegex.Match(sc.localtime);
                Header.Datetime = DateTime.Parse(mc.Groups[3].Value);
                if (mc.Groups[2].Value != string.Empty)
                {
                    ScheduleMask = mc.Groups[2].Value;
                }

                if (mc.Groups[4].Value != string.Empty)
                {
                    Header.Randomize = true;
                }
            }
            else
            {
                Header.ScheduleType = "T";

                Regex scheduleRegex = new Regex(@"^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2})(A\d{2}:\d{2}:\d{2})?$");
                Match mc            = scheduleRegex.Match(sc.localtime);
                Header.Datetime = DateTime.Parse(mc.Groups[1].Value, CultureInfo.InvariantCulture);

                if (mc.Groups[2].Value != string.Empty)
                {
                    Header.Randomize = true;
                }
            }

            if (sc.command?.address?.objecttype == null)
            {
                return;
            }

            if (!sc.command.body.Contains("scene"))
            {
                switch (sc.command.address.objecttype)
                {
                case "lights":
                    Content = ContentTypeVm.Light;
                    break;

                case "groups":
                    Content = ContentTypeVm.Group;
                    break;

                case "schedules":
                    Content = ContentTypeVm.Schedule;
                    break;

                case "sensors":
                    Content = ContentTypeVm.Sensor;
                    break;

                default:
                    break;
                }
            }
            else
            {
                Content = ContentTypeVm.Scene;
            }

            if (Content != ContentTypeVm.Scene)
            {
                SelectedTarget = _listTargetHueObject.FirstOrDefault(x => x.Id == sc.command.address.id);
            }
            else
            {
                Action scene = Serializer.DeserializeToObject <Action>(sc.command.body);
                SelectedTarget = _listTargetHueObject.FirstOrDefault(x => x.Id == scene.scene);
            }

            if (SelectedTarget == null)
            {
                MessageBox.Show(GlobalStrings.Object_Does_Not_Exists, GlobalStrings.Error, MessageBoxButton.OK,
                                MessageBoxImage.Error);
            }
            else
            {
                switch (SelectedTarget)
                {
                case Sensor _:
                {
                    ((ScheduleCreatorPropertyGridViewModel)_selectedViewModel).SelectedObject =
                        Serializer.DeserializeToObject(sc.command.body, HueSensorStateFactory.CreateSensorStateFromSensorType(((Sensor)SelectedTarget).type).GetType());
                    break;
                }

                case Schedule _:
                {
                    ((ScheduleCreatorPropertyGridViewModel)_selectedViewModel).SelectedObject = Serializer.DeserializeToObject <Schedule>(sc.command.body);
                    break;
                }

                case Scene _:
                {
                    SelectedViewModel = null;
                    break;
                }

                case Light _:
                case Group _:
                {
                    if (_propGridLG)
                    {
                        ((ScheduleCreatorPropertyGridViewModel)_selectedViewModel).SelectedObject = Serializer.DeserializeToObject <State>(sc.command.body);
                    }
                    else
                    {
                        SelectedViewModel = Serializer.DeserializeToObject <ScheduleCreatorSlidersViewModel>(sc.command.body);
                        if (SelectedViewModel == null)
                        {
                            SetEmptyViewModel();
                        }
                    }

                    break;
                }
                }
            }
        }
        private void SetEmptyViewModel()
        {
            switch (SelectedTarget)
            {
            case Sensor _:
            {
                SelectedViewModel = new ScheduleCreatorPropertyGridViewModel();
                ((ScheduleCreatorPropertyGridViewModel)SelectedViewModel).SelectedObject = HueSensorStateFactory.CreateSensorStateFromSensorType(((Sensor)SelectedTarget).type);
                break;
            }

            case Schedule _:
            {
                SelectedViewModel = new ScheduleCreatorPropertyGridViewModel();
                ((ScheduleCreatorPropertyGridViewModel)SelectedViewModel).SelectedObject = new Schedule();
                break;
            }

            case Scene _:
            {
                SelectedViewModel = null;
                break;
            }

            case Light _:
            case Group _:
            {
                if (_propGridLG)
                {
                    ((ScheduleCreatorPropertyGridViewModel)_selectedViewModel).SelectedObject = new State();
                }
                else
                {
                    SelectedViewModel = new ScheduleCreatorSlidersViewModel();
                }
                break;
            }
            }
        }