/* ---------------------------------------------------------------------------- * Easy!Appointments - Open Source Web Scheduler * * @package EasyAppointments * @author A.Tselegidis <alextselegidis@gmail.com> * @copyright Copyright (c) 2013 - 2020, Alex Tselegidis * @license http://opensource.org/licenses/GPL-3.0 - GPLv3 * @link http://easyappointments.org * @since v1.0.0 * ---------------------------------------------------------------------------- */ window.BackendSecretaries = window.BackendSecretaries || {}; /** * Backend Users * * This module handles the js functionality of the users backend page. It uses three other * classes (defined below) in order to handle the admin, provider and secretary record types. * * @module BackendSecretaries */ (function (exports) { 'use strict'; /** * Minimum Password Length * * @type {Number} */ exports.MIN_PASSWORD_LENGTH = 7; /** * Contains the current tab record methods for the page. * * @type {SecretariesHelper} */ var helper = {}; /** * Initialize the backend users page. * * @param {Boolean} defaultEventHandlers (OPTIONAL) Whether to bind the default event handlers. */ exports.initialize = function (defaultEventHandlers) { defaultEventHandlers = defaultEventHandlers || true; // Instantiate default helper object. helper = new SecretariesHelper(); helper.resetForm(); helper.filter(''); helper.bindEventHandlers(); GlobalVariables.providers.forEach(function (provider) { $('<div/>', { 'class': 'checkbox', 'html': [ $('<div/>', { 'class': 'checkbox form-check', 'html': [ $('<input/>', { 'class': 'form-check-input', 'type': 'checkbox', 'data-id': provider.id }), $('<label/>', { 'class': 'form-check-label', 'text': provider.first_name + ' ' + provider.last_name, 'for': provider.id }) ] }) ] }).appendTo('#secretary-providers'); }); // Bind event handlers. if (defaultEventHandlers) { bindEventHandlers(); } }; /** * Binds the default backend users event handlers. Do not use this method on a different * page because it needs the backend users page DOM. */ function bindEventHandlers() { /** * Event: Secretary Username "Blue" * * When the user leaves the username input field we will need to check if the username * is not taken by another record in the system. */ $('#secretary-username').focusout(function () { var $input = $(this); if ($input.prop('readonly') === true || $input.val() === '') { return; } var userId = $input.parents().eq(2).find('.record-id').val(); if (!userId) { return; } var url = GlobalVariables.baseUrl + '/index.php/backend_api/ajax_validate_username'; var data = { csrfToken: GlobalVariables.csrfToken, username: $input.val(), user_id: userId }; $.post(url, data).done(function (response) { if (response.is_valid === 'false') { $input.addClass('is-invalid'); $input.attr('already-exists', 'true'); $input.parents().eq(3).find('.form-message').text(EALang.username_already_exists); $input.parents().eq(3).find('.form-message').show(); } else { $input.removeClass('is-invalid'); $input.attr('already-exists', 'false'); if ($input.parents().eq(3).find('.form-message').text() === EALang.username_already_exists) { $input.parents().eq(3).find('.form-message').hide(); } } }); }); } })(window.BackendSecretaries);