@model Disco.Web.Models.Job.LogInsuranceModel
@{
    Authorization.RequireAny(Claims.Job.Properties.NonWarrantyProperties.InsuranceClaimFormSent, Claims.Job.Actions.LogInsurance);

    ViewBag.Title = Html.ToBreadcrumb("Jobs", MVC.Job.Index(), string.Format("Job: {0}", Model.Job.Id), MVC.Job.Show(Model.Job.Id), "Lodge Insurance Claim");
}
@using (Html.BeginForm(MVC.Job.LogInsurance(), FormMethod.Post))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    @Html.HiddenFor(m => m.JobId)
    @Html.ValidationMessageFor(m => m.JobId)
    <input type="hidden" name="SubmissionAction" value="@(Model.IsManualProvider ? "Manual" : "Disclose")" />
    <div id="insuranceJobForm" class="form" style="width: 650px">
        <table>
            <tr>
                <th>Internal Job Id:
                </th>
                <td>
                    @Model.JobId
                </td>
            </tr>
            <tr>
                <th>Device Serial Number:
                </th>
                <td>
                    @Model.Job.Device.SerialNumber
                </td>
            </tr>
            <tr>
                <th>Device Model:
                </th>
                <td>
                    @Model.Job.Device.DeviceModel.Manufacturer @Model.Job.Device.DeviceModel.Model
                </td>
            </tr>
            <tr>
                <th>Technician:
                </th>
                <td>
                    @Model.TechUser.DisplayName
                    <div class="smallMessage">
                        Email Address: @Model.TechUser.EmailAddress<br />
                        Phone Number: @Model.TechUser.PhoneNumber
                    </div>
                </td>
            </tr>
            <tr>
                <th style="width: 150px">Address:
                </th>
                <td>
                    @Html.DropDownListFor(model => model.OrganisationAddressId, Model.OrganisationAddresses.ToSelectListItems(Model.OrganisationAddressId, (Model.OrganisationAddress == null)))<br />
                    @Html.ValidationMessageFor(m => m.OrganisationAddressId)
                    <div id="organisationAddressDetails">
                        @{
    var oa = Model.OrganisationAddress;
    if (oa != null)
    {
                            <span>@oa.Address</span>
                            <br />
                            <span>@oa.Suburb, @oa.Postcode</span>
                            <br />
                            <span>@oa.State, @oa.Country</span>
    }
                        }
                    </div>
                </td>
            </tr>
            <tr>
                <th>Insurance Provider:
                </th>
                <td>
                    @Html.DropDownListFor(model => model.ProviderId, Model.Providers.ToSelectListItems(Model.ProviderId, AdditionalItems: new Dictionary<string, string>() { { "MANUAL", "<Manually Submitted Request>" } }))<br />
                    @Html.ValidationMessageFor(m => m.ProviderId)
                    @if (Model.Providers.Count == 0 && Authorization.Has(Claims.Config.Plugin.Install))
                    {
                        <div class="info-box">
                            <p class="fa-p">
                                <i class="fa fa-info-circle"></i>View the <a href="@(Url.Action(MVC.Config.Plugins.Install()))">Plugin Catalogue</a> to discover and install provider plugins.
                            </p>
                        </div>
                    }
                </td>
            </tr>
            @if (Model.IsManualProvider)
            {
                <tr>
                    <th>Insurer Name:</th>
                    <td>
                        @Html.EditorFor(model => model.ManualProviderName)<br />
                        @Html.ValidationMessageFor(m => m.ManualProviderName)
                    </td>
                </tr>
                <tr>
                    <th>Insurer Reference:</th>
                    <td>
                        @Html.EditorFor(model => model.ManualProviderReference)<br />
                        @Html.ValidationMessageFor(m => m.ManualProviderReference)
                    </td>
                </tr>
            }
        </table>
    </div>
            if (!Model.IsManualProvider && Authorization.Has(Claims.Job.ShowAttachments) && Model.Job.JobAttachments.Count > 0)
            {
    <div class="form" style="width: 650px; margin-top: 15px;">
        <h2>Send Attachments</h2>
        <table>
            <tr>
                <td>
                    <p id="publishJobAttachmentsSelect">
                        Select <a href="#" class="all">All</a> | <a href="#" class="none">None</a>
                    </p>
                    <div id="publishJobAttachments">
                        @foreach (var ja in Model.Job.JobAttachments)
                        {
                            <a href="@Url.Action(MVC.API.Job.AttachmentDownload(ja.Id))" data-attachmentid="@ja.Id" data-mimetype="@ja.MimeType">
                                <input type="checkbox" class="select" name="AttachmentIds" value="@ja.Id" @(Model.AttachmentIds.Contains(ja.Id) ? "checked" : null) />
                                <span class="icon" title="@ja.Filename">
                                    <img alt="Attachment Thumbnail" src="@(Url.Action(MVC.API.Job.AttachmentThumbnail(ja.Id)))" />
                                </span>
                                <span class="comments" title="@ja.Comments">
                                    @{if (!string.IsNullOrEmpty(ja.DocumentTemplateId))
                                        { @ja.DocumentTemplate.Description}
                                    else
                                    { @ja.Comments }}
                                </span><span class="author">@ja.TechUser.ToStringFriendly()</span><span class="timestamp" data-livestamp="@(ja.Timestamp.ToUnixEpoc())" title="@ja.Timestamp.ToFullDateTime()">@ja.Timestamp.ToFullDateTime()</span>
                            </a>
                        }
                    </div>
                </td>
            </tr>
        </table>
    </div>
            }
            if (Model.Provider != null && Model.ProviderSubmitJobBeginResult != null)
            { 
    <div id="providerProperties">
        @Html.PartialCompiled(Model.ProviderSubmitJobBeginResult.Item1, Model.ProviderSubmitJobBeginResult.Item2)
    </div>
            }
    <div class="actionBar">
        @if (Model.IsManualProvider)
        {
            <input type="submit" class="button" value="Save Insurance Claim" />
        }
        else
        {
            <input type="submit" class="button" value="Preview Insurance Claim" />
        }
    </div>
}
<script type="text/javascript">
    $(function () {
        var $providerId = $('#ProviderId');
        var $addressId = $('#OrganisationAddressId');

        function updateDetails() {
            $('<form>').attr({
                action: $providerId.closest('form').attr('action'),
                method: 'post'
            }).append(
                $('<input>').attr({ type: 'hidden', name: 'SubmissionAction', value: 'Update' })
            ).append(
                $('<input>').attr({ type: 'hidden', name: 'JobId', value: $('#JobId').val() })
            ).append(
                $('<input>').attr({ type: 'hidden', name: 'ProviderId', value: $providerId.val() })
            ).append(
                $('<input>').attr({ type: 'hidden', name: 'OrganisationAddressId', value: $addressId.val() })
            ).append(
                $('<input>').attr({ type: 'hidden', name: 'ManualProviderName', value: $('#ManualProviderName').val() })
            ).append(
                $('<input>').attr({ type: 'hidden', name: 'ManualProviderReference', value: $('#ManualProviderReference').val() })
            ).append(
                $('<input>').attr({ type: 'hidden', name: '__RequestVerificationToken', value: $providerId.closest('form').find('input[name="__RequestVerificationToken"]').val() })
            ).appendTo('body').submit();
        }

        $providerId.change(updateDetails);
        $addressId.change(updateDetails);

        var manualProvider = $('#ManualProviderName');
        if (manualProvider.length > 0 && !manualProvider.val()) {
            manualProvider.focus();
        } else {
            $('#ProviderId').focus();
        }

        $('#publishJobAttachments').on('click', 'input', function (e) {
            e.preventDefault();
            setTimeout(function () {
                var $i = $(e.currentTarget);
                $i.prop('checked', !$i.prop('checked'));
            }, 0);
            return false;
        });
        $('#publishJobAttachmentsSelect').on('click', 'a', function (e) {
            e.preventDefault();
            var $i = $(e.currentTarget);
            var $c = $i.hasClass('all');
            setTimeout(function () {
                $('#publishJobAttachments').find('input:not(:disabled)').prop('checked', $c).trigger('change');
            }, 0);
            return false;
        });
    });
</script>
