window.angularApp.controller("BankingController", [
    "$scope",
    "API_URL",
    "window",
    "jQuery",
    "$compile",
    "$uibModal",
    "$http",
    "$sce",
    "BankingWithdrawModal",
    "BankingDepositModal",
    "BankingRowViewModal",
    "EmailModal",
    function (
        $scope,
        API_URL,
        window,
        $,
        $compile,
        $uibModal,
        $http,
        $sce,
        BankingWithdrawModal,
        BankingDepositModal,
        BankingRowViewModal,
        EmailModal
    ) {
        "use strict";

        var dt = $("#invoice-invoice-list");
        var invoiceId = null;
        var i;

        var hideColums = dt.data("hide-colums").split(",");
        var hideColumsArray = [];
        if (hideColums.length) {
            for (i = 0; i < hideColums.length; i += 1) {
                hideColumsArray.push(parseInt(hideColums[i]));
            }
        }

        var $from = window.getParameterByName("from");
        var $to = window.getParameterByName("to");
        var $accountID = window.getParameterByName("account_id");

        //================
        // Start datatable
        //================

        dt.dataTable({
            "oLanguage": { sProcessing: "<img src='../assets/itsolution24/img/loading2.gif'>" },
            "processing": true,
            "dom": "lfBrtip",
            "serverSide": true,
            "ajax": API_URL + "/_inc/banking.php?account_id=" + $accountID + "&from=" + $from + "&to=" + $to,
            "fixedHeader": true,
            "order": [[0, "desc"]],
            "aLengthMenu": [
                [10, 25, 50, 100, 200, -1],
                [10, 25, 50, 100, 200, "All"]
            ],
            "columnDefs": [
                { "targets": [2, 7], "orderable": false },
                { "visible": false, "targets": hideColumsArray },
                { "className": "text-right", "targets": [4, 5, 6] },
                { "className": "text-center", "targets": [0, 1, 2, 3, 7] },
                {
                    "targets": [0],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(1)").html());
                    }
                },
                {
                    "targets": [1],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(1)").html());
                    }
                },
                {
                    "targets": [2],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(2)").html());
                    }
                },
                {
                    "targets": [3],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(3)").html());
                    }
                },
                {
                    "targets": [4],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(4)").html());
                    }
                },
                {
                    "targets": [5],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(5)").html());
                    }
                },
                {
                    "targets": [6],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(6)").html());
                    }
                },
                {
                    "targets": [7],
                    'createdCell': function (td, cellData, rowData, row, col) {
                        $(td).attr('data-title', $("#invoice-invoice-list thead tr th:eq(7)").html());
                    }
                },
            ],
            "aoColumns": [
                { data: "created_at" },
                { data: "banking_id" },
                { data: "transaction_type" },
                { data: "title" },
                { data: "deposit" },
                { data: "withdraw" },
                { data: "balance" },
                { data: "btn_view" },
            ],
            "footerCallback": function (row, data, start, end, display) {
                var total;
                var pageTotal;
                var api = this.api();
                // Remove the formatting to get integer data for summation
                var intVal = function (i) {
                    return typeof i === "string" ?
                        i.replace(/[\$,]/g, "") * 1 :
                        typeof i === "number" ?
                            i : 0;
                };

                // Total over this page
                pageTotal = api
                    .column(4, { page: "current" })
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);
                // Update footer
                $(api.column(4).footer()).html(
                    formatDecimal(pageTotal, 2)
                );

                // Total over this page
                pageTotal = api
                    .column(5, { page: "current" })
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);
                // Update footer
                $(api.column(5).footer()).html(
                    formatDecimal(pageTotal, 2)
                );
            },
            "pageLength": window.settings.datatable_item_limit,
            "buttons": [
                {
                    extend: "print", footer: 'true',
                    text: "<i class=\"fa fa-print\"></i>",
                    titleAttr: "Print",
                    title: "Transactions Listing-" + from + " to " + to,
                    customize: function (win) {
                        $(win.document.body)
                            .css('font-size', '10pt')
                            .append(
                                '<div><b><i>Developed & Maintained by: binarique.com</i></b></div>'
                            )
                            .prepend(
                                '<div class="dt-print-heading"><img class="logo" src="' + baseUrl + '/assets/itsolution24/img/logo-favicons/1_logo.png"/><h2 class="title">' + window.store.name + '</h2><p><b><i>From</i> ' + window.from + ' <i>To</i> ' + window.to + '</b><br>Printed on: ' + window.formatDate(new Date()) + '</p></div>'

                            );

                        $(win.document.body).find('table')
                            .addClass('compact')
                            .css('font-size', 'inherit');
                    },
                    exportOptions: {
                        columns: [0, 1, 2, 3, 4, 5, 6]
                    }
                },
                {
                    extend: "copyHtml5",
                    text: "<i class=\"fa fa-files-o\"></i>",
                    titleAttr: "Copy",
                    title: window.store.name + " > Transactions Listing-" + from + " to " + to,
                    exportOptions: {
                        columns: [0, 1, 2, 3, 4, 5, 6]
                    }
                },
                {
                    extend: "excelHtml5",
                    text: "<i class=\"fa fa-file-excel-o\"></i>",
                    titleAttr: "Excel",
                    title: window.store.name + " > Transactions Listing-" + from + " to " + to,
                    exportOptions: {
                        columns: [0, 1, 2, 3, 4, 5, 6]
                    }
                },
                {
                    extend: "csvHtml5",
                    text: "<i class=\"fa fa-file-text-o\"></i>",
                    titleAttr: "CSV",
                    title: window.store.name + " > Transactions Listing-" + from + " to " + to,
                    exportOptions: {
                        columns: [0, 1, 2, 3, 4, 5, 6]
                    }
                },
                {
                    extend: "pdfHtml5",
                    text: "<i class=\"fa fa-file-pdf-o\"></i>",
                    titleAttr: "PDF",
                    download: "open",
                    title: window.store.name + " > Transactions Listing-" + from + " to " + to,
                    exportOptions: {
                        columns: [0, 1, 2, 3, 4, 5, 6]
                    }
                }
            ],
        });

        //================
        // End datatable
        //================


        // View deposit details
        $(document).delegate(".view-deposit", "click", function (e) {
            e.stopPropagation();
            e.preventDefault();
            var d = dt.DataTable().row($(this).closest("tr")).data();
            BankingRowViewModal(d, 'deposit');
        });

        // View withdraw details
        $(document).delegate(".view-withdraw", "click", function (e) {
            e.stopPropagation();
            e.preventDefault();
            var d = dt.DataTable().row($(this).closest("tr")).data();
            BankingRowViewModal(d, 'withdraw');
        });

        // Edit invoice
        $(document).delegate("#edit-invoice-btn", "click", function (e) {
            e.stopPropagation();
            e.preventDefault();
            var d = dt.DataTable().row($(this).closest("tr")).data();
            BangkingRowEditModal(d);
        });

        // Delete invoice
        $(document).delegate("#delete-invoice-btn", "click", function (e) {
            e.stopPropagation();
            e.preventDefault();
            var d = dt.DataTable().row($(this).closest("tr")).data();

            // Alert
            window.swal({
                title: "Delete!",
                text: "Are you sure?",
                icon: "warning",
                buttons: true,
                dangerMode: false,
            })
                .then(function (willDelete) {
                    if (willDelete) {
                        $http({
                            method: "POST",
                            url: API_URL + "/_inc/banking.php",
                            data: "invoice_id=" + d.invoice_id + "&action_type=DELETE",
                            dataType: "JSON"
                        })
                            .then(function (response) {
                                $(dt).DataTable().ajax.reload(null, false);
                                window.swal("success!", "Currency successfully deleted!", "success");
                            }, function (response) {
                                window.swal("Oops!", "unable to delete!", "error");
                            });
                    }
                });
        });

        // withdraw paid
        $(document).delegate("#withdraw-btn", "click", function (e) {
            e.preventDefault();
            BankingWithdrawModal();
        });

        // deposit paid
        $(document).delegate("#deposit-btn", "click", function (e) {
            e.preventDefault();
            BankingDepositModal();
        });

        // Append email button into datatable buttons
        if (window.sendReportEmail) { $(".dt-buttons").append("<button id=\"email-btn\" class=\"btn btn-default buttons-pdf buttons-email\" tabindex=\"0\" aria-controls=\"invoice-invoice-list\" type=\"button\" title=\"Email\"><span><i class=\"fa fa-envelope\"></i></span></button>"); };

        // Send invoice list through email
        $("#email-btn").on("click", function (e) {
            e.stopPropagation();
            e.preventDefault();
            dt.find("thead th:nth-child(8), tbody td:nth-child(8), tfoot th:nth-child(8)").addClass("hide-in-mail");
            var thehtml = dt.html();
            EmailModal({ template: "default", subject: "Bank Transaction Listinig", title: "Bank Transaction Listinig", html: thehtml });
        });
    }]);

