public object EditorOpenWidget(HttpRequestParams request)
		{
			var id = request.GetRequiredGuid("id");

			using (var session = Context.OpenSession())
			{
				var widget = session.Query<Widget>()
					.Fetch(a => a.Panel)
					.ThenFetch(p => p.Dashboard)
					.Single(x => x.Id == id);

				var model = GetEditorModel(widget.TypeAlias, widget.Panel, session);

				var parameters = session.Query<WidgetParameter>()
					.Where(x => x.Widget.Id == id)
					.ToArray();

				FillEditorModel(model, widget, parameters);

				return new
				{
					info = model.Item1,
					fields = model.Item2
				};
			}
		}
        public object GetWidgetList(HttpRequestParams request)
        {
            Guid dashboardId = request.GetRequiredGuid("id");

            using (var session = Context.OpenSession())
            {
                var info = GetDashboardModel(dashboardId, session);
                var widgets = GetWidgetListModel(dashboardId, session);

                return new { info, widgets };
            }
        }
示例#3
0
		public object LoadScript(HttpRequestParams request)
		{
			Guid id = request.GetRequiredGuid("id");

			using (var session = Context.OpenSession())
			{
				var script = session.Query<UserScript>()
					.Select(x => new { id = x.Id, name = x.Name, body = x.Body })
					.FirstOrDefault(x => x.id == id);

				return script;
			}
		}
示例#4
0
        public object DeleteScript(HttpRequestParams request)
        {
            Guid scriptId = request.GetRequiredGuid("scriptId");

            using (var session = Context.OpenSession())
            {
                var subscription = session.Load<UserScript>(scriptId);
                session.Delete(subscription);
                session.Flush();
            }

            return null;
        }
示例#5
0
        public object DeleteSubscription(HttpRequestParams request)
        {
            Guid subscriptionId = request.GetRequiredGuid("subscriptionId");

            using (var session = Context.OpenSession())
            {
                var subscription = session.Load<ScriptEventHandler>(subscriptionId);
                session.Delete(subscription);
                session.Flush();
            }

            return null;
        }
        public object DeleteAlarm(HttpRequestParams request)
        {
            var id = request.GetRequiredGuid("id");

            using (var session = Context.OpenSession())
            {
                var alarmTime = session.Load<AlarmTime>(id);
                session.Delete(alarmTime);
                session.Flush();
            }

            Context.GetPlugin<AlarmClockPlugin>().ReloadTimes();
            return null;
        }
        public object DeleteSensor(HttpRequestParams request)
        {
            var id = request.GetRequiredGuid("id");
            Logger.Debug("delete sensor: id={0}", id);

            using (var session = Context.OpenSession())
            {
                var sensor = session.Load<TemperatureSensor>(id);

                session.Delete(sensor);
                session.Flush();
            }

            return null;
        }
示例#8
0
		public object DeleteLocation(HttpRequestParams request)
		{
			var locationId = request.GetRequiredGuid("locationId");
			using (var session = Context.OpenSession())
			{
				var location = session.Get<Location>(locationId);

				if (location != null)
				{
					session.Delete(location);
					session.Flush();	
				}
			}

			return null;
		}
        public object DeleteDashboard(HttpRequestParams request)
        {
            Guid id = request.GetRequiredGuid("id");

            using (var session = Context.OpenSession())
            {
                var dashboard = session.Get<Dashboard>(id);

                if (dashboard != null)
                {
                    session.Delete(dashboard);
                    session.Flush();
                }
            }

            return null;
        }
示例#10
0
		public object SetAlarmState(HttpRequestParams request)
		{
			var id = request.GetRequiredGuid("id");
			var enabled = request.GetRequiredBool("enabled");

			using (var session = Context.OpenSession())
			{
				var alarmTime = session.Get<AlarmTime>(id);
				alarmTime.Enabled = enabled;

				session.Save(alarmTime);
				session.Flush();
			}

			Context.GetPlugin<AlarmClockPlugin>().ReloadTimes();
			return null;
		}
        public object EditorDeleteWidget(HttpRequestParams request)
        {
            Guid id = request.GetRequiredGuid("id");

            using (var session = Context.OpenSession())
            {
                var widget = session.Get<Widget>(id);

                if (widget != null)
                {
                    session.Delete(widget);
                    session.Flush();
                }
            }

            return null;
        }
		public object EditorCreateWidget(HttpRequestParams request)
		{
			var panelId = request.GetRequiredGuid("panel");
			var type = request.GetRequiredString("type");

			using (var session = Context.OpenSession())
			{
				var panel = session.Query<Panel>().Fetch(p => p.Dashboard).Single(x => x.Id == panelId);
				var model = GetEditorModel(type, panel, session);

				return new
				{
					info = model.Item1,
					fields = model.Item2
				};
			}
		}
        public object EditorCreateWidget(HttpRequestParams request)
        {
            var dashboardId = request.GetRequiredGuid("dashboard");
            var type = request.GetRequiredString("type");

            using (var session = Context.OpenSession())
            {
                var dashboard = session.Query<Dashboard>().Single(x => x.Id == dashboardId);
                var model = GetEditorModel(type, dashboard.Id, dashboard.Title, session);

                return new
                {
                    info = model.Item1,
                    fields = model.Item2
                };
            }
        }
		public object DeletePanel(HttpRequestParams request)
		{
			Guid id = request.GetRequiredGuid("id");

			using (var session = Context.OpenSession())
			{
				var panel = session.Get<Panel>(id);

				if (panel != null)
				{
					session.Delete(panel);
					session.Flush();
				}
			}

			return null;
		}
示例#15
0
        public object DeleteMessage(HttpRequestParams request)
        {
            var id = request.GetRequiredGuid("id");

            using (var session = Context.OpenSession())
            {
                var message = session.Load<ReceivedData>(id);

                if (message != null)
                {
                    Logger.Debug("delete mqtt message: path={0}", message.Path);

                    session.Delete(message);
                    session.Flush();
                }
            }

            return null;
        }
		public object RenamePanel(HttpRequestParams request)
		{
			Guid id = request.GetRequiredGuid("id");
			string title = request.GetRequiredString("title");

			using (var session = Context.OpenSession())
			{
				var panel = session.Get<Panel>(id);

				if (panel != null)
				{
					panel.Title = title;
					session.Save(panel);
					session.Flush();
				}
			}

			return null;
		}
		public object CreatePanel(HttpRequestParams request)
		{
			Guid dashboardId = request.GetRequiredGuid("dashboard");
			string title = request.GetRequiredString("title");

			using (var session = Context.OpenSession())
			{
				var dashboard = session.Load<Dashboard>(dashboardId);

				var panel = new Panel
				{
					Id = Guid.NewGuid(),
					Title = title,
					Dashboard = dashboard,
					SortOrder = int.MaxValue
				};

				session.Save(panel);
				session.Flush();

				return panel.Id;
			}
		}
示例#18
0
        public object AddSubscription(HttpRequestParams request)
        {
            string eventAlias = request.GetRequiredString("eventAlias");
            Guid scriptId = request.GetRequiredGuid("scriptId");

            using (var session = Context.OpenSession())
            {
                var guid = Guid.NewGuid();

                var script = session.Load<UserScript>(scriptId);

                var subscription = new ScriptEventHandler
                {
                    Id = guid,
                    EventAlias = eventAlias,
                    UserScript = script
                };

                session.Save(subscription);
                session.Flush();

                return guid;
            }
        }
        public object GetSensorDetails(HttpRequestParams request)
        {
            var sensorId = request.GetRequiredGuid("id");
            var now = DateTime.Now;
            var from = now.AddHours(-PERIOD);

            using (var session = Context.OpenSession())
            {
                var sensor = session.Query<TemperatureSensor>().First(s => s.Id == sensorId);

                var data = session.Query<TemperatureData>()
                    .Where(d => d.Sensor.Id == sensor.Id && d.CurrentDate > from)
                    .OrderByDescending(d => d.CurrentDate)
                    .ToList();

                return CreateSensorDetailsItemModel(sensor, data, now);
            }
        }
		private Widget CreateWidget(HttpRequestParams request, ISession session)
		{
			var type = request.GetRequiredString("type");
			var panelId = request.GetRequiredGuid("panelId");

			var panel = session.Query<Panel>().Single(x => x.Id == panelId);

			var created = new Widget
			{
				Id = Guid.NewGuid(),
				Panel = panel,
				TypeAlias = type,
				SortOrder = int.MaxValue
			};

			return created;
		}
示例#21
0
        public object RunScript(HttpRequestParams request)
        {
            Guid scriptId = request.GetRequiredGuid("scriptId");

            using (var session = Context.OpenSession())
            {
                var script = session.Get<UserScript>(scriptId);

                Context.GetPlugin<ScriptsPlugin>().ExecuteScript(script, new object[0]);
            }

            return null;
        }
示例#22
0
		public object UpdateLocationWeather(HttpRequestParams request)
		{
			var locationId = request.GetRequiredGuid("locationId");
			Context.GetPlugin<WeatherPlugin>().ReloadWeatherData(locationId);

			return null;
		}
        private Widget CreateWidget(HttpRequestParams request, ISession session)
        {
            var type = request.GetRequiredString("type");
            var dashboardId = request.GetRequiredGuid("dashboardId");

            var dashboard = session.Query<Dashboard>().Single(x => x.Id == dashboardId);

            var created = new Widget
            {
                Id = Guid.NewGuid(),
                Dashboard = dashboard,
                TypeAlias = type,
                SortOrder = int.MaxValue
            };

            return created;
        }