public ActionResult SubscriptionDelete(int id)
        {
            var subscriptionManager = new UserSubscriptionManager();

            subscriptionManager.DeleteSubscription((int)UserID, id);
            return(RedirectToAction("Subscriptions"));
        }
        public ActionResult SubscriptionEdit(UserSubscription userSubscription)
        {
            if (ModelState.IsValid)
            {
                if (!string.IsNullOrEmpty(Request.Form["CountryCode"]))
                {
                    //TEMP fix country id passed as ISO
                    using (var refDataManager = new ReferenceDataManager())
                    {
                        var country = refDataManager.GetCountryByISO(Request.Form["CountryCode"]);
                        userSubscription.CountryID = country.ID;
                    }
                }
                else
                {
                    userSubscription.Country   = null;
                    userSubscription.CountryID = null;
                }
                userSubscription = new UserSubscriptionManager().UpdateUserSubscription(userSubscription);
                return(RedirectToAction("Subscriptions", "Profile"));
            }

            PopulateSubscriptionEditorViewBag(userSubscription);
            return(View(userSubscription));
        }
        public async Task <JsonResult> PollForTasks(string key)
        {
            int          notificationsSent = 0;
            MirrorStatus mirrorStatus      = null;

            //poll for periodic tasks (subscription notifications etc)
            if (key == System.Configuration.ConfigurationManager.AppSettings["AdminPollingAPIKey"])
            {
                //send all pending subscription notifications
                try
                {
                    notificationsSent = new UserSubscriptionManager().SendAllPendingSubscriptionNotifications();
                }
                catch (Exception)
                {
                    ;;  //failed to send notifications
                }


                //update cache mirror
                try
                {
                    HttpContext.Application["_MirrorRefreshInProgress"] = true;
                    mirrorStatus = await new CacheProviderMongoDB().PopulatePOIMirror(CacheProviderMongoDB.CacheUpdateStrategy.Modified);
                }
                catch (Exception)
                {
                    ;; //failed to update cache
                }
                finally {
                    HttpContext.Application["_MirrorRefreshInProgress"] = false;
                }
            }
            return(Json(new { NotificationsSent = notificationsSent, MirrorStatus = mirrorStatus }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult SubscriptionEdit(int?id)
        {
            var subscription = new UserSubscription();
            var userId       = (int)UserID;

            if (id != null)
            {
                subscription = new UserSubscriptionManager().GetUserSubscription(userId, (int)id);
            }
            else
            {
                LocationLookupResult locationGuess = PerformLocationGuess(true);

                subscription.UserID = userId;
                subscription.NotificationFrequencyMins = 60 * 24 * 7;//default to 1 week
                subscription.DistanceKM = 100;

                if (locationGuess != null && locationGuess.Country_Code != null)
                {
                    subscription.CountryID = locationGuess.CountryID;
                    subscription.Country   = new Country {
                        ID = (int)locationGuess.CountryID, Title = locationGuess.Country_Name, ISOCode = locationGuess.Country_Code
                    };
                }
                else
                {
                    //default to UK
                    subscription.CountryID = 1;
                    using (var refDataManager = new ReferenceDataManager())
                    {
                        subscription.Country = refDataManager.GetCountryByISO("GB");
                    }
                }
                subscription.Latitude           = null;
                subscription.Longitude          = null;
                subscription.IsEnabled          = true;
                subscription.NotifyComments     = true;
                subscription.NotifyPOIAdditions = true;
                subscription.NotifyPOIUpdates   = true;

                if (locationGuess != null && locationGuess.SuccessfulLookup)
                {
                    if (locationGuess.CountryID != null)
                    {
                        subscription.CountryID = locationGuess.CountryID;
                    }
                    if (locationGuess.Latitude != null && locationGuess.Longitude != null)
                    {
                        subscription.Latitude  = locationGuess.Latitude;
                        subscription.Longitude = locationGuess.Longitude;
                    }
                }

                subscription.Title = "Charging Locations Near Me";
            }

            PopulateSubscriptionEditorViewBag(subscription);
            return(View("SubscriptionEdit", subscription));
        }
Exemple #5
0
        public ActionResult SubscriptionDelete(int id)
        {
            var subscriptionManager = new UserSubscriptionManager();
            var userId = int.Parse(Session["UserID"].ToString());

            subscriptionManager.DeleteSubscription(userId, id);
            return(RedirectToAction("Subscriptions"));
        }
Exemple #6
0
        public async Task <JsonResult> PollForTasks(string key)
        {
            int          notificationsSent = 0;
            MirrorStatus mirrorStatus      = null;

            //poll for periodic tasks (subscription notifications etc)
            if (key == System.Configuration.ConfigurationManager.AppSettings["AdminPollingAPIKey"])
            {
                //send all pending subscription notifications
                if (bool.Parse(ConfigurationManager.AppSettings["EnableSubscriptionChecks"]) == true)
                {
                    try
                    {
                        //TODO: can't run in seperate async thread becuase HttpContext is not available
                        string templateFolderPath = Server.MapPath("~/templates/notifications");

                        await Task.Run(() =>
                        {
                            notificationsSent = new UserSubscriptionManager().SendAllPendingSubscriptionNotifications(templateFolderPath);
                        });
                    }
                    catch (Exception)
                    {
                        ;;  //failed to send notifications
                    }
                }

                //update cache mirror
                try
                {
                    HttpContext.Application["_MirrorRefreshInProgress"] = true;
                    mirrorStatus = await CacheManager.RefreshCachedData(CacheUpdateStrategy.Modified);
                }
                catch (Exception)
                {
                    ;; //failed to update cache
                }
                finally
                {
                    HttpContext.Application["_MirrorRefreshInProgress"] = false;
                }

                //update stats
                if (this.HttpContext.Cache["_StatsRefreshed"] == null)
                {
                    var dataSummaryManager = new API.Common.DataSummary.DataSummaryManager();
                    dataSummaryManager.RefreshStats();
                    this.HttpContext.Cache.Insert("_StatsRefreshed", true, null, DateTime.Now.AddHours(6), System.Web.Caching.Cache.NoSlidingExpiration);
                }
            }
            return(Json(new { NotificationsSent = notificationsSent, MirrorStatus = mirrorStatus }, JsonRequestBehavior.AllowGet));
        }
Exemple #7
0
        public ActionResult Subscriptions()
        {
            UserManager userManager = new UserManager();

            var user = userManager.GetUser(int.Parse(Session["UserID"].ToString()));

            ViewBag.UserProfile = user;

            ViewBag.ReferenceData = new ReferenceDataManager().GetCoreReferenceData();

            var list = new UserSubscriptionManager().GetUserSubscriptions(user.ID);

            return(View(list));
        }
Exemple #8
0
        public ActionResult Subscriptions()
        {
            UserManager userManager = new UserManager();

            var user = userManager.GetUser((int)UserID);

            ViewBag.UserProfile = user;

            ViewBag.ReferenceData = new ReferenceDataManager().GetCoreReferenceData(new APIRequestParams());

            var list = new UserSubscriptionManager().GetUserSubscriptions(user.ID);

            return(View(list));
        }
        public async Task <ActionResult> Subscriptions()
        {
            using (var userManager = new UserManager())
            {
                var user = userManager.GetUser((int)UserID);
                ViewBag.UserProfile = user;
                using (var refDataManager = new ReferenceDataManager())
                {
                    ViewBag.ReferenceData = await refDataManager.GetCoreReferenceDataAsync(new APIRequestParams());
                }

                var list = new UserSubscriptionManager().GetUserSubscriptions(user.ID);
                return(View(list));
            }
        }
Exemple #10
0
        private SubscriptionBrowseModel PrepareSubscriptionBrowseModel(SubscriptionBrowseModel model)
        {
            if (model.DateFrom == null)
            {
                model.DateFrom = DateTime.UtcNow.AddDays(-30);
            }
            else
            {
                //enforce min date from
                if (model.DateFrom < DateTime.UtcNow.AddYears(-1))
                {
                    model.DateFrom = DateTime.UtcNow.AddYears(-1);
                }
            }
            var subscriptionManager = new UserSubscriptionManager();
            var userId = int.Parse(Session["UserID"].ToString());

            model.SubscriptionResults = subscriptionManager.GetSubscriptionMatches((int)model.SubscriptionID, userId, dateFrom: model.DateFrom);
            model.SummaryHTML         = subscriptionManager.GetSubscriptionMatchHTMLSummary(model.SubscriptionResults);
            model.Subscription        = subscriptionManager.GetUserSubscription(userId, (int)model.SubscriptionID);
            return(model);
        }
        private async Task <SubscriptionBrowseModel> PrepareSubscriptionBrowseModel(SubscriptionBrowseModel model)
        {
            if (model.DateFrom == null)
            {
                model.DateFrom = DateTime.UtcNow.AddDays(-30);
            }
            else
            {
                //enforce min date from
                if (model.DateFrom < DateTime.UtcNow.AddYears(-1))
                {
                    model.DateFrom = DateTime.UtcNow.AddYears(-1);
                }
            }
            var subscriptionManager = new UserSubscriptionManager();

            model.SubscriptionResults = await subscriptionManager.GetSubscriptionMatches((int)model.SubscriptionID, (int)UserID, dateFrom : model.DateFrom);

            model.SummaryHTML  = subscriptionManager.GetSubscriptionMatchHTMLSummary(model.SubscriptionResults);
            model.Subscription = subscriptionManager.GetUserSubscription((int)UserID, (int)model.SubscriptionID);
            return(model);
        }
 private SubscriptionBrowseModel PrepareSubscriptionBrowseModel(SubscriptionBrowseModel model)
 {
     if (model.DateFrom == null) model.DateFrom = DateTime.UtcNow.AddDays(-30);
     else
     {
         //enforce min date from
         if (model.DateFrom < DateTime.UtcNow.AddYears(-1))
         {
             model.DateFrom = DateTime.UtcNow.AddYears(-1);
         }
     }
     var subscriptionManager = new UserSubscriptionManager();
     var userId = int.Parse(Session["UserID"].ToString());
     model.SubscriptionResults = subscriptionManager.GetSubscriptionMatches((int)model.SubscriptionID, userId, dateFrom: model.DateFrom);
     model.SummaryHTML = subscriptionManager.GetSubscriptionMatchHTMLSummary(model.SubscriptionResults);
     model.Subscription = subscriptionManager.GetUserSubscription(userId, (int)model.SubscriptionID);
     return model;
 }
        public ActionResult Subscriptions()
        {
            UserManager userManager = new UserManager();

            var user = userManager.GetUser(int.Parse(Session["UserID"].ToString()));
            ViewBag.UserProfile = user;

            ViewBag.ReferenceData = new ReferenceDataManager().GetCoreReferenceData();

            var list = new UserSubscriptionManager().GetUserSubscriptions(user.ID);
            return View(list);
        }
Exemple #14
0
        public void PromoteUserToCountryEditor(int authorizingUserId, int userId, List<int> CountryIDs, bool autoCreateSubscriptions, bool removePermission)
        {
            var authorisingUser = GetUser(authorizingUserId);
            var user = GetUser(userId);

            foreach (var countryId in CountryIDs)
            {
                //grant country editor permissions for each country
                GrantPermission(user, StandardPermissionAttributes.CountryLevel_Editor, countryId.ToString(), removePermission, authorisingUser);
            }

            if (!removePermission && autoCreateSubscriptions)
            {
                var subscriptionManager = new UserSubscriptionManager();
                var refDataManager = new ReferenceDataManager();
                var allSubscriptions = subscriptionManager.GetUserSubscriptions(userId);

                foreach (var countryId in CountryIDs)
                {
                    //if no subscription exists for this country for this user, create one
                    if (!allSubscriptions.Any(s => s.CountryID == countryId))
                    {
                        var country = refDataManager.GetCountry(countryId);
                        subscriptionManager.UpdateUserSubscription(new UserSubscription { Title = "All Updates For " + country.Title, IsEnabled = true, DateCreated = DateTime.UtcNow, CountryID = countryId, NotificationFrequencyMins = 720, NotifyComments = true, NotifyMedia = true, NotifyPOIAdditions = true, NotifyPOIEdits = true, NotifyPOIUpdates = true, UserID = userId });
                    }
                }
            }
        }
        public ActionResult SubscriptionEdit(int? id)
        {
            var subscription = new UserSubscription();
            var userId = int.Parse(Session["UserID"].ToString());
            if (id != null)
            {
                subscription = new UserSubscriptionManager().GetUserSubscription(userId, (int)id);
            }
            else
            {
                LocationLookupResult locationGuess = PerformLocationGuess(true);

                subscription.UserID = userId;
                subscription.NotificationFrequencyMins = 60 * 24 * 7;//default to 1 week
                subscription.DistanceKM = 100;

                if (locationGuess != null && locationGuess.Country_Code != null)
                {
                    subscription.CountryID = locationGuess.CountryID;
                    subscription.Country = new Country { ID = (int)locationGuess.CountryID, Title = locationGuess.Country_Name, ISOCode = locationGuess.Country_Code };
                }
                else
                {
                    //default to UK
                    subscription.CountryID = 1;
                    subscription.Country = new ReferenceDataManager().GetCountryByISO("GB");
                }
                subscription.Latitude = null;
                subscription.Longitude = null;
                subscription.IsEnabled = true;
                subscription.NotifyComments = true;
                subscription.NotifyPOIAdditions = true;
                subscription.NotifyPOIUpdates = true;

                if (locationGuess != null && locationGuess.SuccessfulLookup)
                {
                    if (locationGuess.CountryID != null) subscription.CountryID = locationGuess.CountryID;
                    if (locationGuess.Latitude != null && locationGuess.Longitude != null)
                    {
                        subscription.Latitude = locationGuess.Latitude;
                        subscription.Longitude = locationGuess.Longitude;
                    }
                }

                subscription.Title = "Charging Locations Near Me";
            }

            PopulateSubscriptionEditorViewBag(subscription);
            return View("SubscriptionEdit", subscription);
        }
 public ActionResult SubscriptionDelete(int id)
 {
     var subscriptionManager = new UserSubscriptionManager();
     var userId = int.Parse(Session["UserID"].ToString());
     subscriptionManager.DeleteSubscription(userId, id);
     return RedirectToAction("Subscriptions");
 }
        public async Task<JsonResult> PollForTasks(string key)
        {
            int notificationsSent = 0;
            MirrorStatus mirrorStatus = null;
            //poll for periodic tasks (subscription notifications etc)
            if (key == System.Configuration.ConfigurationManager.AppSettings["AdminPollingAPIKey"])
            {
                //send all pending subscription notifications
                try
                {
                    
                    //TODO: can't run in seperate async thread becuase HttpContext is not available
                    string templateFolderPath = Server.MapPath("~/templates/notifications");

                    await Task.Run(() =>
                    {
                        notificationsSent = new UserSubscriptionManager().SendAllPendingSubscriptionNotifications(templateFolderPath);
                    });
                }
                catch (Exception)
                {
                    ; ; //failed to send notifications
                }

                //update cache mirror
                try
                {
                    HttpContext.Application["_MirrorRefreshInProgress"] = true;
                    mirrorStatus = await CacheManager.RefreshCachedData(CacheUpdateStrategy.Modified);
                }
                catch (Exception)
                {
                    ; ;//failed to update cache
                }
                finally
                {
                    HttpContext.Application["_MirrorRefreshInProgress"] = false;
                }
            }
            return Json(new { NotificationsSent = notificationsSent, MirrorStatus = mirrorStatus }, JsonRequestBehavior.AllowGet);
        }
        public ActionResult SubscriptionEdit(UserSubscription userSubscription)
        {
            if (ModelState.IsValid)
            {
                if (!string.IsNullOrEmpty(Request["CountryCode"]))
                {
                    //TEMP fix country id passed as ISO
                    var country = new ReferenceDataManager().GetCountryByISO(Request["CountryCode"]);
                    userSubscription.CountryID = country.ID;
                }
                else
                {
                    userSubscription.Country = null;
                    userSubscription.CountryID = null;
                }
                userSubscription = new UserSubscriptionManager().UpdateUserSubscription(userSubscription);
                return RedirectToAction("Subscriptions", "Profile");
            }

            PopulateSubscriptionEditorViewBag(userSubscription);
            return View(userSubscription);
        }