"use strict";App.Components.UnavailabilitiesModal=function(){function updateTimezone(){var providerId=$selectProvider.val(),provider=vars("available_providers").find(function(availableProvider){return+availableProvider.id===+providerId});provider&&provider.timezone&&$unavailabilitiesModal.find(".provider-timezone").text(vars("timezones")[provider.timezone])}function addEventListeners(){$selectProvider.on("change",function(){updateTimezone()}),$saveUnavailability.on("click",function(){if($unavailabilitiesModal.find(".modal-message").addClass("d-none"),$unavailabilitiesModal.find(".is-invalid").removeClass("is-invalid"),!$selectProvider.val())return void $selectProvider.addClass("is-invalid");var startDateTimeMoment=moment(App.Utils.UI.getDateTimePickerValue($startDatetime));if(!startDateTimeMoment.isValid())return void $startDatetime.addClass("is-invalid");var endDateTimeMoment=moment(App.Utils.UI.getDateTimePickerValue($endDatetime));if(!endDateTimeMoment.isValid())return void $endDatetime.addClass("is-invalid");if(startDateTimeMoment.isAfter(endDateTimeMoment))return $unavailabilitiesModal.find(".modal-message").text(lang("start_date_before_end_error")).addClass("alert-danger").removeClass("d-none"),$startDatetime.addClass("is-invalid"),void $endDatetime.addClass("is-invalid");var unavailability={start_datetime:startDateTimeMoment.format("YYYY-MM-DD HH:mm:ss"),end_datetime:endDateTimeMoment.format("YYYY-MM-DD HH:mm:ss"),notes:$unavailabilitiesModal.find("#unavailability-notes").val(),id_users_provider:$selectProvider.val()};""!==$id.val()&&(unavailability.id=$id.val());App.Http.Calendar.saveUnavailability(unavailability,function successCallback(){App.Layouts.Backend.displayNotification(lang("unavailability_saved")),$unavailabilitiesModal.find(".alert").addClass("d-none"),$unavailabilitiesModal.modal("hide"),$reloadAppointments.trigger("click")},null)}),$insertUnavailability.on("click",function(){resetModal();var $dialog=$("#unavailabilities-modal"),startMoment=moment(),currentMin=parseInt(startMoment.format("mm"));0currentMin?startMoment.set({minutes:15}):15currentMin?startMoment.set({minutes:30}):30currentMin?startMoment.set({minutes:45}):startMoment.add(1,"hour").set({minutes:0}),0===$(".calendar-view").length&&$selectProvider.val($selectFilterItem.val()).closest(".form-group").hide(),App.Utils.UI.setDateTimePickerValue($startDatetime,startMoment.toDate()),App.Utils.UI.setDateTimePickerValue($endDatetime,startMoment.add(1,"hour").toDate()),$dialog.find(".modal-header h3").text(lang("new_unavailability_title")),$dialog.modal("show")})}function resetModal(){$id.val("");var start=App.Utils.Date.format(moment().toDate(),vars("date_format"),vars("time_format"),!0),end=App.Utils.Date.format(moment().add(1,"hour").toDate(),vars("date_format"),vars("time_format"),!0);App.Utils.UI.initializeDateTimePicker($startDatetime),$startDatetime.val(start),App.Utils.UI.initializeDateTimePicker($endDatetime),$endDatetime.val(end),$notes.val("")}var $unavailabilitiesModal=$("#unavailabilities-modal"),$id=$("#unavailability-id"),$startDatetime=$("#unavailability-start"),$endDatetime=$("#unavailability-end"),$selectProvider=$("#unavailability-provider"),$notes=$("#unavailability-notes"),$saveUnavailability=$("#save-unavailability"),$insertUnavailability=$("#insert-unavailability"),$selectFilterItem=$("#select-filter-item"),$reloadAppointments=$("#reload-appointments"),moment=window.moment;return document.addEventListener("DOMContentLoaded",function(){for(var index in vars("available_providers")){var provider=vars("available_providers")[index];$selectProvider.append(new Option(provider.first_name+" "+provider.last_name,provider.id))}addEventListeners()}),{resetModal:resetModal}}();