using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.Mvc; using Disco.Models.Repository; namespace Disco.Web.Extensions { public static class JobSubTypeExtensions { public static List ToSelectListItems(this IEnumerable jobSubTypes, IEnumerable SelectedItems, bool IncludeQueueIcons = false) { List selectedIds = default(List); if (SelectedItems != null) selectedIds = SelectedItems.Select(i => string.Format("{0}_{1}", i.JobTypeId, i.Id)).ToList(); return jobSubTypes.ToSelectListItems(selectedIds); } public static List ToSelectListItems(this IEnumerable jobSubTypes, List SelectedIds = null, bool IncludeQueueIcons = false) { if (SelectedIds == null) return jobSubTypes.Select(jst => new SelectListItem { Value = string.Format("{0}_{1}", jst.JobTypeId, jst.Id), Text = IncludeQueueIcons ? jst.DescriptionWithIcons() : jst.Description }).ToList(); else return jobSubTypes.Select(jst => new SelectListItem { Value = string.Format("{0}_{1}", jst.JobTypeId, jst.Id), Text = IncludeQueueIcons ? jst.DescriptionWithIcons() : jst.Description, Selected = (SelectedIds.Contains(string.Format("{0}_{1}", jst.JobTypeId, jst.Id))) }).ToList(); } public static string DescriptionWithIcons(this JobSubType jst) { if (jst.JobQueues.Count > 0) { var sb = new System.Text.StringBuilder(System.Web.HttpUtility.HtmlEncode(jst.Description)); foreach (var jq in jst.JobQueues) sb.AppendFormat(" ", jq.Icon, jq.IconColour, jq.Name); return sb.ToString(); } else { return System.Web.HttpUtility.HtmlEncode(jst.Description); } } } }