@model Disco.Web.Areas.Config.Models.DocumentTemplate.ShowModel @using Disco.BI.DocumentTemplateBI.ManagedGroups; @using Disco.Services.Interop.ActiveDirectory; @using Disco.Web.Areas.Config.Models.Shared; @{ Authorization.Require(Claims.Config.DocumentTemplate.Show); var canConfig = Authorization.Has(Claims.Config.DocumentTemplate.Configure); var hideAdvanced = Model.DocumentTemplate.UsersLinkedGroup == null && Model.DocumentTemplate.DevicesLinkedGroup == null && Model.DocumentTemplate.FilterExpression == null && Model.TemplateExpressions.All(e => e.All(p => !p.ParseError)); #region Can Bulk Generate var canBulkGenerate = Authorization.Has(Claims.Config.DocumentTemplate.BulkGenerate); if (canBulkGenerate) { switch (Model.DocumentTemplate.Scope) { case DocumentTemplate.DocumentTemplateScopes.Device: canBulkGenerate = Authorization.Has(Claims.Device.Actions.GenerateDocuments); break; case DocumentTemplate.DocumentTemplateScopes.Job: canBulkGenerate = Authorization.Has(Claims.Job.Actions.GenerateDocuments); break; case DocumentTemplate.DocumentTemplateScopes.User: canBulkGenerate = Authorization.Has(Claims.User.Actions.GenerateDocuments); break; default: throw new InvalidOperationException("Invalid DocumentType Scope"); } } #endregion ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description); }
@if (hideAdvanced) { }
Id: @Html.DisplayFor(model => model.DocumentTemplate.Id)
Statistics: @Model.StoredInstanceCount.ToString("n0") Stored Instance@(Model.StoredInstanceCount == 1 ? null : "s")
Description: @if (canConfig) { @Html.TextBoxFor(model => model.DocumentTemplate.Description) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrEmpty(Model.DocumentTemplate.Description)) { <None Specified> } else { @Model.DocumentTemplate.Description } }
Always Flatten Form: @if (canConfig) { @AjaxHelpers.AjaxLoader() } else { }
Scope:

@Model.DocumentTemplate.Scope Scope

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

@if (canConfig) {
@using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateScope(Model.DocumentTemplate.Id, redirect: true))) {
}

Expressions within the Template PDF may need to be updated to reflect any changes to the Document Template Scope.

@if (Model.DocumentTemplate.UsersLinkedGroup != null || Model.DocumentTemplate.DevicesLinkedGroup != null) {

Warning: This Document Template contains Linked Groups, these will be automatically updated to reflect the new Document Template Scope which may result in undesired behaviour.

}
} @if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Job) {

Job Type Filters:

@if (Model.DocumentTemplate.JobSubTypes.Count > 0) {
    @foreach (var jobType in Model.DocumentTemplate.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 { <No Filter> }
@if (canConfig) { Update
@using (Html.BeginForm(MVC.API.DocumentTemplate.UpdateJobSubTypes(Model.DocumentTemplate.Id, null, true))) { var selectedTypes = Model.DocumentTemplate.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.DocumentTemplate.JobSubTypes), 2)
} }
}
}
PDF Template @Html.ActionLinkSmallButton("Download Template", MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id)) @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.Upload)) {

Select a PDF Template to upload:

@using (Html.BeginForm(MVC.API.DocumentTemplate.Template(Model.DocumentTemplate.Id, true, null), FormMethod.Post, new { enctype = "multipart/form-data" })) { }
}

Advanced Options

Filter Expression: @if (canConfig && Authorization.Has(Claims.Config.DocumentTemplate.ConfigureFilterExpression)) { @Html.TextBoxFor(model => model.DocumentTemplate.FilterExpression) @AjaxHelpers.AjaxRemove() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrWhiteSpace(Model.DocumentTemplate.FilterExpression)) { <None Specified> } else {
@Model.DocumentTemplate.FilterExpression
} }
Linked Groups:
@Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, CategoryDescription = DocumentTemplateUsersManagedGroup.GetCategoryDescription(Model.DocumentTemplate), Description = DocumentTemplateUsersManagedGroup.GetDescription(Model.DocumentTemplate), ManagedGroup = Model.UsersLinkedGroup, UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateUsersLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) }) @Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, CategoryDescription = DocumentTemplateDevicesManagedGroup.GetCategoryDescription(Model.DocumentTemplate), Description = DocumentTemplateDevicesManagedGroup.GetDescription(Model.DocumentTemplate), ManagedGroup = Model.DevicesLinkedGroup, UpdateUrl = Url.Action(MVC.API.DocumentTemplate.UpdateDevicesLinkedGroup(Model.DocumentTemplate.Id, redirect: true)) }) @if (canConfig) { @Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared) }

Template Expressions

@Html.Partial(MVC.Config.DocumentTemplate.Views._ExpressionsTable, Model.TemplateExpressions)

This item will be permanently deleted and cannot be recovered.
This will not delete attachments which have already been imported, but any generated documents will no longer be automatically imported.
Are you sure?

@if (Authorization.Has(Claims.Config.Show)) { @Html.ActionLinkButton("Expression Browser", MVC.Config.DocumentTemplate.ExpressionBrowser()) } @if (canBulkGenerate) { Bulk Generate
Enter multiple  separated by <new line>, commas (,) or semicolons (;).

Examples:

@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id), FormMethod.Post)) {
}
} @if (Authorization.Has(Claims.Config.DocumentTemplate.Delete)) { @Html.ActionLinkButton("Delete", MVC.API.DocumentTemplate.Delete(Model.DocumentTemplate.Id, true), "buttonDelete") }