@using Disco.Web.Areas.Config.Models.DocumentTemplate;
@model ExportModel
@{
    Authorization.Require(Claims.Config.DocumentTemplate.Export);

    ViewBag.Title = Html.ToBreadcrumb("Configuration", MVC.Config.Config.Index(), "Document Templates", MVC.Config.DocumentTemplate.Index(null), "Export");
}
<div id="DocumentTemplate_Export">
    @using (Html.BeginForm(MVC.API.DocumentTemplate.Export(), FormMethod.Post, new { @data_saveaction = Url.Action(MVC.API.DocumentTemplate.SaveExport()) }))
    {
        @Html.AntiForgeryToken()
        <div id="Export_Scope" class="form" style="width: 570px">
            <h2>Export Scope</h2>
            <table>
                <tr>
                    <th style="width: 100px">
                        Documents:
                    </th>
                    <td class="details">
                        <table class="tableData">
                            @{
                                var index = 0;
                                foreach (var document in Model.DocumentTemplates)
                                {
                                    <tr>
                                        <td>
                                            <label>
                                                <input type="checkbox" id="Options_DocumentTemplateIds_@index" name="Options.DocumentTemplateIds" value="@document.Id" @(((bool)Model.Options.DocumentTemplateIds.Contains(document.Id)) ? "checked " : null) />
                                                <strong>@document.Id</strong>
                                            </label>
                                        </td>
                                        <td>
                                            <label for="Options_DocumentTemplateIds_@index">@document.Description</label>
                                        </td>
                                        <td>
                                            @document.Scope
                                        </td>
                                    </tr>
                                    index++;
                                }
                            }
                        </table>
                    </td>
                </tr>
                <tr>
                    <th>@Html.LabelFor(m => m.Options.LatestOnly)</th>
                    <td>
                        @Html.CheckBoxFor(m => m.Options.LatestOnly)
                        <p>Uncheck to include all document instances.</p>
                    </td>
                </tr>
                <tr>
                    <th>@Html.LabelFor(m => m.Options.Format)</th>
                    <td>
                        @Html.DropDownListFor(m => m.Options.Format, Enum.GetNames(typeof(Disco.Models.Exporting.ExportFormat)).Select(v => new SelectListItem() { Value = v, Text = v }))
                    </td>
                </tr>
            </table>
        </div>
        @Html.Partial(MVC.Shared.Views._ExportFields, Model.Fields.FieldGroups)
    }
</div>
@if (Model.ExportId.HasValue)
{
    <div id="Export_Download_Dialog" class="dialog" title="Export Document Instances">
        @if (Model.ExportResult.RecordCount == 0)
        {
            <h4>No records matched the filter criteria</h4>
        }
        else
        {
            <h4>@Model.ExportResult.RecordCount record@(Model.ExportResult.RecordCount != 1 ? "s" : null) were successfully exported.</h4>
            <a href="@Url.Action(MVC.API.DocumentTemplate.ExportRetrieve(Model.ExportId.Value))" class="button"><i class="fa fa-download fa-lg"></i>Download Document Instance Export</a>
        }
    </div>
    <script>
        $(function () {
            $('#Export_Download_Dialog')
                .dialog({
                    width: 400,
                    height: 164,
                    resizable: false,
                    modal: true,
                    autoOpen: true
                });
        });
    </script>
}
<div id="Export_Exporting" class="dialog" title="Exporting Document Instances...">
    <h4><i class="fa fa-lg fa-cog fa-spin" title="Please Wait"></i>Exporting document instances...</h4>
</div>
<div class="actionBar">
    @if (Authorization.Has(Claims.Config.ManageSavedExports))
    {
        <button type="button" id="DocumentTemplate_Export_Save_Button" class="button">Save Export</button>
    }
    else
    {
        <button type="button" class="button" disabled title="Requires Manage Saved Exports Permission">Save Export</button>
    }

    <button type="button" id="DocumentTemplate_Export_Button" class="button">Export Now</button>
    <script>
        $(function () {
            const $form = $('#Export_Scope').closest('form');
            let $exportingDialog = null;

            $.validator.unobtrusive.parse($form);
            $form.data("validator").settings.submitHandler = function () {
                const exportFieldCount = $('#Export_Fields').find('input:checked').length;

                if (exportFieldCount > 0) {

                    if (!$exportingDialog) {
                        $exportingDialog = $('#Export_Exporting').dialog({
                            width: 400,
                            height: 164,
                            resizable: false,
                            modal: true,
                            autoOpen: false
                        });
                    }
                    $exportingDialog.dialog('open');

                    $form[0].submit();
                    return;
                }

                alert('Select at least one field to export.');
            }

            $('#DocumentTemplate_Export_Button').on('click', function () {
                $form.submit();
            });
            $('#DocumentTemplate_Export_Save_Button').on('click', function () {
                $form.attr('action', $form[0].dataset.saveaction);
                $form.submit();
            });
        })
    </script>
</div>
