From 5fa74a8cc0b8d7a9240da7a8d2f86c89ef203927 Mon Sep 17 00:00:00 2001 From: Gary Sharp Date: Thu, 8 Dec 2016 17:01:13 +1100 Subject: [PATCH] Bug fix #106 - job queues: case-sensitive usernames --- Disco.Services/Jobs/JobQueues/Cache.cs | 20 +- .../Jobs/JobQueues/JobQueueService.cs | 32 +- .../Areas/Config/Views/JobQueue/Show.cshtml | 970 +++++------ .../Config/Views/JobQueue/Show.generated.cs | 1453 +++++++++-------- 4 files changed, 1273 insertions(+), 1202 deletions(-) diff --git a/Disco.Services/Jobs/JobQueues/Cache.cs b/Disco.Services/Jobs/JobQueues/Cache.cs index 3c4fb0a3..abc224a8 100644 --- a/Disco.Services/Jobs/JobQueues/Cache.cs +++ b/Disco.Services/Jobs/JobQueues/Cache.cs @@ -5,8 +5,6 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace Disco.Services.Jobs.JobQueues { @@ -28,16 +26,16 @@ namespace Disco.Services.Jobs.JobQueues var queues = Database.JobQueues.ToList(); // Add Queues to In-Memory Cache - this._Cache = new ConcurrentDictionary(queues.Select(q => new KeyValuePair(q.Id, JobQueueToken.FromJobQueue(q)))); + _Cache = new ConcurrentDictionary(queues.Select(q => new KeyValuePair(q.Id, JobQueueToken.FromJobQueue(q)))); // Calculate Queue Subject Cache CalculateSubjectCache(); #region Predefined Options // SLA Options - if (this._SlaOptions == null) + if (_SlaOptions == null) { - this._SlaOptions = new List>() + _SlaOptions = new List>() { new KeyValuePair(0, ""), new KeyValuePair(15, "15 minutes"), @@ -67,13 +65,13 @@ namespace Disco.Services.Jobs.JobQueues } private void CalculateSubjectCache() { - _SubjectCache = (from c in _Cache.Values.ToList() - from s in c.SubjectIds - group c by s into subjectId - select subjectId).ToDictionary(g => g.Key.ToLower(), g => g.ToList()); + _SubjectCache = _Cache.Values.ToList() + .SelectMany(t => t.SubjectIds, (t, s) => new { t, s }) + .GroupBy(i => i.s, StringComparer.OrdinalIgnoreCase) + .ToDictionary(g => g.Key, g => g.Select(i => i.t).ToList(), StringComparer.OrdinalIgnoreCase); } - public ReadOnlyCollection> SlaOptions { get { return this._SlaOptions; } } + public ReadOnlyCollection> SlaOptions { get { return _SlaOptions; } } public JobQueueToken UpdateQueue(JobQueue JobQueue) { @@ -131,7 +129,7 @@ namespace Disco.Services.Jobs.JobQueues private IEnumerable GetQueuesForSubject(string SubjectId) { List tokens; - if (_SubjectCache.TryGetValue(SubjectId.ToLower(), out tokens)) + if (_SubjectCache.TryGetValue(SubjectId, out tokens)) return tokens; else return Enumerable.Empty(); diff --git a/Disco.Services/Jobs/JobQueues/JobQueueService.cs b/Disco.Services/Jobs/JobQueues/JobQueueService.cs index db07e17e..5808b34a 100644 --- a/Disco.Services/Jobs/JobQueues/JobQueueService.cs +++ b/Disco.Services/Jobs/JobQueues/JobQueueService.cs @@ -8,8 +8,6 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Web; namespace Disco.Services.Jobs.JobQueues @@ -40,6 +38,21 @@ namespace Disco.Services.Jobs.JobQueues if (_cache.GetQueues().Any(q => q.JobQueue.Name == JobQueue.Name)) throw new ArgumentException("Another Job Queue already exists with that name", "JobQueue"); + // Sanitize Subject Ids + if (string.IsNullOrWhiteSpace(JobQueue.SubjectIds)) + { + JobQueue.SubjectIds = null; + } + else + { + var subjectIds = JobQueue.SubjectIds.Split(','); + foreach (var subjectId in subjectIds) + { + UserService.GetUser(subjectId, Database); + } + JobQueue.SubjectIds = string.Join(",", Database.Users.Where(u => subjectIds.Contains(u.UserId)).Select(u => u.UserId)); + } + // Clone to break reference var queue = new JobQueue() { @@ -67,6 +80,21 @@ namespace Disco.Services.Jobs.JobQueues if (_cache.GetQueues().Any(q => q.JobQueue.Id != JobQueue.Id && q.JobQueue.Name == JobQueue.Name)) throw new ArgumentException("Another Job Queue already exists with that name", "JobQueue"); + // Sanitize Subject Ids + if (string.IsNullOrWhiteSpace(JobQueue.SubjectIds)) + { + JobQueue.SubjectIds = null; + } + else + { + var subjectIds = JobQueue.SubjectIds.Split(','); + foreach (var subjectId in subjectIds) + { + UserService.GetUser(subjectId, Database); + } + JobQueue.SubjectIds = string.Join(",", Database.Users.Where(u => subjectIds.Contains(u.UserId)).Select(u => u.UserId)); + } + Database.SaveChanges(); return _cache.UpdateQueue(JobQueue); diff --git a/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml b/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml index 56f3aaf9..7123efed 100644 --- a/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml +++ b/Disco.Web/Areas/Config/Views/JobQueue/Show.cshtml @@ -14,17 +14,20 @@
- - - - - - - + + + + - - - - - - - - + + + + + + + + - - - - + + + + - - - - + + + + + + + + - - - - - - - - + + + + - -
Id: + + Id: @Html.DisplayFor(model => model.Token.JobQueue.Id)
Name: + + Name: @if (canConfig) - {@Html.EditorFor(model => model.Token.JobQueue.Name) + + @if (canConfig) + {@Html.EditorFor(model => model.Token.JobQueue.Name) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() - } - else - { + } + else + { @Model.Token.JobQueue.Name - } -
Description: - @if (canConfig) - {@Html.EditorFor(model => model.Token.JobQueue.Description) - @AjaxHelpers.AjaxSave() - @AjaxHelpers.AjaxLoader() - - } - else - { -
@if (string.IsNullOrEmpty(Model.Token.JobQueue.Description))
+            }
+        
+ Description: + + @if (canConfig) + {@Html.EditorFor(model => model.Token.JobQueue.Description) + @AjaxHelpers.AjaxSave() + @AjaxHelpers.AjaxLoader() + + } + else + { +
@if (string.IsNullOrEmpty(Model.Token.JobQueue.Description))
                      {
                     <None>
                      }
@@ -73,131 +78,135 @@
                         @Model.Token.JobQueue.Description.ToHtmlComment()
                      }
                     
- } -
Statistics: - -
@Model.OpenJobCount job@(Model.OpenJobCount != 1 ? "s" : null) open
-
@Model.TotalJobCount total job@(Model.TotalJobCount != 1 ? "s" : null)
-
Icon: - - - @if (canConfig) - { + } +
+ Statistics: + +
@Model.OpenJobCount job@(Model.OpenJobCount != 1 ? "s" : null) open
+
@Model.TotalJobCount total job@(Model.TotalJobCount != 1 ? "s" : null)
+
+ Icon: + + + @if (canConfig) + { +
+ Update +
- Update -
-
-
- @foreach (var icon in Model.Icons) - { - - } -
-
- @foreach (var colour in Model.ThemeColours) - { - - } -
-
+
+ @foreach (var icon in Model.Icons) + { + + } +
+
+ @foreach (var colour in Model.ThemeColours) + { + + }
-
- } -
Priority: - @if (canConfig) - { - var priorityValue = Model.Token.JobQueue.Priority.ToString(); - var priorityItems = Enum.GetNames(typeof(JobQueuePriority)).Select(i => new SelectListItem() { Text = i, Value = i, Selected = (i == priorityValue) }).ToList(); - + + + + } +
+ Priority: + + @if (canConfig) + { + var priorityValue = Model.Token.JobQueue.Priority.ToString(); + var priorityItems = Enum.GetNames(typeof(JobQueuePriority)).Select(i => new SelectListItem() { Text = i, Value = i, Selected = (i == priorityValue) }).ToList(); + @Html.DropDownListFor(m => m.Token.JobQueue.Priority, priorityItems) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() @@ -219,339 +228,350 @@ }); }); - } - else - { - @Model.Token.JobQueue.Priority.ToString() - } -
Default SLA: - @if (canConfig) - { - var slaOptions = JobQueueService.SlaOptions.Select(o => new SelectListItem() { Text = o.Value, Value = o.Key.ToString() }).ToList(); + } + else + { + @Model.Token.JobQueue.Priority.ToString() + } +
+ Default SLA: + + @if (canConfig) + { + var slaOptions = JobQueueService.SlaOptions.Select(o => new SelectListItem() { Text = o.Value, Value = o.Key.ToString() }).ToList(); - if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) - { - var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; - if (JobQueueService.SlaOptions.Where(o => o.Key == slaValue).Count() == 0) - { - string slaValueText; - if (slaValue % (60 * 24 * 7 * 4) == 0) - { slaValueText = string.Format("{0} months", slaValue / (60 * 24 * 7 * 4)); } - else if (slaValue % (60 * 24 * 7) == 0) - { slaValueText = string.Format("{0} weeks", slaValue / (60 * 24 * 7)); } - else if (slaValue % (60 * 24) == 0) - { slaValueText = string.Format("{0} days", slaValue / (60 * 24)); } - else if (slaValue % (60) == 0) - { slaValueText = string.Format("{0} hours", slaValue / 60); } - else - { slaValueText = string.Format("{0} minutes", slaValue); } - - slaOptions.Insert(0, new SelectListItem() { Text = string.Format("{0} ", slaValueText), Value = slaValue.ToString() }); - } - } - @Html.DropDownListFor(m => m.Token.JobQueue.DefaultSLAExpiry, slaOptions) - @AjaxHelpers.AjaxSave() - @AjaxHelpers.AjaxLoader() - - } + if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) + { + var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; + if (JobQueueService.SlaOptions.Where(o => o.Key == slaValue).Count() == 0) + { + string slaValueText; + if (slaValue % (60 * 24 * 7 * 4) == 0) + { slaValueText = string.Format("{0} months", slaValue / (60 * 24 * 7 * 4)); } + else if (slaValue % (60 * 24 * 7) == 0) + { slaValueText = string.Format("{0} weeks", slaValue / (60 * 24 * 7)); } + else if (slaValue % (60 * 24) == 0) + { slaValueText = string.Format("{0} days", slaValue / (60 * 24)); } + else if (slaValue % (60) == 0) + { slaValueText = string.Format("{0} hours", slaValue / 60); } else - { - if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) - { - var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; - var slaOption = JobQueueService.SlaOptions.Where(o => o.Key == slaValue).ToArray(); - if (slaOption.Length > 0) - { + { slaValueText = string.Format("{0} minutes", slaValue); } + + slaOptions.Insert(0, new SelectListItem() { Text = string.Format("{0} ", slaValueText), Value = slaValue.ToString() }); + } + } + @Html.DropDownListFor(m => m.Token.JobQueue.DefaultSLAExpiry, slaOptions) + @AjaxHelpers.AjaxSave() + @AjaxHelpers.AjaxLoader() + + } + else + { + if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) + { + var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; + var slaOption = JobQueueService.SlaOptions.Where(o => o.Key == slaValue).ToArray(); + if (slaOption.Length > 0) + { @slaOption[0].Value - } - else - { + } + else + { <None> - } + } + } + else + { + <None> + } + } +
Member Groups/Users: + @if (Model.Token.SubjectIds.Count == 0) + { + None Associated + } + else + { +
    + @foreach (var sg in Model.Subjects) + { + var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); +
  • + @if (sg.IsGroup) + { + @displayName } else { - <None> + @displayName } +
  • } -
Member Groups/Users: - @if (Model.Token.SubjectIds.Count == 0) - { - None Associated - } - else - { -
    - @foreach (var sg in Model.Subjects) - { - var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); -
  • @if (sg.IsGroup) - { - @displayName - } - else - { - @displayName - }
  • - } -
- } - @if (canConfig) - { -
- Update -
-
- None Associated -
    - @foreach (var sg in Model.Subjects) - { - var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); -
  • @if (sg.IsGroup) - { - @displayName - } - else - { - @displayName - }
  • - } -
-
-
- - Add -
-
-
- -
- } -
Automatically Add Jobs: -
- @if (Model.Token.JobQueue.JobSubTypes.Count > 0) - { -
    - @foreach (var jobType in Model.Token.JobQueue.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) +
+ } + @if (canConfig) + { +
+ Update +
+
+ None Associated +
    + @foreach (var sg in Model.Subjects) { -
  • - @jobType.Key.Description -
      - @if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) - { -
    • [All Sub Types]
    • - } - else - { - foreach (var jobSubType in jobType) - { -
    • @jobSubType.Description
    • - } - } -
    -
  • + var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); +
  • + @if (sg.IsGroup) + { + @displayName + } + else + { + @displayName + } +
  • }
- } - else - { - <None> - } +
+
+ + Add +
+
- @if (canConfig) - { - Update + +
+ } +
Automatically Add Jobs: +
+ @if (Model.Token.JobQueue.JobSubTypes.Count > 0) + { +
    + @foreach (var jobType in Model.Token.JobQueue.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) + { +
  • + @jobType.Key.Description +
      + @if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) + { +
    • [All Sub Types]
    • + } + else + { + foreach (var jobSubType in jobType) + { +
    • @jobSubType.Description
    • + } + } +
    +
  • + } +
+ } + else + { + <None> + } +
+ @if (canConfig) + { + Update
@using (Html.BeginForm(MVC.API.JobQueue.UpdateJobSubTypes(Model.Token.JobQueue.Id, null, true))) { var selectedTypes = Model.Token.JobQueue.JobSubTypes.Select(jst => jst.JobType).Distinct().ToList(); foreach (var jt in Model.JobTypes) { -
-

-

-
- @CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div") - @CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Token.JobQueue.JobSubTypes), 2) +
+

+ +

+
+ @CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div") + @CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Token.JobQueue.JobSubTypes), 2) +
-
} }
@@ -617,15 +637,15 @@ })(); - } -
-

- When jobs of these types are created, they will automatically be added into this queue. -

-
-
+ } +
+

+ When jobs of these types are created, they will automatically be added into this queue. +

+
+ + +
@if (canDelete || canShowJobs) { diff --git a/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs b/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs index 6e3fa152..3964d47e 100644 --- a/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs +++ b/Disco.Web/Areas/Config/Views/JobQueue/Show.generated.cs @@ -2,7 +2,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34014 +// Runtime Version:4.0.30319.42000 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -27,7 +27,6 @@ namespace Disco.Web.Areas.Config.Views.JobQueue using System.Web.UI; using System.Web.WebPages; using Disco; - using Disco.BI.Extensions; using Disco.Models.Repository; using Disco.Services; using Disco.Services.Authorization; @@ -78,64 +77,70 @@ WriteLiteral(">\r\n \r\n \r\n Id:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n WriteLiteral(" job"); - #line 83 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Model.OpenJobCount != 1 ? "s" : null); + #line 89 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Model.OpenJobCount != 1 ? "s" : null); #line default #line hidden -WriteLiteral(" open\r\n
"); +WriteLiteral(" open
\r\n
"); - #line 84 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Model.TotalJobCount); + #line 90 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Model.TotalJobCount); #line default @@ -344,22 +354,22 @@ WriteLiteral(" open
\r\n
"); WriteLiteral(" total job"); - #line 84 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Model.TotalJobCount != 1 ? "s" : null); + #line 90 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Model.TotalJobCount != 1 ? "s" : null); #line default #line hidden -WriteLiteral("
\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n " + -"\r\n \r\n
\r\n"); +WriteLiteral(">\r\n Id:\r\n \r\n \r\n"); WriteLiteral(" "); - #line 20 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 21 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Html.DisplayFor(model => model.Token.JobQueue.Id)); #line default #line hidden -WriteLiteral("\r\n
Name:\r\n " + -" "); +WriteLiteral("\r\n
\r\n " + +" Name:\r\n \r\n"); - #line 26 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (canConfig) - { - - #line default - #line hidden - - #line 27 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Html.EditorFor(model => model.Token.JobQueue.Name)); - - - #line default - #line hidden - - #line 27 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - + #line 29 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 28 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 29 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (canConfig) + { + + #line default + #line hidden + + #line 30 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Html.EditorFor(model => model.Token.JobQueue.Name)); + + + #line default + #line hidden + + #line 30 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + + + #line default + #line hidden + + #line 31 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 28 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 31 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 29 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 32 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 29 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 32 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" @@ -151,7 +156,7 @@ WriteLiteral(">\r\n $(function () {\r\n ""); - #line 35 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 38 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Url.Action(MVC.API.JobQueue.UpdateName(Model.Token.JobQueue.Id))); @@ -161,114 +166,119 @@ WriteLiteral("\',\r\n \'QueueName\'\r\n " });\r\n \r\n"); - #line 40 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - else - { + #line 43 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + else + { #line default #line hidden - #line 43 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 46 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Model.Token.JobQueue.Name); #line default #line hidden - #line 43 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 46 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + } #line default #line hidden -WriteLiteral("
Description:\r\n " + -" "); +WriteLiteral("
\r\n Description:\r\n " + +" \r\n"); - #line 50 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (canConfig) - { + #line 55 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden - #line 51 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Html.EditorFor(model => model.Token.JobQueue.Description)); + #line 55 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (canConfig) + { + + #line default + #line hidden + + #line 56 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Html.EditorFor(model => model.Token.JobQueue.Description)); #line default #line hidden - #line 51 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - + #line 56 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + #line default #line hidden - #line 52 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(AjaxHelpers.AjaxSave()); + #line 57 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 52 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - + #line 57 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + #line default #line hidden - #line 53 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(AjaxHelpers.AjaxLoader()); + #line 58 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 53 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - + #line 58 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden -WriteLiteral(" \r\n $(function () {\r\n document.DiscoFun" + -"ctions.PropertyChangeHelper(\r\n $(\'#Token_JobQueue_Des" + -"cription\'),\r\n \'Invalid Description\',\r\n " + -" \'"); - - - #line 59 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Url.Action(MVC.API.JobQueue.UpdateDescription(Model.Token.JobQueue.Id))); - - - #line default - #line hidden -WriteLiteral("\',\r\n \'Description\'\r\n );\r\n " + -" });\r\n \r\n"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFunctions.P" + +"ropertyChangeHelper(\r\n $(\'#Token_JobQueue_Description\'),\r" + +"\n \'Invalid Description\',\r\n \'"); #line 64 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - else - { + Write(Url.Action(MVC.API.JobQueue.UpdateDescription(Model.Token.JobQueue.Id))); #line default #line hidden -WriteLiteral("
");
+WriteLiteral("\',\r\n                        \'Description\'\r\n                    );\r\n              " +
+"  });\r\n            \r\n");
 
             
-            #line 67 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
-                      if (string.IsNullOrEmpty(Model.Token.JobQueue.Description))
+            #line 69 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
+        }
+        else
+        {
+
+            
+            #line default
+            #line hidden
+WriteLiteral("            
");
+
+            
+            #line 72 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
+                  if (string.IsNullOrEmpty(Model.Token.JobQueue.Description))
                      {
 
             
@@ -281,7 +291,7 @@ WriteLiteral("<None>");
 WriteLiteral("\r\n");
 
             
-            #line 70 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
+            #line 75 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
                      }
                      else
                      {
@@ -290,14 +300,14 @@ WriteLiteral("\r\n");
             #line default
             #line hidden
             
-            #line 73 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
+            #line 78 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
                    Write(Model.Token.JobQueue.Description.ToHtmlComment());
 
             
             #line default
             #line hidden
             
-            #line 73 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
+            #line 78 "..\..\Areas\Config\Views\JobQueue\Show.cshtml"
                                                                          
                      }
 
@@ -307,18 +317,18 @@ WriteLiteral("\r\n");
 WriteLiteral("                    
\r\n"); - #line 76 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + #line 81 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } #line default #line hidden -WriteLiteral("
Statistics:\r\n " + -" \r\n
"); +WriteLiteral("
\r\n Statistics:\r\n \r\n " + +"
"); - #line 83 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Model.OpenJobCount); + #line 89 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Model.OpenJobCount); #line default @@ -326,17 +336,17 @@ WriteLiteral("
Icon:\r\n " + -" \r\n \r\n
\r\n Icon:\r\n \r\n " + +"
Priority:\r\n " + -" "); +WriteLiteral("
\r\n Priority:\r\n \r\n"); - #line 196 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (canConfig) - { - var priorityValue = Model.Token.JobQueue.Priority.ToString(); - var priorityItems = Enum.GetNames(typeof(JobQueuePriority)).Select(i => new SelectListItem() { Text = i, Value = i, Selected = (i == priorityValue) }).ToList(); + #line 205 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + + #line default + #line hidden + + #line 205 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (canConfig) + { + var priorityValue = Model.Token.JobQueue.Priority.ToString(); + var priorityItems = Enum.GetNames(typeof(JobQueuePriority)).Select(i => new SelectListItem() { Text = i, Value = i, Selected = (i == priorityValue) }).ToList(); #line default #line hidden -WriteLiteral(" (priorityValue.ToLower() + #line 209 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" +, Tuple.Create(Tuple.Create("", 8558), Tuple.Create(priorityValue.ToLower() #line default #line hidden -, 9456), false) +, 8558), false) ); -WriteAttribute("title", Tuple.Create(" title=\"", 9483), Tuple.Create("\"", 9516) +WriteAttribute("title", Tuple.Create(" title=\"", 8585), Tuple.Create("\"", 8618) - #line 200 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" -, Tuple.Create(Tuple.Create("", 9491), Tuple.Create(priorityValue + #line 209 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" +, Tuple.Create(Tuple.Create("", 8593), Tuple.Create(priorityValue #line default #line hidden -, 9491), false) -, Tuple.Create(Tuple.Create(" ", 9507), Tuple.Create("Priority", 9508), true) +, 8593), false) +, Tuple.Create(Tuple.Create(" ", 8609), Tuple.Create("Priority", 8610), true) ); WriteLiteral(">\r\n"); - #line 201 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 210 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 201 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 210 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Html.DropDownListFor(m => m.Token.JobQueue.Priority, priorityItems)); #line default #line hidden - #line 201 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 210 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 202 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 211 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 202 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 211 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 203 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 212 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 203 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 212 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" @@ -739,7 +749,7 @@ WriteLiteral(@"> '"); - #line 211 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 220 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Url.Action(MVC.API.JobQueue.UpdatePriority(Model.Token.JobQueue.Id))); @@ -759,153 +769,155 @@ WriteLiteral(@"', "); - #line 222 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + #line 231 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + else + { + + + #line default + #line hidden + + #line 234 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Model.Token.JobQueue.Priority.ToString()); + + + #line default + #line hidden + + #line 234 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + } + + + #line default + #line hidden +WriteLiteral("
\r\n Default SLA:\r\n \r\n"); + + + #line 243 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + + #line default + #line hidden + + #line 243 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (canConfig) + { + var slaOptions = JobQueueService.SlaOptions.Select(o => new SelectListItem() { Text = o.Value, Value = o.Key.ToString() }).ToList(); + + if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) + { + var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; + if (JobQueueService.SlaOptions.Where(o => o.Key == slaValue).Count() == 0) + { + string slaValueText; + if (slaValue % (60 * 24 * 7 * 4) == 0) + { slaValueText = string.Format("{0} months", slaValue / (60 * 24 * 7 * 4)); } + else if (slaValue % (60 * 24 * 7) == 0) + { slaValueText = string.Format("{0} weeks", slaValue / (60 * 24 * 7)); } + else if (slaValue % (60 * 24) == 0) + { slaValueText = string.Format("{0} days", slaValue / (60 * 24)); } + else if (slaValue % (60) == 0) + { slaValueText = string.Format("{0} hours", slaValue / 60); } else - { - + { slaValueText = string.Format("{0} minutes", slaValue); } + + slaOptions.Insert(0, new SelectListItem() { Text = string.Format("{0} ", slaValueText), Value = slaValue.ToString() }); + } + } + #line default #line hidden - #line 225 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Model.Token.JobQueue.Priority.ToString()); + #line 267 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Html.DropDownListFor(m => m.Token.JobQueue.DefaultSLAExpiry, slaOptions)); #line default #line hidden - #line 225 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - } - - - #line default - #line hidden -WriteLiteral("
Default SLA:\r\n " + -" "); - - - #line 232 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (canConfig) - { - var slaOptions = JobQueueService.SlaOptions.Select(o => new SelectListItem() { Text = o.Value, Value = o.Key.ToString() }).ToList(); - - if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) - { - var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; - if (JobQueueService.SlaOptions.Where(o => o.Key == slaValue).Count() == 0) - { - string slaValueText; - if (slaValue % (60 * 24 * 7 * 4) == 0) - { slaValueText = string.Format("{0} months", slaValue / (60 * 24 * 7 * 4)); } - else if (slaValue % (60 * 24 * 7) == 0) - { slaValueText = string.Format("{0} weeks", slaValue / (60 * 24 * 7)); } - else if (slaValue % (60 * 24) == 0) - { slaValueText = string.Format("{0} days", slaValue / (60 * 24)); } - else if (slaValue % (60) == 0) - { slaValueText = string.Format("{0} hours", slaValue / 60); } - else - { slaValueText = string.Format("{0} minutes", slaValue); } - - slaOptions.Insert(0, new SelectListItem() { Text = string.Format("{0} ", slaValueText), Value = slaValue.ToString() }); - } - } - + #line 267 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + #line default #line hidden - #line 256 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Html.DropDownListFor(m => m.Token.JobQueue.DefaultSLAExpiry, slaOptions)); + #line 268 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(AjaxHelpers.AjaxSave()); #line default #line hidden - #line 256 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - + #line 268 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + #line default #line hidden - #line 257 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(AjaxHelpers.AjaxSave()); + #line 269 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(AjaxHelpers.AjaxLoader()); #line default #line hidden - #line 257 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - - - #line default - #line hidden - - #line 258 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(AjaxHelpers.AjaxLoader()); + #line 269 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden - - #line 258 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - - - #line default - #line hidden -WriteLiteral(" - $(function () { - document.DiscoFunctions.PropertyChangeHelper( - $('#Token_JobQueue_DefaultSLAExpiry'), - 'Invalid Default SLA', - '"); +WriteLiteral(">\r\n $(function () {\r\n document.DiscoFunctions.PropertyC" + +"hangeHelper(\r\n $(\'#Token_JobQueue_DefaultSLAExpiry\'),\r\n " + +" \'Invalid Default SLA\',\r\n \'"); - #line 264 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(Url.Action(MVC.API.JobQueue.UpdateDefaultSLAExpiry(Model.Token.JobQueue.Id))); + #line 275 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(Url.Action(MVC.API.JobQueue.UpdateDefaultSLAExpiry(Model.Token.JobQueue.Id))); #line default #line hidden -WriteLiteral("\',\r\n \'DefaultSLAExpiry\'\r\n );\r\n " + -" });\r\n \r\n"); +WriteLiteral("\',\r\n \'DefaultSLAExpiry\'\r\n );\r\n });\r\n" + +" \r\n"); - #line 269 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - else - { - if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) - { - var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; - var slaOption = JobQueueService.SlaOptions.Where(o => o.Key == slaValue).ToArray(); - if (slaOption.Length > 0) - { + #line 280 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + else + { + if (this.Model.Token.JobQueue.DefaultSLAExpiry.HasValue) + { + var slaValue = this.Model.Token.JobQueue.DefaultSLAExpiry.Value; + var slaOption = JobQueueService.SlaOptions.Where(o => o.Key == slaValue).ToArray(); + if (slaOption.Length > 0) + { #line default #line hidden - #line 278 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 289 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(slaOption[0].Value); #line default #line hidden - #line 278 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 289 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - else - { + } + else + { #line default @@ -917,62 +929,61 @@ WriteLiteral("<None>"); WriteLiteral("\r\n"); - #line 283 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - } - else - { + #line 294 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + } + else + { #line default #line hidden -WriteLiteral(" "); +WriteLiteral(" "); WriteLiteral("<None>"); WriteLiteral("\r\n"); - #line 288 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - } + #line 299 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + } #line default #line hidden -WriteLiteral("
Member Groups/Use" + -"rs:\r\n"); +WriteLiteral("
Member Groups/Users:\r\n"); - #line 295 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - + #line 306 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden - #line 295 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (Model.Token.SubjectIds.Count == 0) - { + #line 306 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (Model.Token.SubjectIds.Count == 0) + { #line default #line hidden -WriteLiteral(" None Associated\r\n"); - #line 298 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - else - { + #line 309 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + else + { #line default #line hidden -WriteLiteral(" \r\n"); - #line 302 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 313 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + + #line default + #line hidden + + #line 313 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + foreach (var sg in Model.Subjects) + { + var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); + + + #line default + #line hidden +WriteLiteral(" (sg.IsGroup ? "group" : "user" + + #line default + #line hidden +, 12804), false) +); + +WriteLiteral(">\r\n"); + + + #line 317 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 302 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - foreach (var sg in Model.Subjects) - { - var displayName = sg.Id == sg.Name ? sg.Id : string.Format("{0} [{1}]", sg.Name, sg.Id); + #line 317 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (sg.IsGroup) + { #line default #line hidden -WriteLiteral(" (sg.IsGroup ? "group" : "user" - - #line default - #line hidden -, 14498), false) -); - -WriteLiteral(">"); - - - #line 305 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (sg.IsGroup) - { - - - #line default - #line hidden -WriteLiteral(" "); - #line 307 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - + #line 319 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden - #line 307 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(displayName); + #line 319 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(displayName); #line default #line hidden - #line 307 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - } - else - { + #line 319 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + } + else + { #line default #line hidden -WriteLiteral(" (Url.Action(MVC.User.Show(sg.Id)) + #line 323 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" +, Tuple.Create(Tuple.Create("", 13081), Tuple.Create(Url.Action(MVC.User.Show(sg.Id)) #line default #line hidden -, 14977), false) +, 13081), false) ); WriteLiteral(">"); - #line 311 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(displayName); + #line 323 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(displayName); #line default @@ -1074,40 +1091,41 @@ WriteLiteral(">"); WriteLiteral("\r\n"); - #line 312 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - - #line default - #line hidden -WriteLiteral("\r\n"); - - - #line 313 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + #line 324 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } #line default #line hidden -WriteLiteral(" \r\n"); +WriteLiteral(" \r\n"); - #line 315 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 326 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" } #line default #line hidden -WriteLiteral(" "); +WriteLiteral(" \r\n"); - #line 316 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (canConfig) - { + #line 328 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } #line default #line hidden -WriteLiteral("
\r\n
\r\n " + -" \r\n \r\n \r\n \r\n \r\n \r\n Add\r\n \r\n Add\r\n \r\n (Url.Action(MVC.API.JobQueue.UpdateSubjects(Model.Token.JobQueue.Id, null, true)) + #line 357 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + , Tuple.Create(Tuple.Create("", 15138), Tuple.Create(Url.Action(MVC.API.JobQueue.UpdateSubjects(Model.Token.JobQueue.Id, null, true)) #line default #line hidden -, 17586), false) +, 15138), false) ); WriteLiteral(" method=\"post\""); -WriteLiteral(">\r\n \r\n \r\n \r\n"); +" alert(\'Error: \' + errorThrown);\r\n " + +" });\r\n\r\n return false;\r\n }\r\n" + +"\r\n function updateNoSubjects() {\r\n " + +" if (list.find(\'li:visible\').length > 0)\r\n no" + +"Subjects.hide();\r\n else\r\n " + +" noSubjects.show();\r\n }\r\n\r\n fun" + +"ction saveChanges() {\r\n var form = $(\'#Config_JobQueu" + +"es_Subjects_Update_Dialog_Form\').empty();\r\n\r\n list.fi" + +"nd(\'li[data-subjectstatus!=\"removed\"]\').each(function () {\r\n " + +" var subjectId = $(this).attr(\'data-subjectid\');\r\n\r\n " + +" form.append($(\'\').attr({\r\n " + +" \'name\': \'Subjects\',\r\n \'type\': \'hidden\'\r\n " + +" }).val(subjectId));\r\n\r\n " + +" }).get();\r\n\r\n form.submit();\r\n\r\n " + +" dialog.dialog(\"disable\");\r\n dialog.dialog(\"o" + +"ption\", \"buttons\", null);\r\n }\r\n\r\n " + +"$(function () {\r\n $(\'#Config_JobQueues_Subjects_Updat" + +"e\').click(showDialog);\r\n });\r\n\r\n })();" + +"\r\n \r\n \r\n"); - #line 502 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + #line 521 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } #line default #line hidden -WriteLiteral("
Automatically Add" + -" Jobs:\r\n
\r\n"); +WriteLiteral("
Automatically Add Jobs:\r\n <" + +"div>\r\n"); - #line 509 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 528 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + + + #line default + #line hidden + + #line 528 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (Model.Token.JobQueue.JobSubTypes.Count > 0) + { + + + #line default + #line hidden +WriteLiteral("
    \r\n"); + + + #line 531 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 509 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (Model.Token.JobQueue.JobSubTypes.Count > 0) + #line 531 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + foreach (var jobType in Model.Token.JobQueue.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) { #line default #line hidden -WriteLiteral("
      \r\n"); +WriteLiteral("
    • \r\n"); + +WriteLiteral(" "); - #line 512 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - - - #line default - #line hidden - - #line 512 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - foreach (var jobType in Model.Token.JobQueue.JobSubTypes.GroupBy(jst => jst.JobType).OrderBy(jtg => jtg.Key.Description)) - { + #line 534 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(jobType.Key.Description); #line default #line hidden -WriteLiteral("
    • \r\n"); - -WriteLiteral(" "); +WriteLiteral("\r\n
        \r\n"); - #line 515 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(jobType.Key.Description); - - - #line default - #line hidden -WriteLiteral("\r\n
          \r\n"); - - - #line 517 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - + #line 536 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden - #line 517 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) - { + #line 536 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (jobType.Count() == Model.JobTypes.FirstOrDefault(jt => jt.Id == jobType.Key.Id).JobSubTypes.Count) + { #line default #line hidden -WriteLiteral("
        • [All Sub Types]
        • \r\n"); - #line 520 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - else - { - foreach (var jobSubType in jobType) - { + #line 539 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + else + { + foreach (var jobSubType in jobType) + { #line default #line hidden -WriteLiteral("
        • "); +WriteLiteral("
        • "); - #line 525 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(jobSubType.Description); + #line 544 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(jobSubType.Description); #line default @@ -1516,64 +1541,63 @@ WriteLiteral("
        • "); WriteLiteral("
        • \r\n"); - #line 526 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - } + #line 545 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + } #line default #line hidden -WriteLiteral("
        \r\n \r" + -"\n"); +WriteLiteral("
      \r\n
    • \r\n"); - #line 530 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } - - - #line default - #line hidden -WriteLiteral("
    \r\n"); - - - #line 532 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 549 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" } - else - { #line default #line hidden -WriteLiteral(" "); +WriteLiteral("
\r\n"); + + + #line 551 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } + else + { + + + #line default + #line hidden +WriteLiteral(" "); WriteLiteral("<None>"); WriteLiteral("\r\n"); - #line 536 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + #line 555 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } #line default #line hidden -WriteLiteral(" \r\n"); +WriteLiteral(" \r\n"); - #line 538 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - + #line 557 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line default #line hidden - #line 538 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - if (canConfig) - { + #line 557 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + if (canConfig) + { #line default #line hidden -WriteLiteral(" \r\n"); - #line 542 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 561 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 542 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 561 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" using (Html.BeginForm(MVC.API.JobQueue.UpdateJobSubTypes(Model.Token.JobQueue.Id, null, true))) { var selectedTypes = Model.Token.JobQueue.JobSubTypes.Select(jst => jst.JobType).Distinct().ToList(); @@ -1610,122 +1634,123 @@ WriteLiteral(">\r\n"); #line default #line hidden -WriteLiteral(" (jt.Id + #line 566 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" +, Tuple.Create(Tuple.Create("", 25241), Tuple.Create(jt.Id #line default #line hidden -, 28947), false) +, 25241), false) ); WriteLiteral(" class=\"jobTypes\""); -WriteLiteral(">\r\n

\r\n \r\n

\r\n " + +" (jt.Id + #line 568 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" +, Tuple.Create(Tuple.Create("", 25369), Tuple.Create(jt.Id #line default #line hidden -, 29067), false) +, 25369), false) ); WriteLiteral(" class=\"jobType\""); WriteLiteral(" type=\"checkbox\""); -WriteAttribute("value", Tuple.Create(" value=\"", 29108), Tuple.Create("\"", 29124) +WriteAttribute("value", Tuple.Create(" value=\"", 25410), Tuple.Create("\"", 25426) - #line 549 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - , Tuple.Create(Tuple.Create("", 29116), Tuple.Create(jt.Id + #line 568 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + , Tuple.Create(Tuple.Create("", 25418), Tuple.Create(jt.Id #line default #line hidden -, 29116), false) +, 25418), false) ); WriteLiteral(" "); - #line 549 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(selectedTypes.Contains(jt) ? "checked=\"checked\"" : null); + #line 568 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(selectedTypes.Contains(jt) ? "checked=\"checked\"" : null); #line default #line hidden WriteLiteral(" />(jt.Id + #line 568 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + , Tuple.Create(Tuple.Create("", 25509), Tuple.Create(jt.Id #line default #line hidden -, 29207), false) +, 25509), false) ); WriteLiteral(">"); - #line 549 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(jt.Description); + #line 568 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(jt.Description); #line default #line hidden -WriteLiteral("

\r\n \r\n

\r\n " + +" (jt.Id + #line 570 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" +, Tuple.Create(Tuple.Create("", 25641), Tuple.Create(jt.Id #line default #line hidden -, 29297), false) +, 25641), false) ); WriteLiteral(" class=\"jobSubTypes\""); WriteLiteral(">\r\n"); -WriteLiteral(" "); +WriteLiteral(" "); - #line 551 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div")); + #line 571 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(CommonHelpers.CheckboxBulkSelect(string.Format("CheckboxBulkSelect_{0}", jt.Id), "div")); #line default #line hidden WriteLiteral("\r\n"); -WriteLiteral(" "); +WriteLiteral(" "); - #line 552 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - Write(CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Token.JobQueue.JobSubTypes), 2)); + #line 572 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + Write(CommonHelpers.CheckBoxList("JobSubTypes", jt.JobSubTypes.OrderBy(jst => jst.Description).ToSelectListItems(Model.Token.JobQueue.JobSubTypes), 2)); #line default #line hidden -WriteLiteral("\r\n \r\n \r\n" + -""); +WriteLiteral("\r\n \r\n \r\n"); - #line 555 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 575 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" } } @@ -1773,30 +1798,30 @@ WriteLiteral(" \r\n"); - #line 620 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" - } + #line 640 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + } #line default #line hidden -WriteLiteral(" \r\n \r\n \r\n \r\n When jobs of these types are created, they will automatically be added into " + -"this queue.\r\n

\r\n \r\n
\r\n\r\n"); +"this queue.\r\n

\r\n \r\n \r\n\r\n\r\n\r\n"); - #line 630 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 650 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" if (canDelete || canShowJobs) { @@ -1810,13 +1835,13 @@ WriteLiteral(" class=\"actionBar\""); WriteLiteral(">\r\n"); - #line 633 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 653 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" #line default #line hidden - #line 633 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 653 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" if (canDelete) { @@ -1824,14 +1849,14 @@ WriteLiteral(">\r\n"); #line default #line hidden - #line 635 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 655 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Html.ActionLinkButton("Delete", MVC.API.JobQueue.Delete(Model.Token.JobQueue.Id, true), "Config_JobQueues_Actions_Delete_Button")); #line default #line hidden - #line 635 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 655 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" @@ -1886,7 +1911,7 @@ WriteLiteral(@"> "); - #line 672 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 692 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" } @@ -1895,7 +1920,7 @@ WriteLiteral(@"> WriteLiteral(" "); - #line 673 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 693 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" if (canShowJobs) { @@ -1903,14 +1928,14 @@ WriteLiteral(" "); #line default #line hidden - #line 675 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 695 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" Write(Html.ActionLinkButton(string.Format("Show {0} job{1}", Model.OpenJobCount, (Model.OpenJobCount == 1 ? null : "s")), MVC.Job.Queue(Model.Token.JobQueue.Id), "Config_JobQueues_Actions_ShowJobs_Button")); #line default #line hidden - #line 675 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 695 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" } @@ -1920,7 +1945,7 @@ WriteLiteral(" "); WriteLiteral(" \r\n"); - #line 678 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" + #line 698 "..\..\Areas\Config\Views\JobQueue\Show.cshtml" } #line default