@model Disco.Web.Areas.Config.Models.DeviceBatch.IndexModel
@{
    Authorization.Require(Claims.Config.DeviceBatch.Show);
    ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Device Batches");
    var hasDecommissionedBatches = Model.DeviceBatches.Any(db => db.DeviceCount > 0 && db.DeviceDecommissionedCount >= db.DeviceCount);
    var showTags = hasDecommissionedBatches || Model.DeviceBatches.Any(i => i.IsLinked);
}
<div id="Config_DeviceBatches">
    @if (Model.DeviceBatches.Count == 0)
    {
        <div class="form" style="width: 450px; padding: 100px 0;">
            <h2>No device batches are configured</h2>
        </div>
    }
    else
    {
        if (hasDecommissionedBatches)
        {
            <a id="Config_DeviceBatches_ShowDecommissioned" href="#" class="button small">Show Decommissioned (@(Model.DeviceBatches.Count(db => db.DeviceCount > 0 && db.DeviceDecommissionedCount >= db.DeviceCount)))</a>
            <script>
                $(function () {
                    $('#Config_DeviceBatches_ShowDecommissioned').click(function () {
                        $(this).remove();
                        $('#Config_DeviceBatches_List')
                            .find('tr.hidden').removeClass('hidden')
                            .filter('.decommissioned-padding').remove();
                        return false;
                    }).detach().appendTo('#layout_PageHeading');
                })
            </script>
        }
        <table id="Config_DeviceBatches_List" class="tableData">
            <tr>
                <th>Name</th>
                <th>Default Model</th>
                <th>Purchase Date</th>
                <th>Warranty Expires</th>
                <th>Insurance Expires</th>
                <th>Device Count</th>
                @if (showTags)
                {
                    <th>&nbsp;</th>
                }
            </tr>
            @foreach (var item in Model.DeviceBatches)
            {
                var isDecommissioned = item.DeviceCount > 0 && item.DeviceDecommissionedCount >= item.DeviceCount;
                <tr class="@(isDecommissioned ? "hidden" : null)">
                    <td>
                        @Html.ActionLink(item.Name, MVC.Config.DeviceBatch.Index(item.Id))
                    </td>
                    <td>
                        @item.DefaultDeviceModel
                    </td>
                    <td>
                        @CommonHelpers.FriendlyDate(item.PurchaseDate)
                    </td>
                    <td>
                        @CommonHelpers.FriendlyDate(item.WarrantyExpires, "Unknown")
                    </td>
                    <td>
                        @CommonHelpers.FriendlyDate(item.InsuredUntil, item.InsuranceSupplier == null ? "N/A" : "Unknown")
                        @(item.InsuranceSupplier == null ? string.Empty : string.Format("[{0}]", item.InsuranceSupplier))
                    </td>
                    <td>
                        @if (item.DeviceCount > 0 && Authorization.Has(Claims.Device.Search))
                        {
                            <span>@Html.ActionLink(string.Format("View {0}", item.DeviceCount), MVC.Search.Query(item.Id.ToString(), "DeviceBatch"))</span>
                        }
                        else
                        {
                            <span>@item.DeviceCount.ToString("n0")</span>
                        }
                        @if (item.PurchaseUnitQuantity.HasValue)
                        {
                            <span>/ @(item.PurchaseUnitQuantity.Value.ToString("n0"))</span>
                        }
                        @if (item.DeviceDecommissionedCount > 0)
                        {
                            <span class="smallMessage" title="@(item.DeviceDecommissionedCount.ToString("n0")) Decommissioned">(@(item.DeviceDecommissionedCount.ToString("n0")))</span>
                        }
                    </td>
                    @if (showTags)
                    {
                        <td>
                            @if (item.IsLinked)
                            {
                                <i class="fa fa-link fa-lg success" title="Is Linked"></i>
                            }
                            @if (isDecommissioned)
                            {
                                <i class="fa fa-minus-square fa-lg alert" title="Decommissioned"></i>
                            }
                        </td>
                    }
                </tr>
                if (isDecommissioned)
                {
                    <tr class="hidden decommissioned-padding"></tr>
                }
            }
        </table>
    }
</div>
@if (Authorization.HasAny(Claims.Config.DeviceBatch.Create, Claims.Config.DeviceBatch.ShowTimeline))
{
    <div class="actionBar">
        @if (Authorization.Has(Claims.Config.DeviceBatch.ShowTimeline) && Model.DeviceBatches.Count > 0)
        {
            @Html.ActionLinkButton("Timeline", MVC.Config.DeviceBatch.Timeline())
        }
        @if (Authorization.HasAll(Claims.Config.DeviceBatch.Create, Claims.Config.DeviceBatch.Configure))
        {
            @Html.ActionLinkButton("Create Device Batch", MVC.Config.DeviceBatch.Create())
        }
    </div>
}