@extends('Core::layouts.import')

@section('page_heading', 'Import')
@section('page_breadcrumb', 'Import')
@php
    $isProcessing = Storage::disk('local')->exists(md5($import->getKey()) . '.flag');
@endphp
@section('page_content')
    @if (request()->query('queued') || $isProcessing)
        <div class="box box-primary">
            <div class="box-header with-border">
                @if ($isProcessing)
                    <h3 class="box-title">Processing Import</h3>
                @else
                    <h3 class="box-title">Queueing Import</h3>
                @endif
            </div>
            <div class="box-body">
                @if ($isProcessing)
                    <p>Please wait, the import is processing on the queue. Allow up to 30 minutes before reloading this page.</p>
                @else
                    <p>The import has been queued. Please allow the queue 60 - 120 seconds to start processing.</p>
                @endif
            </div>
            <div class="box-footer">
                <a href="{{ route('admin.import.show', ['id' => $import->getKey(), 'dryRun' => $dryRun]) }}" class="btn btn-primary">Reload</a>
            </div>
        </div>
    @else
        <div class="row">
            <div class="col-md-4">
                <form id="import-form" action="{{ route('admin.import.run', $import) }}" method="post">
                    <div class="box box-primary">
                        <div class="box-header with-border">
                            <h3 class="box-title">
                                Importing {{ str_plural($import->getTypeLabel()) }}
                            </h3>
                            <div class="badge pull-right">{{ $import->records }} records</div>
                        </div>
                        <div class="box-body">
                            @foreach ($import->toPresentableArray() as $key => $value)
                                <dl class="dl-horizontal ig-list-horizontal">
                                    <dt class="ig-list-horizontal-label" style="text-align: left; width: 85px;">{{ str_replace('_', ' ', title_case($key)) }}</dt>
                                    <dd style="margin-left: 85px;">{{ $value }}</dd>
                                </dl>
                            @endforeach
                        </div>
                        <div class="box-footer">
                            {{ csrf_field() }}
                            <a href="{{ route('admin.import.index') }}" class="btn btn-default pull-left">
                                <span class="fa-solid fa-chevron-left"></span>
                                <span>Back</span>
                            </a>
                            @if ($import->isPending())
                                @can('core.import.run')
                                    <button id="start-import" class="btn btn-primary pull-right" type="submit">
                                        <strong>Import</strong>
                                        <span class="fa-solid fa-cloud-upload"></span>
                                    </button>
                                @endcan
                                @can('core.import.preview')
                                    <button id="start-dry-run" class="btn btn-default pull-right" name="dry_run" value="1" type="submit" style="margin-right: 10px;">
                                        <strong>Dry Run</strong>
                                    </button>
                                @endcan
                            @endif
                        </div>
                    </div>
                </form>
                <div class="box box-solid">
                    <div class="box-body no-padding">
                        <ul class="nav nav-pills nav-stacked">
                            <li>
                                @can('core.import.download')
                                    @if ($import->file)
                                        <a href="{{ route('admin.import.download', $import) }}">
                                            <span class="fa-solid fa-cloud-download"></span>
                                            <span>Download the data file</span>
                                        </a>
                                    @endif
                                @endcan
                                @can('core.import.delete')
                                    <a href="{{ route('admin.import.destroy', $import) }}" class="delete-entry">
                                        <span class="fa-solid fa-trash text-danger"></span>
                                        <span class="text-danger">Delete</span>
                                    </a>
                                @endcan
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
            @can('core.import.preview')
                <div class="col-md-8">
                    {!! $import->resolveType()->html() !!}

                    <div class="box box-primary" id="import-preview">
                        <div class="box-header with-border">
                            <h3 class="box-title">
                                @if ($import->isComplete() || $dryRun)
                                    @if ($dryRun)
                                        <a href="{{ route('admin.import.show', $import) }}" class="btn btn-default btn-sm pull-left">
                                            <span class="fa-solid fa-chevron-left"></span> Preview
                                        </a>
                                    @endif
                                    <span class="pull-left preview-button-spacing">Results</span>
                                @else
                                    Preview
                                @endif
                            </h3>
                            @if ($import->isComplete() || $dryRun)
                                <div class="btn-group pull-right">
                                    <a href="{{ route('admin.import.show', ['id' => $import, 'dryRun' => $dryRun]) }}" class="btn btn-sm btn-default {{ request()->has('onlyErrors') || request()->has('onlyImported') ? '' : 'active' }}">Show all</a>
                                    <a href="{{ route('admin.import.show', ['id' => $import, 'dryRun' => $dryRun, 'onlyImported' => true]) }}" class="btn btn-sm btn-default {{ request()->has('onlyImported') ? 'active' : '' }}">Show imported</a>
                                    <a href="{{ route('admin.import.show', ['id' => $import, 'dryRun' => $dryRun, 'onlyErrors' => true]) }}" class="btn btn-sm btn-default {{ request()->has('onlyErrors') ? 'active' : '' }}">Show errors</a>
                                </div>
                            @endif
                        </div>
                        @if ($import->isComplete() || $import->isProcessing() || $dryRun)
                            <div class="box-body">
                                @include('Core::admin.import.partials.logs', ['lines' => $import->getFormattedLog()])
                            </div>
                        @else
                            @if ($import->isPending())
                                <div class="box-body no-margin no-padding">
                                    <ignite-import-preview :id="{{ $import->getKey() }}" :total="{{ (int) $import->records }}"></ignite-import-preview>
                                </div>
                            @else
                                <div class="box-body">
                                    <div class="centered text-center">
                                        <span class="fa-solid fa-cloud-upload fa-5x text-danger m-5"></span>
                                        <p class="no_margin text-danger">No records could be found in the provided import file.</p>
                                    </div>
                                </div>
                            @endif
                        @endif
                    </div>
                </div>
            @endcan
        </div>
        <div id="import-processing" class="modal fade" tabindex="-1" role="dialog">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-body no-padding">
                        <div class="alert alert-success text-center no-margin no-radius">
                            <span class="fa-solid fa-5x fa-refresh fa-spin text-white"></span>
                            <h3>Importing...</h3>
                            <p>Your file is being imported, please allow up to 2 minutes for large files.</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div id="import-dry-run" class="modal fade" tabindex="-1" role="dialog">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-body no-padding">
                        <div class="alert alert-success text-center no-margin no-radius">
                            <span class="fa-solid fa-5x fa-refresh fa-spin text-white"></span>
                            <h3>Dry Run...</h3>
                            <p>Your file is being imported in "dry run" mode, please allow up to {{ number_format(ceil((int) config('core.import.timeout', 120) / 60), 0) }} minutes for large files. Nothing will be saved in "dry run" mode. This is just a test.</p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    @endif
@endsection

@section('js')
    @parent
    @if ($import->isPending() && ! $dryRun)
        <script type="text/javascript" src="{{ asset('vendor/ignite/js/import/import.js') }}"></script>
    @endif
    <script type="text/javascript">
        $(document).ready(function() {
            $('#start-import').on('click', function (evt) {
                if (confirm('Are you sure you want to import?')) {
                    $('#import-processing').modal('show');
                    $(this).attr('disabled', true);
                    $('#import-form').submit();
                    return true;
                }
                return false;
            });

            $('#start-dry-run').on('click', function (evt) {
                var $this = $(this);
                var clickInitial = parseInt($this.data('clicked'), 10) || 0;

                $this.data('clicked', clickInitial + 1);

                if ($this.data('clicked') === 1) {
                    evt.preventDefault();
                    $('#import-dry-run').modal('show');
                    setTimeout(function() {
                        $('#start-dry-run').trigger('click');
                    }, 1000);
                }
            });

            $.deleteEntry({
                confirmation: 'Are you sure you want to delete this import',
                request: { method: 'DELETE', type: 'json' },
                data: {
                    _token: "{{ csrf_token() }}"
                },
                onSuccess: function (button) {
                    window.location.href = "{{ route('admin.import.index') }}";
                }
            });
        });
    </script>
@endsection
