@model Disco.Web.Areas.Config.Models.JobQueue.ShowModel @using Disco.Services.Jobs.JobQueues; @{ Authorization.Require(Claims.Config.JobQueue.Show); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Job Queues", MVC.Config.JobQueue.Index(null), Model.Token.JobQueue.ToString()); var canConfig = Authorization.Has(Claims.Config.JobQueue.Configure); var canDelete = (Authorization.Has(Claims.Config.JobQueue.Delete) && Model.CanDelete); var canShowJobs = Model.OpenJobCount > 0 && Authorization.Has(Claims.Job.Lists.JobQueueLists); Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); }
Id: @Html.DisplayFor(model => model.Token.JobQueue.Id)
Name: @if (canConfig) {@Html.EditorFor(model => model.Token.JobQueue.Name) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } 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))
                    {
                    <None>
                    }
                    else
                    {
                        @Model.Token.JobQueue.Description
                    }
                    
}
Statistics:
@Model.OpenJobCount job@(Model.OpenJobCount != 1 ? "s" : null) open
@Model.TotalJobCount total job@(Model.TotalJobCount != 1 ? "s" : null)
Icon: @if (canConfig) {
Update
@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(); @Html.DropDownListFor(m => m.Token.JobQueue.Priority, priorityItems) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } 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() } 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 { <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 { @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)) {
  • @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)
} }
}
 When jobs of these types are created, they will automatically be added into this queue.
@if (canDelete || canShowJobs) {
@if (canDelete) { @Html.ActionLinkButton("Delete", MVC.API.JobQueue.Delete(Model.Token.JobQueue.Id, true), "Config_JobQueues_Actions_Delete_Button")

This item will be permanently deleted and cannot be recovered.

Are you sure?

} @if (canShowJobs) { @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") }
}