Current File : /home/getxxhzo/app.genicards.com/resources/assets/js/users/users.js
Livewire.hook("element.init", () => {
    loadUserfilter();
});

listenClick(".user-is-verified", function () {
    let userId = $(this).data("id");
    let updateUrl = route("users.email-verified", userId);
    $.ajax({
        type: "get",
        url: updateUrl,
        success: function (response) {
            Livewire.dispatch("refresh");
            displaySuccessMessage(response.message);
        },
    });
});

listenClick(".user-active", function () {
    let userId = $(this).data("id");
    let updateUrl = route("users.status", userId);
    $.ajax({
        type: "get",
        url: updateUrl,
        success: function (response) {
            displaySuccessMessage(response.message);
            Livewire.dispatch("refresh");
        },
    });
});

listenClick(".vcards-verified", function () {
    let userId = $(this).data("id");
    let updateUrl = route("vcard.verified", userId);
    $.ajax({
        type: "get",
        url: updateUrl,
        success: function (response) {
            Livewire.dispatch("refresh");
            displaySuccessMessage(response.message);
        },
        error: function (result) {
            displayErrorMessage(result.responseJSON.message);
        },
    });
});

listenClick(".user-delete-btn", function (event) {
    let recordId = $(event.currentTarget).data("id");
    let name = $(event.currentTarget).data("name");
    let deleteName =
        name == "superAdmin" ? Lang.get("js.admin") : Lang.get("js.user");

    deleteItem(route("users.destroy", recordId), deleteName);
});

listenClick(".admin-delete-btn", function (event) {
    let recordId = $(event.currentTarget).data("id");
    let name = $(event.currentTarget).data("name");
    let deleteName =
        name == "superAdmin" ? Lang.get("js.admin") : Lang.get("js.user");

    deleteItem(route("admins.destroy", recordId), deleteName);
});
listen("contextmenu", ".user-impersonate", function (e) {
    e.preventDefault(); // Stop right click on link
    return false;
});

var control = false;
listen("keyup keydown", function (e) {
    control = e.ctrlKey;
});

listenClick(".user-impersonate", function () {
    if (control) {
        return false; // Stop ctrl + click on link
    }
    let id = $(this).data("id");
    let element = document.createElement("a");
    element.setAttribute("href", route("impersonate", id));
    element.setAttribute("data-turbo", false);
    document.body.appendChild(element);
    element.click();
    document.body.removeChild(element);
    $(".user-impersonate").prop("disabled", true);
});

function isEmailUser(email) {
    let regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    return regex.test(email);
}

listenSubmit("#userCreateForm", function () {
    if ($.trim($("#userFirstName").val()) == "") {
        displayErrorMessage(Lang.get("js.first_name_required"));
        return false;
    }

    if ($.trim($("#userLastName").val()) == "") {
        displayErrorMessage(Lang.get("js.last_name_required"));
        return false;
    }
    if (!isEmailUser($("#email").val())) {
        displayErrorMessage(Lang.get("js.enter_valid_email"));
        return false;
    }

    let passwordVal = $("#password").val();
    if ($.trim(passwordVal) == "") {
        displayErrorMessage(Lang.get("js.passwords"));
        return false;
    }
    if (passwordVal.length < 8) {
        displayErrorMessage(Lang.get("js.password_character"));
        return false;
    }

    let confirmPassWord = $("#cPassword").val();
    if (passwordVal !== confirmPassWord) {
        displayErrorMessage(Lang.get("js.password_must_match"));
        return false;
    }
});

listenSubmit("#userEditForm", function () {
    if ($.trim($("#userFirstName").val()) == "") {
        displayErrorMessage(Lang.get("js.first_name_required"));
        return false;
    }
    if (!isEmailUser($("#email").val())) {
        displayErrorMessage(Lang.get("js.enter_valid_email"));
        return false;
    }

    if ($.trim($("#userLastName").val()) == "") {
        displayErrorMessage(Lang.get("js.last_name_required"));
        return false;
    }
});

listenClick(".user-change-password", function () {
    let userId = $(this).attr("data-id");
    $("#changePasswordUserId").val(userId);
    $("#changeUserPasswordModal").modal("show").appendTo("body");
});

listenClick("#UserPasswordChangeBtn", function () {
    let userId = $("#changePasswordUserId").val();
    $(this).attr("disabled", true);

    $.ajax({
        url: route("changePassword", userId),
        type: "PUT",
        data: $("#changeUserPasswordForm").serialize(),
        success: function (result) {
            $("#changeUserPasswordModal").modal("hide");
            displaySuccessMessage(result.message);
            $("#UserPasswordChangeBtn").attr("disabled", false);
        },
        error: function error(result) {
            $("#UserPasswordChangeBtn").attr("disabled", false);
            displayErrorMessage(result.responseJSON.message);
        },
    });
});

listenHiddenBsModal("#changeUserPasswordModal", function () {
    $("#changeUserPasswordForm")[0].reset();
});
function loadUserfilter() {
    $("#userStatus").select2();
}
listen("change", "#userStatus", function () {
    Livewire.dispatch("statusFilter", { status: $(this).val() });
    window.hideDropdownManually(
        $("#dropdownMenuUserStatus"),
        $(".dropdown-menu")
    );
});
function hideDropdownManually(button, menu) {
    button.attr("aria-expanded", "false"); // Set aria-expanded attribute to false on the dropdown button
    menu.removeClass("show"); // Remove 'show' class from the dropdown menu
}
listen("click", "#userResetFilter", function () {
    $("#userStatus").val(2).change();
    Livewire.dispatch("statusFilter", { status: "" });
    window.hideDropdownManually(
        $("#dropdownMenuUserStatus"),
        $(".dropdown-menu")
    );
});
listenKeyup(".check-email", function () {
         let originalEmail = document.getElementById('originalEmail').value;
         let email = $(this).val();

         if(email == originalEmail || email == ""){
             $("#email-error-msg").text("");
             return false;
         }
         $.ajax({
             url: route('check.email', email),
             type: "GET",
             success: function (result) {
                 if(result.success){
                     $("#email-error-msg").text("");
                 }else{
                     $("#email-error-msg").text(Lang.get("js.check_email"));
                 }
             },
         });
});