@model Disco.Web.Areas.Config.Models.DeviceBatch.ShowModel @using Disco.Services.Devices.ManagedGroups; @using Disco.Web.Areas.Config.Models.Shared; @{ Authorization.Require(Claims.Config.DeviceBatch.Show); ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Device Batches", MVC.Config.DeviceBatch.Index(null), Model.DeviceBatch.ToString()); var canConfig = Authorization.Has(Claims.Config.DeviceBatch.Configure); var canDeviceModelShow = Authorization.Has(Claims.Config.DeviceModel.Show); var hideAdvanced = Model.DeviceBatch.AssignedUsersLinkedGroup == null && Model.DeviceBatch.DevicesLinkedGroup == null; Html.BundleDeferred("~/Style/Shadowbox"); Html.BundleDeferred("~/ClientScripts/Modules/Shadowbox"); Html.BundleDeferred("~/ClientScripts/Modules/jQuery-SignalR"); if (canConfig) { Html.BundleDeferred("~/ClientScripts/Modules/Disco-PropertyChangeHelpers"); Html.BundleDeferred("~/ClientScripts/Modules/Disco-AjaxHelperIcons"); Html.BundleDeferred("~/ClientScripts/Modules/tinymce"); Html.BundleDeferred("~/ClientScripts/Modules/Disco-AttachmentUploader"); } }
@if (hideAdvanced) { }
Id: @Html.DisplayFor(model => model.DeviceBatch.Id)
Name: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.Name) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { @Model.DeviceBatch.Name }
Default Device Model: @if (canConfig) { @Html.DropDownListFor(model => model.DeviceBatch.DefaultDeviceModelId, Model.DeviceModels.ToSelectListItems(null, true)) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (Model.DefaultDeviceModel == null) {<None Specified>} else {@Model.DefaultDeviceModel.ToString(); } }
Devices added offline will default to this Device Model. Once a device enrols the Device Model will be accurately represented.
Devices @if (Model.DeviceModelMembers.Count > 0) { @foreach (var membership in Model.DeviceModelMembers.OrderByDescending(dmm => dmm.DeviceCount)) { }
Model Device Count Decommissioned
@if (canDeviceModelShow) { @Html.ActionLink(membership.DeviceModel.ToString(), MVC.Config.DeviceModel.Index(membership.DeviceModel.Id)) } else { @membership.DeviceModel.ToString() } @membership.DeviceCount.ToString("n0") @membership.DeviceDecommissionedCount.ToString("n0")
Total Models: @Model.DeviceModelMembers.Count.ToString("n0") @Model.DeviceCount.ToString("n0") @Model.DeviceDecommissionedCount.ToString("n0")
} else {
No device models are referenced in this batch.
} @if (Model.DeviceBatch.UnitQuantity.HasValue && Model.DeviceBatch.UnitQuantity.Value > Model.DeviceCount) { var missingCount = Model.DeviceBatch.UnitQuantity.Value - Model.DeviceCount;

@Model.DeviceCount.ToString("n0") of @(Model.DeviceBatch.UnitQuantity.Value.ToString("n0")) purchased devices are managed by Disco. @missingCount.ToString("n0") @(missingCount == 1 ? "is" : "are") not managed.

}
Purchase:
Purchase Date: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.PurchaseDate) @AjaxHelpers.AjaxLoader() } else { @CommonHelpers.FriendlyDate(Model.DeviceBatch.PurchaseDate) }
Supplier: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.Supplier) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrEmpty(Model.DeviceBatch.Supplier)) {<None Specified>} else {@Model.DeviceBatch.Supplier} }
Unit Cost: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.UnitCost) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (!Model.DeviceBatch.UnitCost.HasValue) {<None Specified>} else {@Model.DeviceBatch.UnitCost.Value.ToString("C")} }
Quantity: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.UnitQuantity) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (!Model.DeviceBatch.UnitQuantity.HasValue) {<None Specified>} else {@Model.DeviceBatch.UnitQuantity.Value.ToString("n0")} }
Details @AjaxHelpers.AjaxLoader("ajaxPurchaseDetails")
@if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.PurchaseDetails) } else { if (string.IsNullOrEmpty(Model.DeviceBatch.PurchaseDetails)) {<None Specified>} else {@(new HtmlString(Model.DeviceBatch.PurchaseDetails))} }
Warranty:
Valid Until: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.WarrantyValidUntil) @AjaxHelpers.AjaxLoader() } else { @CommonHelpers.FriendlyDate(Model.DeviceBatch.WarrantyValidUntil, "Unknown") }
Details @AjaxHelpers.AjaxLoader("ajaxWarrantyDetails")
@if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.WarrantyDetails) } else { if (string.IsNullOrEmpty(Model.DeviceBatch.WarrantyDetails)) {<None Specified>} else {@(new HtmlString(Model.DeviceBatch.WarrantyDetails))} }
Insurance:
Supplier: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.InsuranceSupplier) @AjaxHelpers.AjaxSave() @AjaxHelpers.AjaxLoader() } else { if (string.IsNullOrEmpty(Model.DeviceBatch.InsuranceSupplier)) {<None Specified>} else {@Model.DeviceBatch.InsuranceSupplier; } }
Insured Date: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.InsuredDate) @AjaxHelpers.AjaxLoader() } else { @CommonHelpers.FriendlyDate(Model.DeviceBatch.InsuredDate, "Unknown") }
Insured Until: @if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.InsuredUntil) @AjaxHelpers.AjaxLoader() } else { @CommonHelpers.FriendlyDate(Model.DeviceBatch.InsuredUntil, "Unknown") }
Details @AjaxHelpers.AjaxLoader("ajaxInsuranceDetails")
@if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.InsuranceDetails) } else { if (string.IsNullOrEmpty(Model.DeviceBatch.InsuranceDetails)) {<None Specified>} else {@(new HtmlString(Model.DeviceBatch.InsuranceDetails))} }
Comments:
@AjaxHelpers.AjaxLoader("ajaxComments")
@if (canConfig) { @Html.EditorFor(model => model.DeviceBatch.Comments) } else { if (string.IsNullOrEmpty(Model.DeviceBatch.Comments)) {<None Specified>} else {@(new HtmlString(Model.DeviceBatch.Comments))} }
Attachments:

Drop Attachments Here

@if (Model.DeviceBatch.DeviceBatchAttachments != null) { foreach (var attachment in Model.DeviceBatch.DeviceBatchAttachments) { Attachment Thumbnail @attachment.Comments @attachment.TechUser.ToString()@if (canConfig) {}@attachment.Timestamp.ToFullDateTime() } }
@if (canConfig) {

 Are you sure?

}
Linked Groups:
@Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, CategoryDescription = DeviceBatchDevicesManagedGroup.GetCategoryDescription(Model.DeviceBatch), Description = DeviceBatchDevicesManagedGroup.GetDescription(Model.DeviceBatch), ManagedGroup = Model.DevicesLinkedGroup, UpdateUrl = Url.Action(MVC.API.DeviceBatch.UpdateDevicesLinkedGroup(Model.DeviceBatch.Id, redirect: true)) }) @Html.Partial(MVC.Config.Shared.Views.LinkedGroupInstance, new LinkedGroupModel() { CanConfigure = canConfig, CategoryDescription = DeviceBatchAssignedUsersManagedGroup.GetCategoryDescription(Model.DeviceBatch), Description = DeviceBatchAssignedUsersManagedGroup.GetDescription(Model.DeviceBatch), ManagedGroup = Model.AssignedUsersLinkedGroup, UpdateUrl = Url.Action(MVC.API.DeviceBatch.UpdateAssignedUsersLinkedGroup(Model.DeviceBatch.Id, redirect: true)) }) @if (canConfig) { @Html.Partial(MVC.Config.Shared.Views.LinkedGroupShared) }
@if (Model.CanDelete) { @Html.ActionLinkButton("Delete", MVC.API.DeviceBatch.Delete(Model.DeviceBatch.Id, true), "buttonDelete") } @if (Model.DeviceCount > 0) { if (Authorization.Has(Claims.Device.Actions.Export)) { @Html.ActionLinkButton("Export Devices", MVC.Device.Export(null, Disco.Models.Services.Devices.Exporting.DeviceExportTypes.Batch, Model.DeviceBatch.Id)) } if (Authorization.Has(Claims.Device.Search) && Model.DeviceCount > 0) { @Html.ActionLinkButton(string.Format("View {0} Device{1}", Model.DeviceCount, (Model.DeviceCount != 1 ? "s" : null)), MVC.Search.Query(Model.DeviceBatch.Id.ToString(), "DeviceBatch")) } }