easyappointments/assets/js/pages/business_settings.min.js

1 line
3.1 KiB
JavaScript
Executable File

"use strict";App.Pages.BusinessSettings=function(){function isInvalid(){try{$("#business-settings .is-invalid").removeClass("is-invalid");var missingRequiredFields=!1;if($("#business-settings .required").each(function(index,requiredField){var $requiredField=$(requiredField);$requiredField.val()||($requiredField.addClass("is-invalid"),missingRequiredFields=!0)}),missingRequiredFields)throw new Error(lang("fields_are_required"));return!1}catch(error){return App.Layouts.Backend.displayNotification(error.message),!0}}function deserialize(businessSettings){businessSettings.forEach(function(businessSetting){var $field=$("[data-field=\""+businessSetting.name+"\"]");$field.is(":checkbox")?$field.prop("checked",!!+businessSetting.value):$field.val(businessSetting.value)})}function serialize(){var businessSettings=[];$("[data-field]").each(function(index,field){var $field=$(field);businessSettings.push({name:$field.data("field"),value:$field.is(":checkbox")?+$field.prop("checked"):$field.val()})});var workingPlan=workingPlanManager.get();businessSettings.push({name:"company_working_plan",value:JSON.stringify(workingPlan)});var appointmentStatusOptions=App.Components.AppointmentStatusOptions.getOptions($appointmentStatusOptions);return businessSettings.push({name:"appointment_status_options",value:JSON.stringify(appointmentStatusOptions)}),businessSettings}function onSaveSettingsClick(){if(isInvalid())return void App.Layouts.Backend.displayNotification(lang("settings_are_invalid"));var businessSettings=serialize();App.Http.BusinessSettings.save(businessSettings).done(function(){App.Layouts.Backend.displayNotification(lang("settings_saved"))})}function onApplyGlobalWorkingPlan(){var buttons=[{text:lang("cancel"),click:function click(event,messageModal){messageModal.hide()}},{text:"OK",click:function click(event,messageModal){var workingPlan=workingPlanManager.get();App.Http.BusinessSettings.applyGlobalWorkingPlan(workingPlan).done(function(){App.Layouts.Backend.displayNotification(lang("working_plans_got_updated"))}).always(function(){messageModal.hide()})}}];App.Utils.Message.show(lang("working_plan"),lang("overwrite_existing_working_plans"),buttons)}var $saveSettings=$("#save-settings"),$applyGlobalWorkingPlan=$("#apply-global-working-plan"),$appointmentStatusOptions=$("#appointment-status-options"),workingPlanManager=null;return document.addEventListener("DOMContentLoaded",function initialize(){var businessSettings=vars("business_settings");deserialize(businessSettings);var companyWorkingPlan={},appointmentStatusOptions=[];vars("business_settings").forEach(function(businessSetting){"company_working_plan"===businessSetting.name&&(companyWorkingPlan=JSON.parse(businessSetting.value)),"appointment_status_options"===businessSetting.name&&(appointmentStatusOptions=JSON.parse(businessSetting.value))}),workingPlanManager=new App.Utils.WorkingPlan,workingPlanManager.setup(companyWorkingPlan),workingPlanManager.timepickers(!1),workingPlanManager.addEventListeners(),App.Components.AppointmentStatusOptions.setOptions($appointmentStatusOptions,appointmentStatusOptions),$saveSettings.on("click",onSaveSettingsClick),$applyGlobalWorkingPlan.on("click",onApplyGlobalWorkingPlan)}),{}}();