using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Mvc.Html; using System.Web.Routing; using Sony.Core.Data; using Sony.Filtr.Application; using Sony.Filtr.Core.Data; using Sony.Filtr.Core.EditorialPlaylists; namespace SonyMusic.Web.Utility { public static class HelperExtensions { public static string ActiveMenuLink(this HtmlHelper helper, string action, string controller, string activeClass) { string currentController = helper.ViewContext.RouteData.Values["controller"] as string ?? "home"; string currentAction = helper.ViewContext.RouteData.Values["action"] as string ?? "index"; string page = string.Format("{0}:{1}", currentController, currentAction).ToLower(); string thisPage = string.Format("{0}:{1}", controller, action).ToLower(); if (page == thisPage) return activeClass; return string.Empty; } public static MvcHtmlString ApplicationActionLink(this HtmlHelper helper, string linkText, string actionName, string controller) { object extraParam = null; if (!string.IsNullOrWhiteSpace(helper.ViewContext.HttpContext.Request.QueryString["application"])) extraParam = new { application = ApplicationInstanceManager.CurrentApplicationInstance.ID }; return helper.ActionLink(linkText, actionName, controller, extraParam, null); } public static MvcForm ApplictionBeginForm(this HtmlHelper helper, string actionName, string controller, bool fileUploading = false, FormMethod method = FormMethod.Post) { object extraParam = null; object htmlAttributes = null; if (!string.IsNullOrWhiteSpace(helper.ViewContext.HttpContext.Request.QueryString["application"])) extraParam = new { application = ApplicationInstanceManager.CurrentApplicationInstance.ID }; if (fileUploading) htmlAttributes = new { enctype = "multipart/form-data" }; return helper.BeginForm(actionName, controller, extraParam, method, htmlAttributes); } public static string ApplicationAction(this UrlHelper helper, string actionName, string controller = null, RouteValueDictionary extraRouteValues = null) { RouteValueDictionary extraParam = new RouteValueDictionary(); if (extraRouteValues != null) extraParam = extraRouteValues; if (!string.IsNullOrWhiteSpace(helper.RequestContext.HttpContext.Request.QueryString["application"])) extraParam.Add("application", ApplicationInstanceManager.CurrentApplicationInstance.ID); return helper.Action(actionName, controller, extraParam); } public static string GetTrendDirectionClass(this HtmlHelper helper, EditorialPlaylistWithStats playlistStat) { var subscribers = playlistStat.LatestSubscribers; var oldSubscribers = playlistStat.SecondLatestSubscribers; if (subscribers > oldSubscribers) return "arrowup"; else if (subscribers < oldSubscribers) return "arrowdown"; else return string.Empty; } public static string GetCombinedTrendDirectionClass(this HtmlHelper helper, IEnumerable playlistStats) { var subscribers = playlistStats.Sum(p => p.LatestSubscribers); var prevSubscribers = playlistStats.Sum(p => p.SecondLatestSubscribers); if (subscribers > prevSubscribers) return "arrowup"; else if (subscribers < prevSubscribers) return "arrowdown"; else return string.Empty; } } }