@{
    ViewData["MainNum"] = "6";
    ViewData["SubNum"] = "1";
    ViewData["Title"] = "帳號管理";
}

<ol class="breadcrumb page-breadcrumb">
    <li class="breadcrumb-item"><a href="javascript:void(0);">系統管理</a></li>
    <li class="breadcrumb-item active">帳號管理</li>
    <li class="position-absolute pos-top pos-right d-none d-sm-block"><span class="js-get-date"></span></li>
</ol>

<div class="row">
    <div class="col-xl-12">
        <div id="panel-5" class="panel">
            <div class="panel-container show">
                <div class="panel-content">
                    <ul class="nav nav-tabs" id="tabs" role="tablist">
                        <li class="nav-item"><a class="nav-link active" data-toggle="tab" href="#tab-user-manager" role="tab"><i class="fal fa-home text-success"></i> <span class="hidden-sm-down ml-1">帳號管理</span></a></li>
                        <li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-role-manager" role="tab"><i class="fal fa-user text-primary"></i> <span class="hidden-sm-down ml-1">角色管理</span></a></li>
                        <li class="nav-item"><a class="nav-link" data-toggle="tab" href="#tab-role-auth" role="tab"><i class="fal fa-cog text-danger"></i> <span class="hidden-sm-down ml-1">角色權限</span></a></li>
                    </ul>
                    <div class="tab-content p-3">
                        <div class="tab-pane fade show active" id="tab-user-manager" role="tabpanel" aria-labelledby="tab-user-manager">
                            @Html.Partial("_UserManager")
                        </div>

                        <div class="tab-pane fade" id="tab-role-manager" role="tabpanel" aria-labelledby="tab-role-manager">
                            @Html.Partial("_RoleManager")
                        </div>

                        <div class="tab-pane fade" id="tab-role-auth" role="tabpanel" aria-labelledby="tab-role-auth">
                            @Html.Partial("_RoleAuth")
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

@section Scripts {
    <script>
        var userManagerTable;
        var selected_id = "0";

        $(function () {

            //#region 切換頁簽判斷被選中的tab
            $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
                selected_tab = $(e.target).attr("href")

                switch (selected_tab) {
                    case "#tab-user-manager":
                        userManagerTable.ajax.reload();
                        break;
                    case "#tab-role-manager":
                        roleManagerTable.ajax.reload();
                        break;
                    case "#tab-role-auth":
                        var url = "/UserInfo/RoleManagerList";
                        $.post(url, { post: 1 }, function (rel) {
                            if (rel.code != "0000") {
                                toast_error(rel.msg);
                                return;
                            }
                            if (rel.data.length > 0) {
                                $('#select_roleId_roleAuth_tab').empty();
                                $.each(rel.data, function (index, val) {
                                    $("#select_roleId_roleAuth_tab").append($("<option />").val(val.role_guid).text(val.full_name));
                                });
                                //預設查詢第一個
                                $("#select_roleId_roleAuth_tab").val($("#select_roleId_roleAuth_tab option:first").val());

                                roleAuthTable.ajax.reload();

                            } else {
                                $("#select_roleId_roleAuth_tab").empty();
                                $("#select_roleId_roleAuth_tab").append('<option value="0" disabled>請先新增角色</option>');
                                $("#select_roleId_roleAuth_tab").val($("#user_role_modal option:first").val());
                            }
                        }, 'json');
                        break;
                }
            });
            //#endregion


            //#region 人員基本資料 DataTable
            userManagerTable = $("#user_table").DataTable({
                "columns": [
                    {
                        "data": null,
                        "render": function (data, type, row, meta) {
                            return meta.row + 1;
                        }
                    },
                    {
                        "data": "full_name"
                    },
                    {
                        "data": "account"
                    },
                    {
                        "data": "role_full_name"
                    },
                    {
                        "data": "email"
                    },
                    {
                        "data": "phone"
                    },
                    {
                        "data": "created_at"
                    },
                    {
                        "data": "userinfo_guid",
                        "render": function (data, type, row, meta) {
                            if (data == "0") {
                                return "";
                            } else {
                                if (data != '@ViewBag.myUserInfo.Userinfo_guid') {
                                    return '<button class="btn btn-primary edit-btn">修改</button> <button class="btn btn-danger del-btn">刪除</button>';
                                } else {
                                    return '<button class="btn btn-primary edit-btn">修改</button>';
                                }
                            }
                        }
                        //"defaultContent": '<button class="btn btn-primary edit-btn">修改</button> <button class="btn btn-danger del-btn">刪除</button>'
                    }
                ],
                //"order": [[2, "desc"]],
                'createdRow': function (row, data, dataIndex) {
                    $(row).attr('data-guid', data.userinfo_guid);
                },
                "ajax": {
                    "url": "/UserInfo/UserManagerList",
                    "type": "POST",
                    "dataSrc": function (rel) {
                        if (rel.code == "9999") {
                            toast_error(rel.msg);
                            return;
                        }

                        data = rel.data;

                        if (data == null || data.length == 0) {
                            this.data = [];
                        }
                        if (@ViewBag.myUserInfo.Layer == 1) {
                            $.each(this.data, function (index, val) {
                                if (val.layer == 0) {
                                    val.userinfo_guid = "0"
                                }
                            });
                        }

                        console.log(this.data);
                        return data;
                    }
                }
            });
            //#endregion
        });

        //#region 新增使用者
        function AddUser() {
            selected_id = "0";
            $("#user-modal .modal-title").html("人員基本資料 - 新增");
            $("#user-form").trigger("reset");
            $("#user_account_modal").prop("disabled", false);
            $(".user_account_same_email_div").show();
            $("#user_account_same_email").prop("disabled", false);
            $(".user-password-div").show();
            GetRoleDropDownList('', 1);

            $("#user-modal").modal();
        }
        //#endregion

        //#region 編輯使用者
        $('#user_table').on("click", "button.edit-btn", function () {

            $("#user-modal .modal-title").html("人員基本資料 - 編輯");

            selected_id = $(this).parents('tr').attr('data-guid');

            //取得單一使用者管理員
            var url = "/UserInfo/GetOneUser/";

            var send_data = {
                guid: selected_id
            }

            $.post(url, send_data, function (rel) {
                if (rel.code == "9999") {
                    toast_error(rel.msg);
                    return;
                }
                else if (rel.code == "9998") {
                    toast_error(rel.msg);
                    return;
                }
                $("#user_name_modal").val(rel.data.full_name);
                $("#user_email_modal").val(rel.data.email);
                $("#user_account_modal").val(rel.data.account);
                $("#user_account_modal").prop("disabled", true);
                $(".user_account_same_email_div").hide();
                $("#user_account_same_email").prop("disabled", true);
                $(".system_admin_password_form_row").hide();
                $("#user_phone_modal").val(rel.data.phone);

                GetRoleDropDownList(rel.data.role_guid, 1);

                $(".user-password-div").hide();

                $("#user-modal").modal();
            }, 'json');

        });
        //#endregion

        //#region 取得角色下拉選單
        function GetRoleDropDownList(selectedVal, type) {
            var url = "/UserInfo/RoleManagerList";
            $.post(url, { post : 0 }, function (rel) {
                if (rel.code != "0000") {
                    toast_error(rel.msg);
                    return;
                }
                if (type == 1) {
                    if (rel.data.length > 0) {
                        $('#user_role_modal').empty();
                        $.each(rel.data, function (index, val) {
                            if (@ViewBag.myUserInfo.Layer == 1) {
                                if (val.layer == 0) {
                                    $("#user_role_modal").append($("<option disabled style='background: #ccc;'/>").val(val.role_guid).text(val.full_name));
                                } else {
                                    $("#user_role_modal").append($("<option />").val(val.role_guid).text(val.full_name));
                                }

                            } else {
                                $("#user_role_modal").append($("<option />").val(val.role_guid).text(val.full_name));
                            }


                        });
                        if (selectedVal != "") {
                            $("#user_role_modal").val(selectedVal);
                        }
                        else {
                            //預設查詢第一個
                            $("#user_role_modal").val($("#user_role_modal option:first").val()).trigger('change');
                        }
                    } else {
                        $("#user_role_modal").empty();
                        $("#user_role_modal").append('<option value="0" disabled>請先新增角色</option>');
                        $("#user_role_modal").val($("#user_role_modal option:first").val()).trigger('change');
                    }
                }
                else {
                    if (rel.data.length > 0) {
                        $('#select_roleId_roleAuth_tab').empty();
                        $.each(rel.data, function (index, val) {
                            $("#select_roleId_roleAuth_tab").append($("<option />").val(val.role_guid).text(val.full_name));
                        });
                        if (selectedVal != "") {
                            $("#select_roleId_roleAuth_tab").val(selectedVal);
                        }
                        else {
                            //預設查詢第一個
                            $("#select_roleId_roleAuth_tab").val($("#select_roleId_roleAuth_tab option:first").val()).trigger('change');
                        }
                    } else {
                        $("#select_roleId_roleAuth_tab").empty();
                        $("#select_roleId_roleAuth_tab").append('<option value="0" disabled>請先新增角色</option>');
                        $("#select_roleId_roleAuth_tab").val($("#user_role_modal option:first").val()).trigger('change');
                    }
                }
                //toast_ok(rel.msg);
            }, 'json');
        }
        //#endregion

        //#region 帳號是否等同Email
        $('#user_account_same_email').change(function () {
            var email = $("#user_email_modal").val();
            if (email == undefined || email == null || email == "") {
                toast_warning("請先填寫email");
                $(this).prop("checked", false);
                return;
            }
            if (this.checked && selected_id == 0) {
                //只提供新增時,可透過email填入帳號欄位
                $("#user_account_modal").val(email);
                $("#user_account_modal").prop("disabled", true);
            }
            else {
                $("#user_account_modal").prop("disabled", false);
            }
        });
        //#endregion

        //#region 使用者表單驗證
        $("#user-form").validate({
            rules: {
                user_name_modal: {
                    required: true,
                },
                user_email_modal: {
                    required: true,
                    email: true,
                },
                user_account_modal: {
                    required: true,
                }
            },
        });
        //#endregion

        //#region 儲存使用者
        function SaveUser() {
            if ($("#user-form").valid()) {

                $("#save-user-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);

                var url = "/UserInfo/SaveUser";
                var send_data = {
                    Id: selected_id,
                    Name: $("#user_name_modal").val(),
                    Email: $("#user_email_modal").val(),
                    Account: $("#user_account_modal").val(),
                    Phone: $("#user_phone_modal").val(),
                    RoleId: $("#user_role_modal").val()
                }
                $.post(url, send_data, function (rel) {
                    $("#save-user-btn").html('確定').attr("disabled", false);
                    if (rel.code != "0000") {
                        if (rel.code == "9998") {
                            toast_warning(rel.msg);
                            return;
                        }
                        toast_error(rel.msg);
                        return;
                    }
                    toast_ok(rel.msg);
                    $('#user-modal').modal('hide');
                    userManagerTable.ajax.reload();
                }, 'json')
                .fail(function (xhr, status, error) {
                    $("#save-user-btn").html('確定').attr("disabled", false);
                });
            }
        }
        //#endregion

        //#region 刪除使用者
        $('#user_table').on("click", "button.del-btn", function () {
            selected_id = $(this).parents('tr').attr('data-guid');
            Swal.fire(
                {
                    title: "刪除",
                    text: "你確定是否刪除此筆資料?",
                    type: "warning",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: "是",
                    cancelButtonText: "否"
                }).then(function (result) {
                    if (result.value) {
                        var url = "/UserInfo/DeleteOneUser";
                        var send_data = {
                            guid: selected_id
                        }
                        $.post(url, send_data, function (rel) {
                            if (rel.code != "0000") {
                                toast_error(rel.msg);
                                return;
                            }

                            toast_ok(rel.msg);

                            userManagerTable.ajax.reload();
                        }, 'json');
                    }
                });
        });
        //#endregion
    </script>
    <script>
        var roleManagerTable;
        var selected_roleGUID = "0";
        $(function () {
            //#region 角色資料 DataTable
            roleManagerTable = $("#role_table").DataTable({
                "columns": [
                    {
                        "data": null,
                        "render": function (data, type, row, meta) {
                            return meta.row + 1;
                        }
                    },
                    {
                        "data": "full_name"
                    },
                    {
                        "data": "created_at"
                    },
                    {
                        "data": "layer",
                        "render": function (data, type, row, meta) {
                            if (@ViewBag.myUserInfo.Layer == 0) {
                                if (data == 1) {
                                    return '<button class="btn btn-primary edit-btn">修改</button> <button class="btn btn-danger del-btn">刪除</button>';
                                } else {
                                    return '<button class="btn btn-primary edit-btn">修改</button>';
                                }
                            } else {
                                if (data == 1) {
                                    return '<button class="btn btn-primary edit-btn">修改</button> <button class="btn btn-danger del-btn">刪除</button>';
                                } else {
                                    return '';
                                }
                            }
                        }
                    }
                ],
                //"order": [[2, "desc"]],
                'createdRow': function (row, data, dataIndex) {
                    $(row).attr('data-guid', data.role_guid);
                },
                "ajax": {
                    "url": "/UserInfo/RoleManagerList",
                    "type": "POST",
                    "data": function (d) {
                        d.post = 0;
                    },
                    "dataSrc": function (rel) {
                        if (rel.code == "9999") {
                            toast_error(rel.msg);
                            return;
                        }

                        data = rel.data;

                        if (data == null || data.length == 0) {
                            this.data = [];
                        }

                        return data;
                    }
                }
            });
            //#endregion
        });

        //#region 新增角色
        function AddRole() {
            selected_roleGUID = "0";
            $("#role-modal .modal-title").html("角色資料 - 新增");
            $("#role-form").trigger("reset");

            $("#role-modal").modal();
        }
        //#endregion

        //#region 編輯角色
        $('#role_table').on("click", "button.edit-btn", function () {

            $("#user-modal .modal-title").html("人員基本資料 - 編輯");

            selected_roleGUID = $(this).parents('tr').attr('data-guid');

            //取得單一使用者管理員
            var url = "/UserInfo/GetOneRole/";

            var send_data = {
                guid: selected_roleGUID
            }

            $.post(url, send_data, function (rel) {
                if (rel.code == "9999") {
                    toast_error(rel.msg);
                    return;
                }
                else if (rel.code == "9998") {
                    toast_error(rel.msg);
                    return;
                }
                $("#role_name_modal").val(rel.data.full_name);

                $("#role-modal").modal();
            }, 'json');

        });
        //#endregion

        //#region 角色表單驗證
        $("#role-form").validate({
            rules: {
                role_name_modal: {
                    required: true
                }
            },
        });
        //#endregion

        //#region 儲存角色
        function SaveRole() {
            if ($("#role-form").valid()) {

                $("#save-role-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);

                var url = "/UserInfo/SaveRole";

                var send_data = {
                    Id: selected_roleGUID,
                    Name: $("#role_name_modal").val(),
                }

                $.post(url, send_data, function (rel) {
                    $("#save-role-btn").html('確定').attr("disabled", false);

                    if (rel.code != "0000") {
                        toast_error(rel.msg);
                        return;
                    }

                    toast_ok(rel.msg);
                    $('#role-modal').modal('hide');
                    roleManagerTable.ajax.reload();
                }, 'json')
                .fail(function (xhr, status, error) {
                    $("#save-role-btn").html('確定').attr("disabled", false);
                });
            }
        }
        //#endregion

        //#region 刪除角色
        $('#role_table').on("click", "button.del-btn", function () {
            selected_roleGUID = $(this).parents('tr').attr('data-guid');
            Swal.fire(
                {
                    title: "刪除",
                    text: "你確定是否刪除此筆資料?",
                    type: "warning",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: "是",
                    cancelButtonText: "否"
                }).then(function (result) {
                    if (result.value) {
                        var url = "/UserInfo/DeleteOneRole";
                        var send_data = {
                            guid: selected_roleGUID
                        }
                        $.post(url, send_data, function (rel) {
                            if (rel.code != "0000") {
                                if (rel.code == "9999") {
                                    toast_error(rel.msg);
                                }
                                else if (rel.code == "9997") {
                                    var htnl = rel.msg + "<br>"
                                    Swal.fire(
                                        {
                                            title: "刪除失敗",
                                            icon: 'warning',
                                            html: htnl,
                                        });
                                }
                                else {
                                    toast_warning(rel.msg);
                                }
                                return;
                            }
                            else {
                                toast_ok(rel.msg);
                                roleManagerTable.ajax.reload();
                                return;
                            }
                        }, 'json');
                    }
                });
        });
        //#endregion
    </script>
    <script>
        var roleAuthTable;
        var roleAuthNotJoinTable;
        var selected_roleAuthGUID = "0";
        var selected_build = "0";
        var saveCheckAuth = [];
        //var CheckCount = 0;
        var AllCount = 0;
        //var frontEndCheckAuth = [];
        //var backEndCheckAuth = [];
        //var oddAuthType;
        //var oddBuild;

        $(function () {
            var url = "/UserInfo/RoleManagerList";
            $.post(url, { post: 1 }, function (rel) {
                if (rel.code != "0000") {
                    toast_error(rel.msg);
                    return;
                }
                if (rel.data.length > 0) {
                    $('#select_roleId_roleAuth_tab').empty();
                    $.each(rel.data, function (index, val) {
                        $("#select_roleId_roleAuth_tab").append($("<option />").val(val.role_guid).text(val.full_name));
                    });
                    //預設查詢第一個
                    $("#select_roleId_roleAuth_tab").val($("#select_roleId_roleAuth_tab option:first").val());

                    //#region 角色資料 DataTable
                    roleAuthTable = $("#roleAuth_table").DataTable({
                        "columns": [
                            {
                                "data": null,
                                "render": function (data, type, row, meta) {
                                    return meta.row + 1;
                                }
                            },
                            {
                                "data": "role_full_name"
                            },
                            {
                                "data": "authTypeText"
                            },
                            {
                                "data": "building_full_name"
                            },
                            {
                                "data": "mainName"
                            },
                            {
                                "data": "subName"
                            },
                            {
                                "data": "created_at"
                            },
                            {
                                "data": null,
                                "defaultContent": '<button class="btn btn-danger del-btn">刪除</button>'
                            }
                        ],
                        //"order": [[2, "desc"]],
                        'createdRow': function (row, data, dataIndex) {
                            $(row).attr('data-guid', data.role_guid);
                            $(row).attr('data-authCode', data.authCode);
                        },
                        "ajax": {
                            "url": "/UserInfo/RoleAuthList",
                            "type": "POST",
                            "data": function (d) {
                                d.SelectedRoleId = $('#select_roleId_roleAuth_tab').val();
                            },
                            "dataSrc": function (rel) {
                                if (rel.code == "9999") {
                                    toast_error(rel.msg);
                                    return;
                                }

                                data = rel.data;

                                if (data == null || data.length == 0) {
                                    this.data = [];
                                }

                                return data;
                            }
                        }
                    });
                    //#endregion
                } else {
                    $("#select_roleId_roleAuth_tab").empty();
                    $("#select_roleId_roleAuth_tab").append('<option value="0" disabled>請先新增角色</option>');
                    $("#select_roleId_roleAuth_tab").val($("#user_role_modal option:first").val());
                }
            }, 'json');

            //#region 角色未加入權限列表 DataTable
            roleAuthNotJoinTable = $("#roleAuth_NotJoin_table").DataTable({
                //"order": [[1, "desc"]],
                "columns": [
                    {
                        "data": "authCode"
                    },
                    {
                        "data": "mainName"
                    },
                    {
                        "data": "subName"
                    }
                ],
                "columnDefs": [{
                    'targets': 0,
                    'searchable': false,
                    'orderable': false,
                    'className': 'dt-body-center',
                    'render': function (data, type, full, meta) {
                        var check_html = "";
                        check_html += '<div class="custom-control custom-checkbox">';
                        //判斷是否要Check
                        var checkHtml = "";
                        if (saveCheckAuth.length > 0) {
                            var filterAuth = saveCheckAuth.filter(function (i, n) {
                                return i === data;
                            });

                            if (filterAuth.length > 0) {
                                checkHtml = "checked";
                            }
                        }

                        check_html += `<input type="checkbox" class="custom-control-input" name="selectedAuthPage[]" id="auth-page-${data}" value="${data}" ${checkHtml} /> `;
                        check_html += '<label class="custom-control-label" for="auth-page-' + data + '" />';
                        check_html += '</div>';
                        return check_html;
                    }
                }],
                'createdRow': function (row, data, dataIndex) {
                    $(row).attr('data-authCode', data.authCode);
                },
                "ajax": {
                    "url": "/UserInfo/GetRoleNotAuthPageList",
                    "type": "POST",
                    "data": function (d) {
                        d.SelectedRoleId = $('#select_roleId_roleAuth_tab').val();
                        d.SelectedAuthType = $("#select_authType").val();
                        d.SelectedBuild = selected_build;
                    },
                    "dataSrc": function (rel) {
                        if (rel.data.code == "9999") {
                            toast_error(rel.data.msg);
                            return;
                        }

                        data = rel.data;
                        AllCount = data.length;
                        console.log("AllCount", AllCount);

                        if (data == null || data.length == 0) {
                            this.data = [];
                        }

                        return data;
                    }
                },
                //"drawCallback": function (settings) {

                //    if (AllCount > 0) {

                //        var rows = roleAuthNotJoinTable.rows({ 'search': 'applied' }).nodes().length;
                //        var checkAuths = $("input[name='selectedAuthPage[]']:checked", rows).map(function () {
                //            return $(this).val();
                //        }).get();
                //        console.log("drawCallback", checkAuths.length);
                //        if (AllCount == CheckCount.length) {
                //            $("#select-all-role-auth").prop('checked', true);
                //        }
                //        else {
                //            $("#select-all-role-auth").prop('checked', false);
                //        }
                //    }
                //    else {
                //        $("#select-all-role-auth").prop('checked', false);
                //    }
                //    CheckCount = 0;
                //}
            });
            //#endregion
        });

        //#region 角色權限全選
        $("#select-all-role-auth").change(function () {

            var rows = roleAuthNotJoinTable.rows({ 'search': 'applied' }).nodes();

            $("input[name='selectedAuthPage[]']", rows).prop('checked', this.checked);
        });
        //#endregion

        //#region 選擇角色下拉式選單select_option
        $("#select_roleId_roleAuth_tab").change(function () {
            roleAuthTable.ajax.reload();
        });
        //#endregion

        //#region 新增角色權限
        async function AddRoleAuth() {
            $("#select_authType").val(1);
            await authTypeChange();
            //oddBuild = $("#select_building").val();
            roleAuthNotJoinTable.ajax.reload();
            saveCheckAuth = [];
            $("#role-auth-modal").modal();
        }
        //#endregion

        //#region 選擇角色類型下拉式選單select_option
        function authTypeChange() {
            return new Promise((resolve, reject) => {
                if ($("#select_authType").val() == "1") {
                    $("#select_building").show();
                    var url = "/BuildInfo/BuildInfoList";
                    $.post(url, null, function (rel) {
                        if (rel.code != "0000") {
                            toast_error(rel.msg);
                            return;
                        }
                        if (rel.data.length > 0) {
                            $('#select_building').empty();
                            $.each(rel.data, function (index, val) {
                                $("#select_building").append($("<option />").val(val.building_guid).text(val.full_name));
                            });
                            //預設查詢第一個
                            $("#select_building").val($("#select_building option:first").val());
                            selected_build = $("#select_building option:first").val();
                            roleAuthNotJoinTable.ajax.reload();
                            //#endregion
                        } else {
                            $("#select_building").empty();
                            $("#select_building").append('<option value="0" disabled>請先新增區域</option>');
                            $("#select_building").val($("#select_building option:first").val());
                        }
                        resolve();
                    }, 'json');
                }
                else {
                    selected_build = "0";
                    $("#select_building").hide();
                    roleAuthNotJoinTable.ajax.reload();
                    resolve();
                }

            });
        }

        $("#select_authType").change(function () {
            $("#select-all-role-auth").prop('checked', false);
            CheckAuthMain();
            authTypeChange();
        });
        //#endregion

        //#region 選擇區域下拉式選單select_option
        $("#select_building").change(function () {
            $("#select-all-role-auth").prop('checked', false);
            CheckAuthMain();

            selected_build = $("#select_building").val();
            roleAuthNotJoinTable.ajax.reload();
        });
        //#endregion

        //#region 儲存Check
        async function CheckAuthMain() {
            await CheckAuth();
        }

        function CheckAuth() {
            return new Promise((resolve, reject) => {
                var rows = roleAuthNotJoinTable.rows({ 'search': 'applied' }).nodes();
                //取得被選擇的角色權限
                var checkAuths = $("input[name='selectedAuthPage[]']:checked", rows).map(function () {
                    return $(this).val();
                }).get();

                var uncheckAuths = $("input[name='selectedAuthPage[]']:not(:checked)", rows).map(function () {
                    return $(this).val();
                }).get();

                //勾選
                if (checkAuths.length > 0) {
                    $.each(checkAuths, function (index, val) {
                        var dbindex = saveCheckAuth.findIndex(x => x == val);
                        if (dbindex == -1) {
                            saveCheckAuth.push(val);
                        }
                    });
                }

                //未勾選
                if (uncheckAuths.length > 0) {
                    $.each(uncheckAuths, function (index, val) {
                        var dbindex = saveCheckAuth.findIndex(x => x == val);
                        if (dbindex >= 0) {
                            saveCheckAuth.splice(dbindex, 1);
                        }
                    });
                }
                resolve();
            });
        }
        //#endregion

        //#region 刪除角色權限
        $('#roleAuth_table').on("click", "button.del-btn", function () {

            var row_guid = $(this).parents('tr').attr('data-guid');
            var row_authCode = $(this).parents('tr').attr('data-authCode');

            //var split_arr = row_id_authCode.split("_");
            Swal.fire(
                {
                    title: "刪除",
                    text: "你確定是否刪除此筆資料?",
                    type: "warning",
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonText: "是",
                    cancelButtonText: "否"
                }).then(function (result) {
                    if (result.value) {
                        //取得單一系統管理員
                        var url = "/UserInfo/DeleteOneRoleAuth/";

                        var send_data = {
                            RoleId: row_guid,
                            AuthCode: row_authCode
                        }

                        $.post(url, send_data, function (rel) {
                            if (rel.code != "0000") {
                                toast_error(rel.msg);
                                return;
                            }

                            toast_ok(rel.msg);
                            roleAuthTable.ajax.reload();
                        }, 'json');
                    }
                });
        });
        //#endregion

        //#region 儲存角色權限
        function SaveRoleAuth() {
            CheckAuthMain();

            $("#save-role-auth-btn").html('<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span>').attr("disabled", true);

            var url = "/UserInfo/SaveRoleAuth";

            var send_data = {
                SelectedRoleId: $('#select_roleId_roleAuth_tab').val(),
                SaveCheckAuth: saveCheckAuth
            }

            $.post(url, send_data, function (rel) {
                $("#save-role-auth-btn").html('確定').attr("disabled", false);
                if (rel.code != "0000") {
                    toast_error(rel.msg);
                    return;
                }

                toast_ok(rel.msg);
                $("#role-auth-modal").modal('hide');

                roleAuthTable.ajax.reload();
            }, 'json')
                .fail(function (xhr, status, error) {
                    $("#save-role-auth-btn").html('確定').attr("disabled", false);
                });
        }
            //#endregion
    </script>
}