@model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowPackageModel @using Disco.Services.Interop.ActiveDirectory; @{ Authorization.Require(Claims.Config.DocumentTemplate.Show); var canConfig = Authorization.Has(Claims.Config.DocumentTemplate.Configure); var hideAdvanced = Model.Package.FilterExpression == null && Model.Package.OnGenerateExpression == null; #region Can Bulk Generate var canBulkGenerate = Authorization.Has(Claims.Config.DocumentTemplate.BulkGenerate); if (canBulkGenerate) { switch (Model.Package.Scope) { case AttachmentTypes.Device: canBulkGenerate = Authorization.Has(Claims.Device.Actions.GenerateDocuments); break; case AttachmentTypes.Job: canBulkGenerate = Authorization.Has(Claims.Job.Actions.GenerateDocuments); break; case AttachmentTypes.User: canBulkGenerate = Authorization.Has(Claims.User.Actions.GenerateDocuments); break; default: throw new InvalidOperationException("Invalid Package Scope"); } } #endregion ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Package: " + Model.Package.Description); if (canConfig) { Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); } }
Id: @Html.DisplayFor(model => model.Package.Id)
Description: @if (canConfig) { @Html.TextBoxFor(model => model.Package.Description) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrEmpty(Model.Package.Description)) { <None Specified> } else { @Model.Package.Description } }
 
@if (canConfig) { @AjaxHelpers.AjaxLoader() } else { }

If selected the package will not appear in the list of documents to generate.

 
@if (canConfig) { @AjaxHelpers.AjaxLoader() } else { }

If selected blank pages will be inserted to ensure each of the individual documents within the package appear on separate pages when using duplex printing.

Scope:

@Model.Package.Scope Scope

This package is generated from @(Model.Package.Scope)s. Any expressions within the Document Template PDF will be evaluated within the @(Model.Package.Scope) Scope.

@if (canConfig) {
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateScope(Model.Package.Id, redirect: true))) {
} @if (Model.Package.DocumentTemplateIds != null && Model.Package.DocumentTemplateIds.Count > 0) {

If changed, all Document Templates will be unassociated with this Package.

}
} @if (Model.Package.Scope == AttachmentTypes.Job) {

Job Type Filters:

@if (Model.Package.JobSubTypes != null && Model.Package.JobSubTypes.Count > 0) {
    @foreach (var jobType in Model.JobSubTypesSelected.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 { <No Filter> }
@if (canConfig) { Update
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateJobSubTypes(Model.Package.Id, null, true))) { var selectedTypes = Model.JobSubTypesSelected.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.Package.JobSubTypes), 2)
} }
}
}
Document Templates: @if (Model.DocumentTemplatesSelected.Count == 0) {

The package has no associated Document Templates and cannot be generated.

} else {
    @foreach (var template in Model.DocumentTemplatesSelected) {
  1. @template.Description @Html.ActionLink(template.Id, MVC.Config.DocumentTemplate.Index(template.Id))
  2. }

The package will be generated with the above Document Templates in the order they appear.

} @if (canConfig) {

Package Templates

@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.UpdateDocumentTemplates(Model.Package.Id, redirect: true))) {
    @foreach (var template in Model.DocumentTemplatesSelected) {
  1. @template.Id @template.Description
  2. }
}

Include Document Templates by drag them from the list of Available Templates. Reorder Document Templates by dragging them within the list.

Available Templates

    @foreach (var template in Model.DocumentTemplates.Where(t => !t.IsHidden).Except(Model.DocumentTemplatesSelected)) {
  • @template.Id @template.Description
  • }
}

Advanced Options

Filter Expression: @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { @Html.EditorFor(model => Model.Package.FilterExpression) @AjaxHelpers.AjaxRemove() @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrWhiteSpace(Model.Package.FilterExpression)) { <None Specified> } else {
@Model.Package.FilterExpression
} }

This expression will be evaluated to determine if this package is shown in the Generate Document drop-down list. If the template is hidden (see above) this expression is ignored.

On Generated Expression: @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { @Html.EditorFor(model => Model.Package.OnGenerateExpression) @AjaxHelpers.AjaxRemove() @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrWhiteSpace(Model.Package.OnGenerateExpression)) { <None Specified> } else {
@Model.Package.OnGenerateExpression
} }

This expression will be evaluated each time the package is generated.

This item will be permanently deleted.
Are you sure?

@if (hideAdvanced) { } @if (canBulkGenerate) { Bulk Generate
@switch (Model.Package.Scope) { case AttachmentTypes.Device:
Enter multiple Device Serial Numbers separated by <new line>, commas (,) or semicolons (;).

Examples:

01234567
ABCD9876
8VQ6G2R
01234567,ABCD9876,8VQ6G2R
01234567;ABCD9876;8VQ6G2R
break; case AttachmentTypes.Job:
Enter multiple Job Ids separated by <new line>, commas (,) or semicolons (;).

Examples:

86
99
44
86,99,44
86;99;44
break; case AttachmentTypes.User:
Enter multiple User Ids separated by <new line>, commas (,) or semicolons (;).

Examples:

user6
smi0099
@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
break; }
@using (Html.BeginForm(MVC.API.DocumentTemplatePackage.BulkGenerate(Model.Package.Id), FormMethod.Post)) {
}
} @if (Authorization.Has(Claims.Config.DocumentTemplate.Delete)) { @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplatePackage.Delete(Model.Package.Id, true), "buttonDelete") }