@model Disco.Web.Areas.Config.Models.Shared.DeviceGroupDocumentTemplateBulkGenerateModel @if (Model.BulkGenerateDocumentTemplates != null && Model.BulkGenerateDocumentTemplates.Any()) { List allowedTargets = new List(); if (Authorization.HasAll(Claims.Device.Actions.GenerateDocuments, Claims.Config.DocumentTemplate.BulkGenerate)) { allowedTargets.Add(AttachmentTypes.Device); } if (Authorization.HasAll(Claims.Job.Actions.GenerateDocuments, Claims.Config.DocumentTemplate.BulkGenerate)) { allowedTargets.Add(AttachmentTypes.Job); } if (Authorization.HasAll(Claims.User.Actions.GenerateDocuments, Claims.Config.DocumentTemplate.BulkGenerate)) { allowedTargets.Add(AttachmentTypes.User); } var allowedTemplates = Model.BulkGenerateDocumentTemplates.Where(m => allowedTargets.Contains(m.AttachmentType)).ToList(); if (allowedTemplates.Any()) { string targetDescription; int targetId = Model.DeviceGroupId; Func urlDelegate; if (Model is Disco.Web.Areas.Config.Models.DeviceBatch.ShowModel) { targetDescription = "Batch"; urlDelegate = MVC.API.DocumentTemplate.BulkGenerateDeviceBatch; } else if (Model is Disco.Web.Areas.Config.Models.DeviceModel.ShowModel) { urlDelegate = MVC.API.DocumentTemplate.BulkGenerateDeviceModel; targetDescription = "Model"; } else if (Model is Disco.Web.Areas.Config.Models.DeviceProfile.ShowModel) { urlDelegate = MVC.API.DocumentTemplate.BulkGenerateDeviceProfile; targetDescription = "Profile"; } else { throw new NotSupportedException("Unsupported Device Group Model"); }

Bulk generate documents for devices, users or jobs (based on document template scope) associated with this Device @(targetDescription).

@using (Html.BeginForm(urlDelegate(), FormMethod.Post)) { @Html.AntiForgeryToken() @Html.Hidden("deviceGroupId", targetId) }
} }