import $ from 'jquery';

import('bootstrap');
import 'select2';

$(function () {

    function getLang(): string {
        const url = window.location.href;
        if (url.indexOf("/de/") > -1) return 'de';
        if (url.indexOf("/en/") > -1) return 'en';
        if (url.indexOf("/es/") > -1) return 'es';
        if (url.indexOf("/ru/") > -1) return 'ru';
        return 'de';
    }

    function getPasswordAdvice(): string {
        switch (getLang()) {
            case 'de':
                return 'leeres Passwort = Passwort wird nicht geändert';
            case 'en':
                return 'empty password = password will not be changed';
            case 'es':
                return 'contraseña en blanco = la contraseña no se cambiará';
            case 'ru':
                return 'пустой пароль = пароль не будет изменен';
            default:
                return 'empty password = password will not be changed';
        }
    }

    function getEmailExist(): string {
        switch (getLang()) {
            case 'de':
                return 'Diese E-Mail ist bereits mit dieser Rolle registriert!';
            case 'en':
                return 'This email is already registered with this role!';
            case 'es':
                return 'Este correo electrónico ya está registrado con este rol';
            case 'ru':
                return 'Этот email уже зарегистрирован с данной ролью! ';
            default:
                return 'Diese E-Mail ist bereits mit dieser Rolle registriert!';
        }
    }

    const pathToUserCheck = decodeURIComponent(String($('#pathToUserCheck').val()));


    const selectedUserRole: string = $('#selected_user_role').val() as string;
    $('#user_roles').val(selectedUserRole);
    $('#user_password').val('').prop('required', false);
    $('#password_advice').html('<div class="alert alert-warning mb-3 f-15 p-2" role="alert">' + getPasswordAdvice() + '</div>');

    $('#user_email').on("input", function () {
        const userEmail: string = $('#user_email').val() as string;
        const userId: number = parseInt($('#user_id').val() as string, 10);
        const userRole: string = $('#user_roles').val() as string;

        let emailToCheck = userEmail;
        if (userRole === 'ROLE_GUEST') {
            emailToCheck += '#guest';
        }

        $.getJSON(pathToUserCheck, {email: emailToCheck, user_id: userId}, function (response) {
            if (response.exists) {
                $('#output_email').html(`<div class="alert alert-danger"> ${getEmailExist()} </div>`);
                $('#submit_button').prop('disabled', true);
            } else {
                $('#output_email').html('');
                $('#submit_button').prop('disabled', false);
            }
        });
    });

    $('.select2_contact_member').select2();
});
