$(document).on('turbolinks:load', function() {
    if ($('body.admins-competitions-index-page').length > 0) {
        $('.modal.admin-upload-file-modal').on('upload:success', function(e, data){
            var $imageElement = $('.competition-image-' + data.source_id);
            $imageElement.attr('src', data.url);
            $imageElement.show();
            $imageElement.next().html('重新上传');
        });
    }

    $(".admin-competition-list-form").on("change", '.competitions-hot-select', function () {
        var s_value = $(this).get(0).checked ? 1 : 0;
        var json = {};
        json["hot"] = s_value;
        $.ajax({
            url: "/admins/competitions/hot_setting",
            type: "POST",
            dataType:'json',
            data: json,
            success: function(){
                $.notify({ message: '操作成功' });
            }
        });
    });

    // ============== 新增竞赛 ===============
    var $modal = $('.modal.admin-create-competition-modal');
    var $form = $modal.find('form.admin-create-competition-form');
    var $competitionNameInput = $form.find('input[name="competition_name"]');

    $form.validate({
        errorElement: 'span',
        errorClass: 'danger text-danger',
        rules: {
            competition_name: {
                required: true
            }
        }
    });

    // modal ready fire
    $modal.on('show.bs.modal', function () {
        $competitionNameInput.val('');
    });

    $modal.on('click', '.submit-btn', function(){
        $form.find('.error').html('');

        if ($form.valid()) {
            var url = $form.data('url');

            $.ajax({
                method: 'POST',
                dataType: 'json',
                url: url,
                data: $form.serialize(),
                success: function(){
                    $.notify({ message: '创建成功' });
                    $modal.modal('hide');

                    setTimeout(function(){
                        window.location.reload();
                    }, 500);
                },
                error: function(res){
                    var data = res.responseJSON;
                    $form.find('.error').html(data.message);
                }
            });
        }
    });

    // 导入学生
    var $importScoreModal = $('.modal.admin-import-competition-score-modal');
    var $importScoreForm = $importScoreModal.find('form.admin-import-competition-score-form');
    var $competitionIdInput = $importScoreForm.find('input[name="competition_id"]');

    $importScoreModal.on('show.bs.modal', function(event){
        resetFileInputFunc($importScoreModal.find('.upload-file-input'));
        $importScoreModal.find('.file-names').html('选择文件');
        $importScoreModal.find('.upload-file-input').trigger('click');

        var $link = $(event.relatedTarget);
        var competitionId = $link.data('competition-id');
        $competitionIdInput.val(competitionId);
    });

    $importScoreModal.on('change', '.upload-file-input', function(e){
        var file = $(this)[0].files[0];
        $importScoreModal.find('.file-names').html(file ? file.name : '请选择文件');
    });

    var importUserFormValid = function(){
        if($importScoreForm.find('input[name="file"]').val() == undefined || $importScoreForm.find('input[name="file"]').val().length == 0){
            $importScoreForm.find('.error').html('请选择文件');
            return false;
        }

        return true;
    };

    var buildResultMessage = function(data){
        var messageHtml = "<div>导入结果：成功" + data.success + "条，失败"+ data.fail.length + "条</div>";

        if(data.fail.length > 0){
            messageHtml += '<table class="table"><thead class="thead-light"><tr><th>数据</th><th>失败原因</th></tr></thead><tbody>';

            data.fail.forEach(function(item){
                messageHtml += '<tr><td>' + item.data + '</td><td>' + item.message + '</td></tr>';
            });

            messageHtml += '</tbody></table>'
        }

        return messageHtml;
    };

    $importScoreModal.on('click', '.submit-btn', function(){
        $importScoreForm.find('.error').html('');

        if (importUserFormValid()) {
            $('body').mLoading({ text: '正在导入...' });

            $.ajax({
                method: 'POST',
                dataType: 'json',
                url: '/admins/import_competition_scores',
                data: new FormData($importScoreForm[0]),
                processData: false,
                contentType: false,
                success: function(data){
                    $('body').mLoading('destroy');
                    $importScoreModal.modal('hide');

                    showMessageModal(buildResultMessage(data), function(){
                        window.location.reload();
                    });
                },
                error: function(res){
                    $('body').mLoading('destroy');
                    var data = res.responseJSON;
                    $importScoreForm.find('.error').html(data.message);
                }
            });
        }
    });
});

