feature: device document template bulk generation
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
using Disco.Models.UI.Config.DeviceBatch;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Devices;
|
||||
using Disco.Services.Devices.ManagedGroups;
|
||||
using Disco.Services.Plugins.Features.UIExtension;
|
||||
using Disco.Services.Web;
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Disco.Models.Areas.Config.UI.DeviceFlag;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Models.Services.Devices.DeviceFlag;
|
||||
using Disco.Models.UI.Config.DeviceFlag;
|
||||
using Disco.Services.Authorization;
|
||||
|
||||
@@ -209,7 +209,7 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
}
|
||||
else
|
||||
{
|
||||
ModelState.AddModelError("Id", "A Document Template Package with this Id already exists.");
|
||||
ModelState.AddModelError(nameof(model.Id), "A Document Template Package with this Id already exists.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -219,67 +219,134 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
return View(model);
|
||||
}
|
||||
|
||||
public static ConfigDocumentTemplateBulkGenerate BuildBulkGenerateModel(DocumentTemplate documentTemplate, DiscoDataContext database, AuthorizationToken authorization)
|
||||
public static (string viewName, ConfigDocumentTemplateBulkGenerate model) BuildBulkGenerateModel(DocumentTemplate documentTemplate, DiscoDataContext database, AuthorizationToken authorization)
|
||||
{
|
||||
var model = new BulkGenerateModel()
|
||||
{
|
||||
DocumentTemplate = documentTemplate,
|
||||
};
|
||||
BulkGenerateModel model;
|
||||
string viewName;
|
||||
|
||||
model.TemplatePageCount = model.DocumentTemplate.PdfPageHasAttachmentId(database).Count;
|
||||
model.UserFlags = database.UserFlags.Select(f => new ItemWithCount<UserFlag>()
|
||||
if (documentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.User)
|
||||
{
|
||||
Item = f,
|
||||
Count = f.UserFlagAssignments.Where(a => a.RemovedDate == null).Count(),
|
||||
}).ToList();
|
||||
model.DeviceProfiles = database.DeviceProfiles.Select(p => new ItemWithCount<DeviceProfile>()
|
||||
{
|
||||
Item = p,
|
||||
Count = p.Devices.Where(d => d.AssignedUserId != null).Count(),
|
||||
}).ToList();
|
||||
model.DeviceBatches = database.DeviceBatches.Select(p => new ItemWithCount<DeviceBatch>()
|
||||
{
|
||||
Item = p,
|
||||
Count = p.Devices.Where(d => d.AssignedUserId != null).Count(),
|
||||
}).ToList();
|
||||
model.DocumentTemplates = database.DocumentTemplates.Select(dt => new ItemWithCount<DocumentTemplate>()
|
||||
{
|
||||
Item = dt,
|
||||
}).ToList();
|
||||
foreach (var record in model.DocumentTemplates)
|
||||
{
|
||||
switch (record.Item.AttachmentType)
|
||||
authorization.Require(Claims.User.Actions.GenerateDocuments);
|
||||
model = new BulkGenerateUserModel()
|
||||
{
|
||||
case AttachmentTypes.Device:
|
||||
record.Count = database.DeviceAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.Device.AssignedUser).Distinct().Count();
|
||||
break;
|
||||
case AttachmentTypes.Job:
|
||||
record.Count = database.JobAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.Job.User).Distinct().Count();
|
||||
break;
|
||||
case AttachmentTypes.User:
|
||||
record.Count = database.UserAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.User).Distinct().Count();
|
||||
break;
|
||||
default:
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
if (authorization.Has(Claims.User.ShowDetails))
|
||||
{
|
||||
model.UserDetails = database.UserDetails.Where(d => d.Scope == "Details").GroupBy(d => d.Key).Select(g => new ItemWithCount<string>()
|
||||
UserFlags = database.UserFlags.Select(f => new ItemWithCount<UserFlag>()
|
||||
{
|
||||
Item = f,
|
||||
Count = f.UserFlagAssignments.Where(a => a.RemovedDate == null).Count(),
|
||||
}).ToList(),
|
||||
};
|
||||
model.DeviceProfiles = database.DeviceProfiles.Select(p => new ItemWithCount<DeviceProfile>()
|
||||
{
|
||||
Item = g.Key,
|
||||
Count = g.Count(),
|
||||
Item = p,
|
||||
Count = p.Devices.Where(d => d.AssignedUserId != null).Count(),
|
||||
}).ToList();
|
||||
model.DeviceBatches = database.DeviceBatches.Select(p => new ItemWithCount<DeviceBatch>()
|
||||
{
|
||||
Item = p,
|
||||
Count = p.Devices.Where(d => d.AssignedUserId != null).Count(),
|
||||
}).ToList();
|
||||
model.DocumentTemplates = database.DocumentTemplates.Select(dt => new ItemWithCount<DocumentTemplate>()
|
||||
{
|
||||
Item = dt,
|
||||
}).ToList();
|
||||
foreach (var record in model.DocumentTemplates)
|
||||
{
|
||||
switch (record.Item.AttachmentType)
|
||||
{
|
||||
case AttachmentTypes.Device:
|
||||
record.Count = database.DeviceAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.Device.AssignedUser).Distinct().Count();
|
||||
break;
|
||||
case AttachmentTypes.Job:
|
||||
record.Count = database.JobAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.Job.User).Distinct().Count();
|
||||
break;
|
||||
case AttachmentTypes.User:
|
||||
record.Count = database.UserAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.User).Distinct().Count();
|
||||
break;
|
||||
default:
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
if (authorization.Has(Claims.User.ShowDetails))
|
||||
{
|
||||
model.UserDetails = database.UserDetails.Where(d => d.Scope == "Details").GroupBy(d => d.Key).Select(g => new ItemWithCount<string>()
|
||||
{
|
||||
Item = g.Key,
|
||||
Count = g.Count(),
|
||||
}).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
model.UserDetails = new List<ItemWithCount<string>>();
|
||||
}
|
||||
viewName = MVC.Config.DocumentTemplate.Views.BulkGenerateUser;
|
||||
}
|
||||
else if (documentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Device)
|
||||
{
|
||||
authorization.Require(Claims.Device.Actions.GenerateDocuments);
|
||||
model = new BulkGenerateDeviceModel()
|
||||
{
|
||||
DeviceFlags = database.DeviceFlags.Select(f => new ItemWithCount<DeviceFlag>()
|
||||
{
|
||||
Item = f,
|
||||
Count = f.DeviceFlagAssignments.Where(a => a.RemovedDate == null).Count(),
|
||||
}).ToList(),
|
||||
};
|
||||
model.DeviceProfiles = database.DeviceProfiles.Select(p => new ItemWithCount<DeviceProfile>()
|
||||
{
|
||||
Item = p,
|
||||
Count = p.Devices.Count(),
|
||||
}).ToList();
|
||||
model.DeviceBatches = database.DeviceBatches.Select(p => new ItemWithCount<DeviceBatch>()
|
||||
{
|
||||
Item = p,
|
||||
Count = p.Devices.Count(),
|
||||
}).ToList();
|
||||
model.DocumentTemplates = database.DocumentTemplates.Select(dt => new ItemWithCount<DocumentTemplate>()
|
||||
{
|
||||
Item = dt,
|
||||
}).ToList();
|
||||
foreach (var record in model.DocumentTemplates)
|
||||
{
|
||||
switch (record.Item.AttachmentType)
|
||||
{
|
||||
case AttachmentTypes.Device:
|
||||
record.Count = database.DeviceAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.Device).Distinct().Count();
|
||||
break;
|
||||
case AttachmentTypes.Job:
|
||||
record.Count = database.JobAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).Select(a => a.Job.Device).Distinct().Count();
|
||||
break;
|
||||
case AttachmentTypes.User:
|
||||
record.Count = database.UserAttachments.Where(a => a.DocumentTemplateId == record.Item.Id).SelectMany(a => a.User.DeviceUserAssignments).Where(a => a.UnassignedDate == null).Select(a => a.DeviceSerialNumber).Distinct().Count();
|
||||
break;
|
||||
default:
|
||||
throw new NotSupportedException();
|
||||
}
|
||||
}
|
||||
if (authorization.Has(Claims.User.ShowDetails))
|
||||
{
|
||||
model.UserDetails = database.UserDetails.Where(d => d.Scope == "Details").GroupBy(d => d.Key).Select(g => new ItemWithCount<string>()
|
||||
{
|
||||
Item = g.Key,
|
||||
Count = g.Select(i => i.User).SelectMany(u => u.DeviceUserAssignments).Where(a => a.UnassignedDate == null).Count(),
|
||||
}).ToList();
|
||||
}
|
||||
else
|
||||
{
|
||||
model.UserDetails = new List<ItemWithCount<string>>();
|
||||
}
|
||||
viewName = MVC.Config.DocumentTemplate.Views.BulkGenerateDevice;
|
||||
}
|
||||
else
|
||||
{
|
||||
model.UserDetails = new List<ItemWithCount<string>>();
|
||||
}
|
||||
throw new NotSupportedException("Only user and device scoped document templates can be bulk generated using this method");
|
||||
|
||||
return model;
|
||||
model.DocumentTemplate = documentTemplate;
|
||||
|
||||
model.TemplatePageCount = model.DocumentTemplate.PdfPageHasAttachmentId(database).Count;
|
||||
|
||||
return (viewName, model);
|
||||
}
|
||||
|
||||
[DiscoAuthorizeAll(Claims.Config.DocumentTemplate.BulkGenerate, Claims.User.Actions.GenerateDocuments)]
|
||||
[DiscoAuthorizeAll(Claims.Config.DocumentTemplate.BulkGenerate)]
|
||||
public virtual ActionResult BulkGenerate(string id)
|
||||
{
|
||||
var documentTemplate = Database.DocumentTemplates.FirstOrDefault(at => at.Id == id);
|
||||
@@ -287,16 +354,15 @@ namespace Disco.Web.Areas.Config.Controllers
|
||||
if (documentTemplate == null)
|
||||
throw new ArgumentException("Invalid Document Template Id", nameof(id));
|
||||
|
||||
if (documentTemplate.Scope != DocumentTemplate.DocumentTemplateScopes.User)
|
||||
if (documentTemplate.Scope != DocumentTemplate.DocumentTemplateScopes.User && documentTemplate.Scope != DocumentTemplate.DocumentTemplateScopes.Device)
|
||||
throw new NotSupportedException("Only user-scoped document templates can be bulk generated using this method");
|
||||
|
||||
|
||||
var model = BuildBulkGenerateModel(documentTemplate, Database, Authorization);
|
||||
var (viewName, model) = BuildBulkGenerateModel(documentTemplate, Database, Authorization);
|
||||
|
||||
// UI Extensions
|
||||
UIExtensions.ExecuteExtensions(ControllerContext, model);
|
||||
|
||||
return View(MVC.Config.DocumentTemplate.Views.BulkGenerate, model);
|
||||
return View(viewName, model);
|
||||
}
|
||||
|
||||
[HttpGet]
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Models.Services.Jobs.JobQueues;
|
||||
using Disco.Models.Services.Jobs.JobQueues;
|
||||
using Disco.Models.UI.Config.JobQueue;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Extensions;
|
||||
|
||||
@@ -7,10 +7,19 @@ namespace Disco.Web.Areas.Config.Models.DocumentTemplate
|
||||
{
|
||||
public Disco.Models.Repository.DocumentTemplate DocumentTemplate { get; set; }
|
||||
public int TemplatePageCount { get; set; }
|
||||
public List<ItemWithCount<Disco.Models.Repository.UserFlag>> UserFlags { get; set; }
|
||||
public List<ItemWithCount<Disco.Models.Repository.DeviceProfile>> DeviceProfiles { get; set; }
|
||||
public List<ItemWithCount<Disco.Models.Repository.DeviceBatch>> DeviceBatches { get; set; }
|
||||
public List<ItemWithCount<Disco.Models.Repository.DocumentTemplate>> DocumentTemplates { get; set; }
|
||||
public List<ItemWithCount<string>> UserDetails { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
public class BulkGenerateUserModel : BulkGenerateModel, ConfigDocumentTemplateBulkGenerateUser
|
||||
{
|
||||
public List<ItemWithCount<Disco.Models.Repository.UserFlag>> UserFlags { get; set; }
|
||||
}
|
||||
|
||||
public class BulkGenerateDeviceModel : BulkGenerateModel, ConfigDocumentTemplateBulkGenerateDevice
|
||||
{
|
||||
public List<ItemWithCount<Disco.Models.Repository.DeviceFlag>> DeviceFlags { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,61 @@
|
||||
@model Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateDeviceModel
|
||||
@{
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.BulkGenerate, Claims.User.Actions.GenerateDocuments);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description, MVC.Config.DocumentTemplate.Index(Model.DocumentTemplate.Id), "Bulk Generate");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DocumentBulkGenerate");
|
||||
}
|
||||
<div id="DocumentTemplate_BulkGenerate">
|
||||
<div class="actions">
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id)))
|
||||
{
|
||||
if (Model.TemplatePageCount > 1 && Model.TemplatePageCount % 2 != 0)
|
||||
{
|
||||
<input id="DocumentTemplate_BulkGenerate_InsertBlankPage" type="checkbox" name="InsertBlankPage" value="True" checked /><label for="DocumentTemplate_BulkGenerate_InsertBlankPage">Insert Blank Pages for Double-Sided Printing</label>
|
||||
}
|
||||
<input id="DocumentTemplate_BulkGenerate_DataIds" name="DataIds" type="hidden" />
|
||||
<button id="BulkGenerate" class="button" disabled>Bulk Generate</button>
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
<br />
|
||||
<button id="AddDevices" class="button small">Add Devices</button>
|
||||
@if (Model.DeviceFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceFlag" class="button small">Add With Device Flag</button>
|
||||
}
|
||||
@if (Model.DeviceProfiles.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceProfile" class="button small">Add With Device Profile</button>
|
||||
}
|
||||
@if (Model.DeviceBatches.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceBatch" class="button small">Add With Device Batch</button>
|
||||
}
|
||||
@if (Model.DocumentTemplates.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDocumentAttachment" class="button small">Add With Document Attachment</button>
|
||||
}
|
||||
<button id="AddUsers" class="button small">Add With Assigned User</button>
|
||||
@if (Model.UserDetails.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddUserDetail" class="button small">Add With Assigned User Detail</button>
|
||||
}
|
||||
</div>
|
||||
<table id="DocumentTemplate_BulkGenerate_Records" class="genericData" data-scope="device">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>Serial Number</th>
|
||||
<th class="name"> </th>
|
||||
<th>Scope</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="when-none">
|
||||
<td colspan="4">Add Devices</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@Html.Partial(MVC.Config.DocumentTemplate.Views._BulkGenerateShared, Model)
|
||||
@@ -0,0 +1,332 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Config.Views.DocumentTemplate
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/BulkGenerateDevice.cshtml")]
|
||||
public partial class BulkGenerateDevice : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateDeviceModel>
|
||||
{
|
||||
public BulkGenerateDevice()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.BulkGenerate, Claims.User.Actions.GenerateDocuments);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description, MVC.Config.DocumentTemplate.Index(Model.DocumentTemplate.Id), "Bulk Generate");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DocumentBulkGenerate");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<div");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"actions\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 10 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 10 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id)))
|
||||
{
|
||||
if (Model.TemplatePageCount > 1 && Model.TemplatePageCount % 2 != 0)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <input");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate_InsertBlankPage\"");
|
||||
|
||||
WriteLiteral(" type=\"checkbox\"");
|
||||
|
||||
WriteLiteral(" name=\"InsertBlankPage\"");
|
||||
|
||||
WriteLiteral(" value=\"True\"");
|
||||
|
||||
WriteLiteral(" checked />");
|
||||
|
||||
WriteLiteral("<label");
|
||||
|
||||
WriteLiteral(" for=\"DocumentTemplate_BulkGenerate_InsertBlankPage\"");
|
||||
|
||||
WriteLiteral(">Insert Blank Pages for Double-Sided Printing</label>\r\n");
|
||||
|
||||
|
||||
#line 15 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <input");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate_DataIds\"");
|
||||
|
||||
WriteLiteral(" name=\"DataIds\"");
|
||||
|
||||
WriteLiteral(" type=\"hidden\"");
|
||||
|
||||
WriteLiteral(" />\r\n");
|
||||
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"BulkGenerate\"");
|
||||
|
||||
WriteLiteral(" class=\"button\"");
|
||||
|
||||
WriteLiteral(" disabled>Bulk Generate</button>\r\n");
|
||||
|
||||
|
||||
#line 18 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 18 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
Write(Html.AntiForgeryToken());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 18 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <br />\r\n <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDevices\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add Devices</button>\r\n");
|
||||
|
||||
|
||||
#line 22 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 22 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
if (Model.DeviceFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDeviceFlag\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Device Flag</button>\r\n");
|
||||
|
||||
|
||||
#line 25 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 26 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
if (Model.DeviceProfiles.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDeviceProfile\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Device Profile</button>\r\n");
|
||||
|
||||
|
||||
#line 29 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 30 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
if (Model.DeviceBatches.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDeviceBatch\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Device Batch</button>\r\n");
|
||||
|
||||
|
||||
#line 33 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 34 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
if (Model.DocumentTemplates.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDocumentAttachment\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Document Attachment</button>\r\n");
|
||||
|
||||
|
||||
#line 37 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddUsers\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Assigned User</button>\r\n");
|
||||
|
||||
|
||||
#line 39 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 39 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
if (Model.UserDetails.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddUserDetail\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Assigned User Detail</button>\r\n");
|
||||
|
||||
|
||||
#line 42 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </div>\r\n <table");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate_Records\"");
|
||||
|
||||
WriteLiteral(" class=\"genericData\"");
|
||||
|
||||
WriteLiteral(" data-scope=\"device\"");
|
||||
|
||||
WriteLiteral(">\r\n <thead>\r\n <tr>\r\n <th> </th>\r\n " +
|
||||
" <th>Serial Number</th>\r\n <th");
|
||||
|
||||
WriteLiteral(" class=\"name\"");
|
||||
|
||||
WriteLiteral("> </th>\r\n <th>Scope</th>\r\n </tr>\r\n </thead>" +
|
||||
"\r\n <tbody>\r\n <tr");
|
||||
|
||||
WriteLiteral(" class=\"when-none\"");
|
||||
|
||||
WriteLiteral(">\r\n <td");
|
||||
|
||||
WriteLiteral(" colspan=\"4\"");
|
||||
|
||||
WriteLiteral(">Add Devices</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n");
|
||||
|
||||
|
||||
#line 61 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateDevice.cshtml"
|
||||
Write(Html.Partial(MVC.Config.DocumentTemplate.Views._BulkGenerateShared, Model));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
@@ -0,0 +1,62 @@
|
||||
@model Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateUserModel
|
||||
@using Disco.Services.Interop.ActiveDirectory;
|
||||
@{
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.BulkGenerate, Claims.User.Actions.GenerateDocuments);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description, MVC.Config.DocumentTemplate.Index(Model.DocumentTemplate.Id), "Bulk Generate");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DocumentBulkGenerate");
|
||||
}
|
||||
<div id="DocumentTemplate_BulkGenerate">
|
||||
<div class="actions">
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id)))
|
||||
{
|
||||
if (Model.TemplatePageCount > 1 && Model.TemplatePageCount % 2 != 0)
|
||||
{
|
||||
<input id="DocumentTemplate_BulkGenerate_InsertBlankPage" type="checkbox" name="InsertBlankPage" value="True" checked /><label for="DocumentTemplate_BulkGenerate_InsertBlankPage">Insert Blank Pages for Double-Sided Printing</label>
|
||||
}
|
||||
<input id="DocumentTemplate_BulkGenerate_DataIds" name="DataIds" type="hidden" />
|
||||
<button id="BulkGenerate" class="button" disabled>Bulk Generate</button>
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
<br />
|
||||
<button id="AddUsers" class="button small">Add Users</button>
|
||||
<button id="AddGroupMembers" class="button small">Add Group Members</button>
|
||||
@if (Model.UserFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
<button id="AddUserFlag" class="button small">Add With User Flag</button>
|
||||
}
|
||||
@if (Model.DeviceProfiles.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceProfile" class="button small">Add With Device Profile</button>
|
||||
}
|
||||
@if (Model.DeviceBatches.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceBatch" class="button small">Add With Device Batch</button>
|
||||
}
|
||||
@if (Model.DocumentTemplates.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDocumentAttachment" class="button small">Add With Document Attachment</button>
|
||||
}
|
||||
@if (Model.UserDetails.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddUserDetail" class="button small">Add With User Detail</button>
|
||||
}
|
||||
</div>
|
||||
<table id="DocumentTemplate_BulkGenerate_Records" class="genericData" data-scope="user">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>Username</th>
|
||||
<th class="name">Name</th>
|
||||
<th>Scope</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="when-none">
|
||||
<td colspan="4">Add Users</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@Html.Partial(MVC.Config.DocumentTemplate.Views._BulkGenerateShared, Model)
|
||||
@@ -0,0 +1,332 @@
|
||||
#pragma warning disable 1591
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace Disco.Web.Areas.Config.Views.DocumentTemplate
|
||||
{
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Web;
|
||||
using System.Web.Helpers;
|
||||
using System.Web.Mvc;
|
||||
using System.Web.Mvc.Ajax;
|
||||
using System.Web.Mvc.Html;
|
||||
using System.Web.Routing;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.WebPages;
|
||||
using Disco;
|
||||
using Disco.Models.Repository;
|
||||
using Disco.Services;
|
||||
using Disco.Services.Authorization;
|
||||
|
||||
#line 2 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
using Disco.Services.Interop.ActiveDirectory;
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
using Disco.Services.Web;
|
||||
using Disco.Web;
|
||||
using Disco.Web.Extensions;
|
||||
|
||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("RazorGenerator", "2.0.0.0")]
|
||||
[System.Web.WebPages.PageVirtualPathAttribute("~/Areas/Config/Views/DocumentTemplate/BulkGenerateUser.cshtml")]
|
||||
public partial class BulkGenerateUser : Disco.Services.Web.WebViewPage<Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateUserModel>
|
||||
{
|
||||
public BulkGenerateUser()
|
||||
{
|
||||
}
|
||||
public override void Execute()
|
||||
{
|
||||
|
||||
#line 3 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.BulkGenerate, Claims.User.Actions.GenerateDocuments);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description, MVC.Config.DocumentTemplate.Index(Model.DocumentTemplate.Id), "Bulk Generate");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DocumentBulkGenerate");
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n<div");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate\"");
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
|
||||
WriteLiteral(" class=\"actions\"");
|
||||
|
||||
WriteLiteral(">\r\n");
|
||||
|
||||
|
||||
#line 11 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 11 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id)))
|
||||
{
|
||||
if (Model.TemplatePageCount > 1 && Model.TemplatePageCount % 2 != 0)
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <input");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate_InsertBlankPage\"");
|
||||
|
||||
WriteLiteral(" type=\"checkbox\"");
|
||||
|
||||
WriteLiteral(" name=\"InsertBlankPage\"");
|
||||
|
||||
WriteLiteral(" value=\"True\"");
|
||||
|
||||
WriteLiteral(" checked />");
|
||||
|
||||
WriteLiteral("<label");
|
||||
|
||||
WriteLiteral(" for=\"DocumentTemplate_BulkGenerate_InsertBlankPage\"");
|
||||
|
||||
WriteLiteral(">Insert Blank Pages for Double-Sided Printing</label>\r\n");
|
||||
|
||||
|
||||
#line 16 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <input");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate_DataIds\"");
|
||||
|
||||
WriteLiteral(" name=\"DataIds\"");
|
||||
|
||||
WriteLiteral(" type=\"hidden\"");
|
||||
|
||||
WriteLiteral(" />\r\n");
|
||||
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"BulkGenerate\"");
|
||||
|
||||
WriteLiteral(" class=\"button\"");
|
||||
|
||||
WriteLiteral(" disabled>Bulk Generate</button>\r\n");
|
||||
|
||||
|
||||
#line 19 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 19 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
Write(Html.AntiForgeryToken());
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 19 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <br />\r\n <button");
|
||||
|
||||
WriteLiteral(" id=\"AddUsers\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add Users</button>\r\n <button");
|
||||
|
||||
WriteLiteral(" id=\"AddGroupMembers\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add Group Members</button>\r\n");
|
||||
|
||||
|
||||
#line 24 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
|
||||
#line 24 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
if (Model.UserFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddUserFlag\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With User Flag</button>\r\n");
|
||||
|
||||
|
||||
#line 27 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 28 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
if (Model.DeviceProfiles.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDeviceProfile\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Device Profile</button>\r\n");
|
||||
|
||||
|
||||
#line 31 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 32 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
if (Model.DeviceBatches.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDeviceBatch\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Device Batch</button>\r\n");
|
||||
|
||||
|
||||
#line 35 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 36 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
if (Model.DocumentTemplates.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddDocumentAttachment\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With Document Attachment</button>\r\n");
|
||||
|
||||
|
||||
#line 39 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" ");
|
||||
|
||||
|
||||
#line 40 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
if (Model.UserDetails.Any(b => b.Count > 0))
|
||||
{
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" <button");
|
||||
|
||||
WriteLiteral(" id=\"AddUserDetail\"");
|
||||
|
||||
WriteLiteral(" class=\"button small\"");
|
||||
|
||||
WriteLiteral(">Add With User Detail</button>\r\n");
|
||||
|
||||
|
||||
#line 43 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
}
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral(" </div>\r\n <table");
|
||||
|
||||
WriteLiteral(" id=\"DocumentTemplate_BulkGenerate_Records\"");
|
||||
|
||||
WriteLiteral(" class=\"genericData\"");
|
||||
|
||||
WriteLiteral(" data-scope=\"user\"");
|
||||
|
||||
WriteLiteral(">\r\n <thead>\r\n <tr>\r\n <th> </th>\r\n " +
|
||||
" <th>Username</th>\r\n <th");
|
||||
|
||||
WriteLiteral(" class=\"name\"");
|
||||
|
||||
WriteLiteral(">Name</th>\r\n <th>Scope</th>\r\n </tr>\r\n </thead>\r\n" +
|
||||
" <tbody>\r\n <tr");
|
||||
|
||||
WriteLiteral(" class=\"when-none\"");
|
||||
|
||||
WriteLiteral(">\r\n <td");
|
||||
|
||||
WriteLiteral(" colspan=\"4\"");
|
||||
|
||||
WriteLiteral(">Add Users</td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n</div>\r\n\r\n");
|
||||
|
||||
|
||||
#line 62 "..\..\Areas\Config\Views\DocumentTemplate\BulkGenerateUser.cshtml"
|
||||
Write(Html.Partial(MVC.Config.DocumentTemplate.Views._BulkGenerateShared, Model));
|
||||
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
WriteLiteral("\r\n");
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
#pragma warning restore 1591
|
||||
@@ -1039,7 +1039,7 @@
|
||||
}
|
||||
@if (canBulkGenerate)
|
||||
{
|
||||
if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.User)
|
||||
if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.User || Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Device)
|
||||
{
|
||||
@Html.ActionLinkButton("Bulk Generate", MVC.Config.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id))
|
||||
}
|
||||
|
||||
@@ -3289,7 +3289,7 @@ WriteLiteral(" ");
|
||||
#line 1040 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
|
||||
if (canBulkGenerate)
|
||||
{
|
||||
if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.User)
|
||||
if (Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.User || Model.DocumentTemplate.Scope == DocumentTemplate.DocumentTemplateScopes.Device)
|
||||
{
|
||||
|
||||
|
||||
@@ -3328,16 +3328,16 @@ WriteLiteral(" id=\"dialogBulkGenerate\"");
|
||||
|
||||
WriteLiteral(" class=\"dialog dialog-bulk-generate\"");
|
||||
|
||||
WriteAttribute("title", Tuple.Create(" title=\"", 62559), Tuple.Create("\"", 62610)
|
||||
, Tuple.Create(Tuple.Create("", 62567), Tuple.Create("Bulk", 62567), true)
|
||||
, Tuple.Create(Tuple.Create(" ", 62571), Tuple.Create("Generate:", 62572), true)
|
||||
WriteAttribute("title", Tuple.Create(" title=\"", 62641), Tuple.Create("\"", 62692)
|
||||
, Tuple.Create(Tuple.Create("", 62649), Tuple.Create("Bulk", 62649), true)
|
||||
, Tuple.Create(Tuple.Create(" ", 62653), Tuple.Create("Generate:", 62654), true)
|
||||
|
||||
#line 1049 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
|
||||
, Tuple.Create(Tuple.Create(" ", 62581), Tuple.Create<System.Object, System.Int32>(Model.DocumentTemplate.Id
|
||||
, Tuple.Create(Tuple.Create(" ", 62663), Tuple.Create<System.Object, System.Int32>(Model.DocumentTemplate.Id
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 62582), false)
|
||||
, 62664), false)
|
||||
);
|
||||
|
||||
WriteLiteral(">\r\n <div");
|
||||
@@ -3631,14 +3631,14 @@ WriteLiteral(" title=\"Download Bulk Documents\"");
|
||||
|
||||
WriteLiteral(">\r\n <a");
|
||||
|
||||
WriteAttribute("href", Tuple.Create(" href=\"", 67770), Tuple.Create("\"", 67907)
|
||||
WriteAttribute("href", Tuple.Create(" href=\"", 67852), Tuple.Create("\"", 67989)
|
||||
|
||||
#line 1138 "..\..\Areas\Config\Views\DocumentTemplate\Show.cshtml"
|
||||
, Tuple.Create(Tuple.Create("", 67777), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DocumentTemplate.BulkGenerateDownload(Model.BulkGenerateDownloadId.Value, Model.BulkGenerateDownloadFilename))
|
||||
, Tuple.Create(Tuple.Create("", 67859), Tuple.Create<System.Object, System.Int32>(Url.Action(MVC.API.DocumentTemplate.BulkGenerateDownload(Model.BulkGenerateDownloadId.Value, Model.BulkGenerateDownloadFilename))
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
, 67777), false)
|
||||
, 67859), false)
|
||||
);
|
||||
|
||||
WriteLiteral(" class=\"button\"");
|
||||
|
||||
+163
-110
@@ -1,119 +1,133 @@
|
||||
@model Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateModel
|
||||
@using Disco.Services.Interop.ActiveDirectory;
|
||||
@{
|
||||
Authorization.RequireAll(Claims.Config.DocumentTemplate.BulkGenerate, Claims.User.Actions.GenerateDocuments);
|
||||
|
||||
ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), Model.DocumentTemplate.Description, MVC.Config.DocumentTemplate.Index(Model.DocumentTemplate.Id), "Bulk Generate");
|
||||
Html.BundleDeferred("~/ClientScripts/Modules/Disco-DocumentBulkGenerate");
|
||||
if (Model == null)
|
||||
{
|
||||
throw new ArgumentNullException("Model", "Model cannot be null.");
|
||||
}
|
||||
var userModel = Model as Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateUserModel;
|
||||
var deviceModel = Model as Disco.Web.Areas.Config.Models.DocumentTemplate.BulkGenerateDeviceModel;
|
||||
string scope;
|
||||
if (userModel != null)
|
||||
{
|
||||
scope = "user";
|
||||
}
|
||||
else if (deviceModel != null)
|
||||
{
|
||||
scope = "device";
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidOperationException("Unexpected model: " + Model.GetType().FullName);
|
||||
}
|
||||
}
|
||||
<div id="DocumentTemplate_BulkGenerate">
|
||||
<div class="actions">
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerate(Model.DocumentTemplate.Id)))
|
||||
{
|
||||
if (Model.TemplatePageCount > 1 && Model.TemplatePageCount % 2 != 0)
|
||||
{
|
||||
<input id="DocumentTemplate_BulkGenerate_InsertBlankPage" type="checkbox" name="InsertBlankPage" value="True" checked /><label for="DocumentTemplate_BulkGenerate_InsertBlankPage">Insert Blank Pages for Double-Sided Printing</label>
|
||||
}
|
||||
<input id="DocumentTemplate_BulkGenerate_DataIds" name="DataIds" type="hidden" />
|
||||
<button id="BulkGenerate" class="button" disabled>Bulk Generate</button>
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
<br />
|
||||
<button id="AddUsers" class="button small">Add Users</button>
|
||||
<button id="AddGroupMembers" class="button small">Add Group Members</button>
|
||||
@if (Model.UserFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
<button id="AddUserFlag" class="button small">Add With User Flag</button>
|
||||
}
|
||||
@if (Model.DeviceProfiles.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceProfile" class="button small">Add With Device Profile</button>
|
||||
}
|
||||
@if (Model.DeviceBatches.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDeviceBatch" class="button small">Add With Device Batch</button>
|
||||
}
|
||||
@if (Model.DocumentTemplates.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddDocumentAttachment" class="button small">Add With Document Attachment</button>
|
||||
}
|
||||
@if (Model.UserDetails.Any(b => b.Count > 0))
|
||||
{
|
||||
<button id="AddUserDetail" class="button small">Add With User Detail</button>
|
||||
}
|
||||
</div>
|
||||
<table class="genericData">
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>Username</th>
|
||||
<th>Name</th>
|
||||
<th>Scope</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="when-none">
|
||||
<td colspan="4">Add Users</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUsers" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add Users">
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUsers" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by Users">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Enter multiple <span class="scopeDescBulkGenerate">User Ids</span> separated by <code><new line></code>, commas (<code>,</code>) or semicolons (<code>;</code>).
|
||||
</div>
|
||||
<div>
|
||||
Security Groups can also be included. Members will be resolved and added.
|
||||
</div>
|
||||
@if (userModel != null)
|
||||
{
|
||||
<div>
|
||||
Security Groups can also be included. Members will be resolved and added.
|
||||
</div>
|
||||
}
|
||||
@if (deviceModel != null)
|
||||
{
|
||||
<div>
|
||||
Devices associated with the users will be added.
|
||||
</div>
|
||||
}
|
||||
<div class="examples clearfix">
|
||||
<h4>Examples:</h4>
|
||||
<div class="example1 code">
|
||||
user6<br />
|
||||
smi0099<br />
|
||||
@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith<br />
|
||||
Domain Admins
|
||||
@if (userModel != null)
|
||||
{
|
||||
<text>Domain Admins</text>
|
||||
}
|
||||
</div>
|
||||
<div class="example2 code">
|
||||
user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
|
||||
</div>
|
||||
<div class="example3 code">
|
||||
user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith
|
||||
</div>
|
||||
<div class="example2 code">user6,smi0099,@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith,Domain Admins</div>
|
||||
<div class="example3 code">user6;smi0099;@(ActiveDirectory.Context.PrimaryDomain.NetBiosName)\rsmith;Domain Admins</div>
|
||||
</div>
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddUsers()))
|
||||
{
|
||||
<div class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="userIds"></div>
|
||||
<textarea id="inputBulkGenerateDataIds" name="userIds" data-val="true" data-val-required="Identifiers are required" required></textarea>
|
||||
<input type="hidden" name="scope" value="@scope" />
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add Group Members">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all members of a group (including recursive members) to the bulk generation.
|
||||
</div>
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddGroupMembers()))
|
||||
{
|
||||
<table class="input">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
<label for="DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers_Group">Group:</label>
|
||||
</th>
|
||||
<td>
|
||||
<input id="DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers_Group" type="text" name="groupId" data-autocomplete-src="@(Url.Action(MVC.API.System.SearchGroupSubjects()))" required />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
|
||||
@if (Model.UserFlags.Any(f => f.Count > 0))
|
||||
@if (deviceModel != null)
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUserFlag" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add User Flag Assignments">
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDevices" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by Devices">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Enter multiple <span class="scopeDescBulkGenerate">Device Serial Numbers</span> separated by <code><new line></code>, commas (<code>,</code>) or semicolons (<code>;</code>).
|
||||
</div>
|
||||
<div class="examples clearfix">
|
||||
<h4>Examples:</h4>
|
||||
<div class="example1 code">
|
||||
LAPTOP-12345<br />
|
||||
TAB-987654<br />
|
||||
PHONE-ABC321
|
||||
</div>
|
||||
<div class="example2 code">
|
||||
LAPTOP-12345,TAB-987654,PHONE-ABC321
|
||||
</div>
|
||||
<div class="example3 code">
|
||||
LAPTOP-12345;TAB-987654;PHONE-ABC321
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddDevices()))
|
||||
{
|
||||
<div class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="userIds"></div>
|
||||
<textarea name="deviceSerialNumbers" data-val="true" data-val-required="Identifiers are required" required></textarea>
|
||||
<input type="hidden" name="scope" value="@scope" />
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (userModel != null)
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by Group Members">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all members of a group (including recursive members) to the bulk generation.
|
||||
</div>
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddGroupMembers()))
|
||||
{
|
||||
<table class="input">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>
|
||||
<label for="DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers_Group">Group:</label>
|
||||
</th>
|
||||
<td>
|
||||
<input id="DocumentTemplate_BulkGenerate_Dialog_AddGroupMembers_Group" type="text" name="groupId" data-autocomplete-src="@(Url.Action(MVC.API.System.SearchGroupSubjects()))" required />
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (userModel != null && userModel.UserFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUserFlag" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add User Flag">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all users associated with the flag to the bulk generation.
|
||||
@@ -123,10 +137,35 @@
|
||||
{
|
||||
<input name="flagId" type="hidden" required />
|
||||
<div class="dialog-item-picker">
|
||||
@foreach (var flag in Model.UserFlags)
|
||||
@foreach (var flag in userModel.UserFlags)
|
||||
{
|
||||
<div class="item @(flag.Count == 0 ? "disabled" : null)" data-userflagid="@flag.Item.Id">
|
||||
<i class="fa fa-@(flag.Item.Icon) fa-fw fa-lg d-@(flag.Item.IconColour)"></i>@flag.Item.Name <small>(@flag.Count.ToString("N0") user@(flag.Count == 1 ? null : "s"))</small>
|
||||
<i class="fa fa-@(flag.Item.Icon) fa-fw fa-lg d-@(flag.Item.IconColour)"></i>@flag.Item.Name <small>(@flag.Count.ToString("N0") @scope@(flag.Count == 1 ? null : "s"))</small>
|
||||
</div>
|
||||
|
||||
}
|
||||
</div>
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (deviceModel != null && deviceModel.DeviceFlags.Any(f => f.Count > 0))
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDeviceFlag" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add Device Flag">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all devices associated with the flag to the bulk generation.
|
||||
</div>
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddDeviceFlag()))
|
||||
{
|
||||
<input name="flagId" type="hidden" required />
|
||||
<div class="dialog-item-picker">
|
||||
@foreach (var flag in deviceModel.DeviceFlags)
|
||||
{
|
||||
<div class="item @(flag.Count == 0 ? "disabled" : null)" data-userflagid="@flag.Item.Id">
|
||||
<i class="fa fa-@(flag.Item.Icon) fa-fw fa-lg d-@(flag.Item.IconColour)"></i>@flag.Item.Name <small>(@flag.Count.ToString("N0") @scope@(flag.Count == 1 ? null : "s"))</small>
|
||||
</div>
|
||||
|
||||
}
|
||||
@@ -138,12 +177,15 @@
|
||||
|
||||
@if (Model.DeviceProfiles.Any(b => b.Count > 0))
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDeviceProfile" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add User by Assigned Device Profile">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all users associated with a device in the selected profile to the bulk generation.
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDeviceProfile" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by Device Profile">
|
||||
@if (userModel != null)
|
||||
{
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all users associated with a device in the selected profile to the bulk generation.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddDeviceProfile()))
|
||||
{
|
||||
<input name="deviceProfileId" type="hidden" required />
|
||||
@@ -151,10 +193,11 @@
|
||||
@foreach (var profile in Model.DeviceProfiles)
|
||||
{
|
||||
<div class="item @(profile.Count == 0 ? "disabled" : null)" data-id="@profile.Item.Id">
|
||||
<i class="fa fa-cog fa-fw fa-lg"></i>@profile.Item.Name <small>(@profile.Count.ToString("N0") user@(profile.Count == 1 ? null : "s"))</small>
|
||||
<i class="fa fa-cog fa-fw fa-lg"></i>@profile.Item.Name <small>(@profile.Count.ToString("N0") @scope@(profile.Count == 1 ? null : "s"))</small>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<input type="hidden" name="scope" value="@scope" />
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
@@ -162,7 +205,7 @@
|
||||
|
||||
@if (Model.DeviceBatches.Any(b => b.Count > 0))
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDeviceBatch" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add User by Assigned Device Batch">
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDeviceBatch" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by Device Batch">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all users associated with a device in the selected batch to the bulk generation.
|
||||
@@ -175,10 +218,11 @@
|
||||
@foreach (var batch in Model.DeviceBatches)
|
||||
{
|
||||
<div class="item @(batch.Count == 0 ? "disabled" : null)" data-id="@batch.Item.Id">
|
||||
<i class="fa fa-cog fa-fw fa-lg"></i>@batch.Item.Name <small>(@batch.Count.ToString("N0") user@(batch.Count == 1 ? null : "s"))</small>
|
||||
<i class="fa fa-cog fa-fw fa-lg"></i>@batch.Item.Name <small>(@batch.Count.ToString("N0") @scope@(batch.Count == 1 ? null : "s"))</small>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<input type="hidden" name="scope" value="@scope" />
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
@@ -186,7 +230,7 @@
|
||||
|
||||
@if (Model.DocumentTemplates.Any(b => b.Count > 0))
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDocumentAttachment" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add User by Assigned Device Batch">
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddDocumentAttachment" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by Document Attachment">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all users associated with an attachment of the selected document template to the bulk generation.
|
||||
@@ -199,7 +243,7 @@
|
||||
@foreach (var template in Model.DocumentTemplates)
|
||||
{
|
||||
<div class="item @(template.Count == 0 ? "disabled" : null)" data-id="@template.Item.Id">
|
||||
<i class="fa fa-file-text-o fa-fw fa-lg"></i>@template.Item.Id: @template.Item.Description <small>(@template.Count.ToString("N0") user@(template.Count == 1 ? null : "s"))</small>
|
||||
<i class="fa fa-file-text-o fa-fw fa-lg"></i>@template.Item.Id: @template.Item.Description <small>(@template.Count.ToString("N0") @scope@(template.Count == 1 ? null : "s"))</small>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@@ -207,6 +251,7 @@
|
||||
<label for="DocumentTemplate_BulkGenerate_Dialog_AddDocumentAttachment_Threshold">Attachment Added After <small>(optional)</small></label>
|
||||
<input id="DocumentTemplate_BulkGenerate_Dialog_AddDocumentAttachment_Threshold" name="threshold" type="date" />
|
||||
</div>
|
||||
<input type="hidden" name="scope" value="@scope" />
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
@@ -214,11 +259,20 @@
|
||||
|
||||
@if (Model.UserDetails.Any(b => b.Count > 0))
|
||||
{
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUserDetail" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add User by Detail">
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUserDetail" class="dialog dialog-bulk-generate" title="@(Model.DocumentTemplate.Description): Add by User Detail">
|
||||
<div class="brief">
|
||||
<div>
|
||||
Add all users with a matching user detail to the bulk generation.
|
||||
</div>
|
||||
@if (userModel != null)
|
||||
{
|
||||
<div>
|
||||
Add all users with a matching user detail to the bulk generation.
|
||||
</div>
|
||||
}
|
||||
@if (deviceModel != null)
|
||||
{
|
||||
<div>
|
||||
Add all devices assigned to users with a matching user detail to the bulk generation.
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateAddUserDetail()))
|
||||
{
|
||||
@@ -229,11 +283,11 @@
|
||||
@foreach (var key in Model.UserDetails)
|
||||
{
|
||||
<div class="item @(key.Count == 0 ? "disabled" : null)" data-id="@key.Item">
|
||||
<i class="fa fa-info fa-fw fa-lg"></i>@key.Item.TrimEnd('*', '&') <small>(@key.Count.ToString("N0") user@(key.Count == 1 ? null : "s"))</small>
|
||||
<i class="fa fa-info fa-fw fa-lg"></i>@key.Item.TrimEnd('*', '&') <small>(@key.Count.ToString("N0") @scope@(key.Count == 1 ? null : "s"))</small>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
<input type="hidden" name="scope" value="@scope" />
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
@using (Html.BeginForm(MVC.API.DocumentTemplate.BulkGenerateGetUserDetailValues()))
|
||||
@@ -242,8 +296,7 @@
|
||||
|
||||
<div id="DocumentTemplate_BulkGenerate_Dialog_AddUserDetail_Value" class="dialog-item-picker" style="width: 49%; float: left; margin-left: 1%;">
|
||||
</div>
|
||||
|
||||
@Html.AntiForgeryToken()
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user