public HttpResponseMessage SaveKeys()
        {
            try
            {
                var keys  = Request.GetHttpContext().Request["Keys"];
                var model = new CacheKeysModel();
                model.Keys = JsonConvert.DeserializeObject <List <CacheKeyModel> >(keys);
                var taskEnabled = bool.Parse(Request.GetHttpContext().Request["TaskEnabled"]);

                PortalController.Instance.UpdatePortalSetting(PortalSettings.PortalId, Constants.PsCacheKeysToClear(PortalSettings.PortalId), keys, true, null, false);

                if (SchedulerHelper.IsScheduleItemEnabled(TaskTypeName, TaskAssembly) != taskEnabled)
                {
                    if (taskEnabled)
                    {
                        SchedulerHelper.EnableScheduleItem(TaskTypeName, TaskAssembly);
                    }
                    else
                    {
                        SchedulerHelper.DisableScheduleItem(TaskTypeName, TaskAssembly);
                    }
                }

                return(Request.CreateResponse(System.Net.HttpStatusCode.NoContent));
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid Json"));
            }
        }
        public HttpResponseMessage MatchKeys()
        {
            try
            {
                var keys  = Request.GetHttpContext().Request["Keys"];
                var model = new CacheKeysModel();
                model.Keys = JsonConvert.DeserializeObject <List <CacheKeyModel> >(keys);

                var currentKeys = Common.GetCurrentCachedKeys();
                var retval      = new List <string>();
                foreach (var cacheKeyModel in model.Keys)
                {
                    retval.Add($"BEGIN KEY {cacheKeyModel.Key}");
                    retval.AddRange(Common.GetMatchingCachedKeys(currentKeys, cacheKeyModel));
                    retval.Add($"END KEY");
                    retval.Add("");
                }

                return(Request.CreateResponse(System.Net.HttpStatusCode.OK, retval));
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Invalid Json"));
            }
        }
        public HttpResponseMessage GetSetting()
        {
            try
            {
                var setting = PortalController.GetPortalSetting(Constants.PsCacheKeysToClear(PortalSettings.PortalId), PortalSettings.PortalId, null);
                var retval  = new CacheKeysModel();
                if (!string.IsNullOrEmpty(setting))
                {
                    try
                    {
                        retval.Keys = JsonConvert.DeserializeObject <List <CacheKeyModel> >(setting);
                    }
                    catch
                    {
                        retval.Keys = new List <CacheKeyModel>();
                    }
                }
                retval.TaskEnabled = SchedulerHelper.IsScheduleItemEnabled(TaskTypeName, TaskAssembly);
                if (!retval.Keys.Any())
                {
                    retval = new CacheKeysModel();
                    retval.Keys.Add(new CacheKeyModel()
                    {
                        Key = $"DNN_Folders{PortalSettings.PortalId}", Query = "SELECT CASE WHEN EXISTS(SELECT * FROM Folders WHERE LastModifiedOnDate > [LASTCLEARED]) THEN 1 ELSE 0 END"
                    });
                    retval.Keys.Add(new CacheKeyModel()
                    {
                        Key = $"DNN_Folders\\d*", IsRegex = true, Query = "SELECT CASE WHEN EXISTS(SELECT * FROM Folders WHERE LastModifiedOnDate > [LASTCLEARED]) THEN 1 ELSE 0 END"
                    });
                }

                var sLastCleared = PortalController.GetPortalSetting(Constants.PsLastCacheCleared(PortalSettings.PortalId), PortalSettings.PortalId, "");
                if (sLastCleared == "")
                {
                    PortalController.UpdatePortalSetting(PortalSettings.PortalId,
                                                         Constants.PsLastCacheCleared(PortalSettings.PortalId),
                                                         DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                }


                return(Request.CreateResponse(System.Net.HttpStatusCode.OK, retval));
            }
            catch (Exception e)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Error occurred"));
            }
        }
        public HttpResponseMessage ClearCacheKeys()
        {
            var setting        = PortalController.GetPortalSetting(Constants.PsCacheKeysToClear(PortalSettings.PortalId), PortalSettings.PortalId, null);
            var cacheKeysModel = new CacheKeysModel();

            if (!string.IsNullOrEmpty(setting))
            {
                try
                {
                    cacheKeysModel.Keys = JsonConvert.DeserializeObject <List <CacheKeyModel> >(setting);
                }
                catch
                {
                    cacheKeysModel.Keys = new List <CacheKeyModel>();
                }
            }

            foreach (var cachedKey in cacheKeysModel.Keys)
            {
                DataCache.RemoveCache(cachedKey.Key);
            }
            return(Request.CreateResponse(System.Net.HttpStatusCode.NoContent));
        }