{% extends "base.html" %}
{% comment %}
SPDX-License-Identifier: GPL-2.0-or-later
{% endcomment %}

{% load i18n static %}

{% block content %}

    <div class="row">
        <div class="col-xl-12">
            <button id="switch_mode" class="form-control btn btn-secondary">Passer en mode transfert</button>
        </div>
    </div>

    <div class="row">
        <div class="col-md-6" id="emitters_div" style="display: none;">
            <div class="card border-success shadow mb-4">
                <div class="card-header">
                    <p class="card-text font-weight-bold">
                        Sélection des émetteurs
                    </p>
                </div>
                <ul class="list-group list-group-flush" id="source_note_list">
                </ul>
                <div class="card-body">
                    <input class="form-control mx-auto d-block" type="text" id="source_note" />
                    <ul class="list-group list-group-flush" id="source_alias_matched">
                    </ul>
                </div>
            </div>
        </div>

        <div class="col-md-12" id="dests_div">
            <div class="card border-info shadow mb-4">
                <div class="card-header">
                    <p class="card-text font-weight-bold">
                        Sélection des destinataires
                    </p>
                </div>
                <ul class="list-group list-group-flush" id="dest_note_list">
                </ul>
                <div class="card-body">
                    <input class="form-control mx-auto d-block" type="text" id="dest_note" />
                    <ul class="list-group list-group-flush" id="dest_alias_matched">
                    </ul>
                </div>
            </div>
        </div>
    </div>


    <div class="form-row">
        <div class="form-group col-md-6">
            <label for="amount">{% trans "Amount" %} :</label>
            <input class="form-control mx-auto d-block" type="number" min="-20" id="amount" />
        </div>

        <div class="form-group col-md-6">
            <label for="reason">{% trans "Reason" %} :</label>
            <input class="form-control mx-auto d-block" type="text" id="reason" />
        </div>
    </div>

    <div class="form-row">
        <div class="col-md-12">
            <button id="transfer" class="form-control btn btn-primary">{% trans 'Transfer' %}</button>
        </div>
    </div>
{% endblock %}

{% block extrajavascript %}
    <script>
        sources = [];
        sources_notes_display = [];
        dests = [];
        dests_notes_display = [];
        transfer_mode = false;

        $(document).ready(function() {
           autoCompleteNote("source_note", "source_alias_matched", "source_note_list", sources, sources_notes_display,
                "source_alias", "source_note");
           autoCompleteNote("dest_note", "dest_alias_matched", "dest_note_list", dests, dests_notes_display,
                "dest_alias", "dest_note");
        });

        $("#switch_mode").click(function () {
            transfer_mode ^= true;
            if (transfer_mode) {
                $("#switch_mode").text("Passer en mode virement");
                $("#emitters_div").show();
                $("#dests_div").attr('class', 'col-md-6');
            }
            else {
                $("#switch_mode").text("Passer en mode transfert");
                $("#emitters_div").hide();
                $("#dests_div").attr('class', 'col-md-12');
            }
        });

        $("#transfer").click(function() {
            if (sources.length === 0) {
                dests_notes_display.forEach(function (dest) {
                    $.post("/api/note/transaction/transaction/",
                        {
                            "csrfmiddlewaretoken": CSRF_TOKEN,
                            "quantity": dest[3],
                            "amount": $("#amount").val(),
                            "reason": $("#reason").val() + " (Don)",
                            "valid": true,
                            "polymorphic_ctype": {{ polymorphic_ctype }},
                            "resourcetype": "Transaction",
                            "source": {{ user.note.id }},
                            "destination": dest[1]
                        }, function () {
                            let msgDiv = $("#messages");
                            let html = msgDiv.html();
                            html += "<div class=\"alert alert-success\">Le transfert de "
                                + pretty_money(dest[3] * $("#amount").val()) + " de votre note "
                                + " vers la note " + dest[0] + " a été fait avec succès !</div>\n";
                            msgDiv.html(html);

                            sources_notes_display.length = 0;
                            sources.length = 0;
                            dests_notes_display.length = 0;
                            dests.length = 0;
                            $("#source_note_list").html("");
                            $("#dest_note_list").html("");
                            $("#source_alias_matched").html("");
                            $("#dest_alias_matched").html("");
                            $("#amount").val("");
                            $("#reason").val("");
                            refreshBalance();
                        }).fail(function (err) {
                        let msgDiv = $("#messages");
                        let html = msgDiv.html();
                        html += "<div class=\"alert alert-danger\">Le transfert de "
                            + pretty_money(dest[3] * $("#amount").val()) + " de votre note "
                            + " vers la note " + dest[0] + " a échoué : " + err.responseText + "</div>\n";
                        msgDiv.html(html);

                        sources_notes_display.length = 0;
                        sources.length = 0;
                        dests_notes_display.length = 0;
                        dests.length = 0;
                        $("#source_note_list").html("");
                        $("#dest_note_list").html("");
                        $("#source_alias_matched").html("");
                        $("#dest_alias_matched").html("");
                        $("#amount").val("");
                        $("#reason").val("");
                        refreshBalance();
                    });
                });
            }
            else {
                sources_notes_display.forEach(function (source) {
                    dests_notes_display.forEach(function (dest) {
                        $.post("/api/note/transaction/transaction/",
                            {
                                "csrfmiddlewaretoken": CSRF_TOKEN,
                                "quantity": source[3] * dest[3],
                                "amount": $("#amount").val(),
                                "reason": $("#reason").val() + " (Transfert)",
                                "valid": true,
                                "polymorphic_ctype": {{ polymorphic_ctype }},
                                "resourcetype": "Transaction",
                                "source": source[1],
                                "destination": dest[1]
                            }, function () {
                                let msgDiv = $("#messages");
                                let html = msgDiv.html();
                                html += "<div class=\"alert alert-success\">Le transfert de "
                                    + pretty_money(source[3] * dest[3] * $("#amount").val()) + " de la note " + source[0]
                                    + " vers la note " + dest[0] + " a été fait avec succès !</div>\n";
                                msgDiv.html(html);

                                sources_notes_display.length = 0;
                                sources.length = 0;
                                dests_notes_display.length = 0;
                                dests.length = 0;
                                $("#source_note_list").html("");
                                $("#dest_note_list").html("");
                                $("#source_alias_matched").html("");
                                $("#dest_alias_matched").html("");
                                $("#amount").val("");
                                $("#reason").val("");
                                refreshBalance();
                            }).fail(function (err) {
                                let msgDiv = $("#messages");
                                let html = msgDiv.html();
                                html += "<div class=\"alert alert-danger\">Le transfert de "
                                    + pretty_money(source[3] * dest[3] * $("#amount").val()) + " de la note " + source[0]
                                    + " vers la note " + dest[0] + " a échoué : " + err.responseText + "</div>\n";
                                msgDiv.html(html);

                                sources_notes_display.length = 0;
                                sources.length = 0;
                                dests_notes_display.length = 0;
                                dests.length = 0;
                                $("#source_note_list").html("");
                                $("#dest_note_list").html("");
                                $("#source_alias_matched").html("");
                                $("#dest_alias_matched").html("");
                                $("#amount").val("");
                                $("#reason").val("");
                                refreshBalance();
                        });
                    });
                });
            }
        });
    </script>
{% endblock %}