public async Task <IActionResult> CreateMonitoringTasks([FromBody] List <Models.MonitorConfig> monitors, string forUser = null)
        {
            if (monitors == null || forUser == null || !monitors.Any(m => m != null))
            {
                return(new BadRequestResult());
            }

            var obj = new Models.UserMonitorConfig()
            {
                uid  = forUser,
                Data = monitors
            };

            var result = await obj.ToMongoDB <Models.UserMonitorConfig>();

            //update monitors
            ThreadPool.QueueUserWorkItem(async state => await Program.RefreshMonitoringForUserAsync(forUser, HttpContext.Request.QueryString.Value));
            return(new OkObjectResult(result));
        }
        public async Task <IActionResult> DeleteConfigAsync(string id, string forUser = null)
        {
            var obj = new Models.UserMonitorConfig()
            {
                uid = forUser,
                _id = new Models.UserMonitorConfig.id {
                    oid = id
                }
            };
            //check if sensor id correspond to the authenticated user (forUser)
            var userResults = await Extensions.MongoDB.FromMongoDB <Models.UserMonitorConfig, Models.MonitorConfig>(forUser);

            if (userResults == null || !userResults.Any(t => t.Id == id))
            {
                return(new ForbidResult());
            }
            await obj.DeleteFromMongoDB <Models.UserMonitorConfig>();

            ThreadPool.QueueUserWorkItem(async state => await Program.RefreshMonitoringForUserAsync(forUser, HttpContext.Request.QueryString.Value));
            return(new OkResult());
        }