{% extends "user/user-base.html" %}
{% block js_media %}
<script>
    function getCookie(name) {
        let cookieValue = null;
        if (document.cookie && document.cookie !== '') {
            const cookies = document.cookie.split(';');
            for (let i = 0; i < cookies.length; i++) {
                const cookie = cookies[i].trim();
                // Does this cookie string begin with the name we want?
                if (cookie.substring(0, name.length + 1) === (name + '=')) {
                    cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                    break;
                }
            }
        }
        return cookieValue;
    }
    
    const csrftoken = getCookie('csrftoken');

    $(function() {
        $('#load_button').on('click', function(e) {
            e.preventDefault();
            var files = $('#csv_file').prop('files');
            if (files.length == 1) {
                $('#load_button').addClass('disabled');
            
                var file = files[0];
                //if (file.type != 'text/csv') {
                //    alert("{{_('Upload CSV only')}}");
                //    return;
                //}
                var form_data = new FormData();
                form_data.append('csv_file', file, file.name);

                var xhr = new XMLHttpRequest();
                xhr.open('POST', "{{url('import_users_post_file')}}", true);
                xhr.setRequestHeader('X-CSRFToken', csrftoken);
                xhr.onload = function () {
                    if (xhr.status === 200) {
                        var json = JSON.parse(xhr.responseText);
                        $('#load_button').removeClass('disabled');

                        if (json.done) {
                            window.import_users = json.data
                            $('#table_csv').html(json.html);
                            $('#confirm_button').removeClass('disabled');
                        }
                        else {
                            window.import_users = []
                            $('#table_csv').html(json.msg);
                            $('#confirm_button').addClass('disabled');   
                        }
                    } else {
                        alert('Fail to read file.');
                    }
                };

                xhr.send(form_data);
            }
        })

        $('#confirm_button').on('click', function() {
            $(this).addClass('disabled');
            var data = {
                'users': window.import_users
            };

            if (!data.users || data.users.length == 0) {
                alert('No valid users');
                return;
            }

            $('#table_csv').html('');
            $('#log').html('Working...');
            $.post({
                url: "{{url('import_users_submit')}}",
                data: JSON.stringify(data),
                contentType:"application/json; charset=utf-8",
                dataType:"text",
                fail: function() {alert('Fail to import')},
                success: function(data) {
                    data = JSON.parse(data);
                    var msg = data.msg.split('\n');
                    $('#log').html('')
                    for (var i of msg) {
                        $('#log').append(`<p>${i}</p>`);
                    }
                }
            })
        })
    });
</script>
{% endblock %}

{% block body %}
{% csrf_token %}
<center>
    <label for="csv_file">{{_('User File')}}:</label>
    <input type="file" accept=".csv" id="csv_file">
    <a href="{{url('import_users_sample')}}">{{_('Sample')}}</a>
    <div style="display: inline-flex">
        <button id="load_button" style="margin-left: 1em">{{_('Load')}}</button>
        <button id="confirm_button" style="margin-left: 1em" class="disabled">{{_('Import')}}</button>
    </div>
</center>
<br>
<table id="table_csv" class="table"></table>
<p style="margin-left: 2em" id="log"></p>
{% endblock %}
