$(document).ready(function () { if($.fn.dataTable != undefined) { $.extend($.fn.dataTable.defaults, { "language": { "sProcessing": "Procesando...", "sLengthMenu": "Mostrar _MENU_", "sZeroRecords": "No se han encontrado resultados", "sEmptyTable": "Sin datos todavía", "sInfo": "Mostrando de la entrada _START_ a la _END_ de un total de _TOTAL_ entradas", "sInfoEmpty": "No hay ninguna entrada", "sInfoFiltered": "(filtrado de _MENU_ entradas)", "sSearchPlaceholder": "Buscar", "sInfoPostFix": "", "sSearch": "", "sUrl": "", "oPaginate": { "sFirst": " ", "sPrevious": " ", "sNext": " ", "sLast": " " }, } }); } }); /* ClassBlockUI.abrirBlockUIEstandar(contenedorIDAMostrar[, accionCerrar, headerText, extraClass, restaurarElemento]); ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje[, isAlertOrButtons, onClose]); ClassBlockUI.abrirBlockUIConfirm(mensaje, textoBotonAceptar, accionBotonAceptar, textoBotonCancelar[, accionBotonCancelar]); //accionBotonCancelar="close" ClassBlockUI.abrirBlockUIEsperePorFavor:([mensaje]); */ var ClassBlockUI = { restaurarElemento: function() { var data = $("body").data('blockUIEstandar.history'); if (data) { data.el.style.display = data.display; data.el.style.position = data.position; if (data.parent) data.parent.appendChild(data.el); $("body").removeData('blockUIEstandar.history'); $("#"+data.generatedId).remove(); } }, abrirBlockUIEstandar: function(contenedorIDAMostrar, accionCerrar, headerText, extraClass, restaurarElemento) { if(restaurarElemento || restaurarElemento == undefined) { ClassBlockUI.restaurarElemento(); } $(".modalAutoHide").modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} if(contenedorIDAMostrar == undefined || $("#"+contenedorIDAMostrar).length == 0){return;} //var blockUIId="blockUI_"+new Date().getTime(); var blockUIId="blockUI_"+contenedorIDAMostrar; extraClass = extraClass == undefined ? "" : extraClass; //modal-lg var object = $("#"+contenedorIDAMostrar); var node = object[0]; var data = {}; $("body").data('blockUIEstandar.history', data); data.el = node; data.parent = node.parentNode; data.display = node.style.display; data.position = node.style.position; data.generatedId = blockUIId; data.object = object; if (data.parent) data.parent.removeChild(node); var header = headerText != undefined ? headerText : ""; var message = ''+ ''; $("body").append(message); var modal = $("#"+blockUIId); modal.find(".modal-body").append(node); $("#"+contenedorIDAMostrar).show(); modal.find(".modal-dialog").addClass("zoomInDown"); modal.modal({backdrop: false}); modal.on('hidden.bs.modal', function () { ClassBlockUI.restaurarElemento(); }) if(accionCerrar==undefined) //boton cerrar tiene accion por defecto { $("#"+blockUIId+" .btnCerrarModalEquis").click(function(){ modal.modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} }); } else if(accionCerrar==false) //oculta el boton cerrar { $("#"+blockUIId+" .btnCerrarModalEquis").hide(); } else //boton cerrar con accion especial { $("#"+blockUIId+" .btnCerrarModalEquis").click(accionCerrar); } return modal; }, abrirBlockUIEstandarMensaje: function(mensaje, isAlertOrButtons, onClose, extraClass, title) { $(".modalAutoHide").modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} var blockUIId="blockUI_"+new Date().getTime(); extraClass = extraClass == null || extraClass == undefined ? "" : extraClass; //modal-lg title = title == null || title == undefined ? "Aviso" : title; if(isAlertOrButtons==undefined) isAlertOrButtons=false; if(onClose==undefined) onClose=false; var botonera = ""; var botoneraEspecial = false; if(isAlertOrButtons === false) { botonera = ""; } else if (isAlertOrButtons === true) { botonera = "
Aceptar
"; } else { botoneraEspecial = true; botonera = "
"; for(var index in isAlertOrButtons) { botonera += " "+isAlertOrButtons[index]["text"]+" "; } botonera += "
"; } var message = ''; message += ''; $("body").append(message); var modal = $("#"+blockUIId); modal.find(".modal-dialog").addClass("zoomInDown"); modal.modal({backdrop: false}); modal.on('hidden.bs.modal', function () { modal.remove(); }) //Acciones de los botones especiales if(botoneraEspecial) { for(var index in isAlertOrButtons) { if(isAlertOrButtons[index]["action"] == "close") { isAlertOrButtons[index]["action"] = function(){ modal.modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} }; } $("#"+blockUIId+" ."+index).unbind("click").click(isAlertOrButtons[index]["action"]); } } var fnOnClose; if(onClose==false) { fnOnClose = function(){ modal.modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} }; } else if (typeof onClose === "function") { fnOnClose = function(){onClose()}; } else if (onClose == "location") { fnOnClose = function(){window.location.reload()}; } else if (onClose == "back") { fnOnClose = function(){history.go(-1);}; } else { fnOnClose = function(){window.location = onClose}; } $("#"+blockUIId+" .btnCerrarBlockUIAlert, #"+blockUIId+" .btnCerrarModalEquis").unbind("click").click(fnOnClose); return modal; }, abrirBlockUIConfirm: function(mensaje, textoAceptar, accionAceptar, textoCancelar, accionCancelar, extraClass, title) { accionCancelar = accionCancelar == undefined ? "close" : accionCancelar; extraClass = extraClass == null || extraClass == undefined ? "" : extraClass; var buttons = { "btnAceptarBUI_CONFIRM": { "text": textoAceptar, "action": accionAceptar }, "btnCancelarBUI_CONFIRM": { "text": textoCancelar, "action": accionCancelar } }; return ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje, buttons, false, extraClass, title); }, abrirBlockUIEsperePorFavor: function(mensaje) { if(mensaje == undefined){ mensaje = "
Loading ... Espere por favor...
"; }; return ClassBlockUI.abrirBlockUIEstandarMensaje(mensaje, undefined, false, "modalEspere"); } }; class CofenatProfesionales { alreadyInit; ventanaBaja; FC_RESERVAR; FC_EDITAR;e FC_NUEVA; FC_AGENDA; CR_Loaded; static init() { if(CofenatProfesionales.alreadyInit === true) { return; } CofenatProfesionales.alreadyInit = true; CofenatProfesionales.ventanaBaja = null; CofenatProfesionales.FC_RESERVAR = 1; CofenatProfesionales.FC_EDITAR = 2; CofenatProfesionales.FC_NUEVA = 3; CofenatProfesionales.FC_AGENDA = 4; CofenatProfesionales.FC_CITA_RECURRENTE = 5; CofenatProfesionales.loadCustomRules(); } static initDatosCliente(idProvinciaActual, idLocalidadActual, idProvinciaFacturacionActual, idLocalidadFacturacionActual) { Utils.preparaLugar(28, idProvinciaActual, idLocalidadActual, undefined, "frmCC_idProvincia", "frmCC_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); Utils.preparaLugar(28, idProvinciaFacturacionActual, idLocalidadFacturacionActual, undefined, "frmCCF_idProvincia", "frmCCF_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); CofenatProfesionales.loadCustomRules(); $(".btnGuardarCambiosCuenta").makeTagLink(function(){Utils.sendStandardAjax("frmEditarCuenta", "ajax/Usuarios.editarCuenta.php")}) $(".btnGuardarCambiosFacturacion").makeTagLink(function(){Utils.sendStandardAjax("frmEditarFacturacion", "ajax/Usuarios.editarFacturacion.php")}) $(".btnActualizarContrasena").makeTagLink(function(){Utils.sendStandardAjax("frmEditarPassword", "ajax/Usuarios.actualizarPassword.php")}) $(".btnBaja").makeTagLink(function(){ CofenatProfesionales.ventana = ClassBlockUI.abrirBlockUIConfirm("Si te das de baja perderás tu acceso y el historial de pedidos realizados.\r\n¿Estas seguro de que quieres darte de baja? ", "SI, DARME DE BAJA", function () { Utils.sendStandardAjax(null, "ajax/Usuarios.baja.php"); }, "NO, CONTINUAR", null, "", "VAS A DARTE BAJA") }) } static initConfirmarReserva(idProvinciaActual, idLocalidadActual, idProvinciaFacturacionActual, idLocalidadFacturacionActual) { Utils.preparaLugar(28, idProvinciaActual, idLocalidadActual, undefined, "frmCC_idProvincia", "frmCC_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); Utils.preparaLugar(28, idProvinciaFacturacionActual, idLocalidadFacturacionActual, undefined, "frmCCF_idProvincia", "frmCCF_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); CofenatProfesionales.loadCustomRules(); $("#formaPago3").click(function () { ClassBlockUI.abrirBlockUIEstandarMensaje("La reserva no quedará confirmada hasta que el profesional revise su solicitud.
El profesional se pondrá en contacto con usted para confirmar la forma de pago de forma externa a la plataforma.
En caso de no realizar el pago el profesional podrá cancelar la reserva en cualquier momento.", true, undefined, "modal-xl"); }); let email = $("#frmCC_email"); email.change(function(){ var re = /\S+@\S+\.\S+/; if(!re.test(email.val())) { return; } Utils.sendStandardAjax(null, "ajax/Usuarios.compruebaEmailUsado.php?email="+email.val(), {"successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]===-1) { email.focus(); email.addClass("error"); $.notify( { title: "", message: data["error_message"], }, { type: 'danger', placement: { from: "top", align: "center" }, delay: 10000 }); } }, "esperePorFavor": false}) }); $("#frmCC_fechaNacimiento").mask("99/99/9999"); $("#copiarDatosFacturacion").change(function(){$(".datosFacturacion").toggle()}); $(".btnRealizarReserva").click(function (){Utils.sendStandardAjax("frmCrearCuenta", "ajax/Usuarios.realizarReserva.php", { "successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true); return; } else if(data["tpv"] !== undefined) { $("body").append(data["tpv"]); $(".pagoTPV").submit(); } else if(data["location"] !== undefined) { window.location = data["location"]; } }, "onBeforeSend": function(){ if(!$("input[name=tipoServicio]").is(":checked")) { ClassBlockUI.abrirBlockUIEstandarMensaje("Debes elegir un Tipo de Servicio", true); return false; } if(!$("input[name=formaPago]").is(":checked")) { ClassBlockUI.abrirBlockUIEstandarMensaje("Debes elegir una Forma de Pago", true); return false; } if(!$("input[name=terminos]").is(":checked")) { ClassBlockUI.abrirBlockUIEstandarMensaje("Debe aceptar los 'términos y condiciones'", true); return false; } return true; } })}); } idClienteSeleccionadoCita = 0; functionsAutoCompelteCliente = {}; profesionalSeleccionado = null; blockNuevoCliente = null; static recargaModalidadSegunServicio(servicio, modalidad) { servicio.selectpicker('refresh'); //valorCampoServicio = servicio.is(":hidden") ? servicio.val() : servicio.selectpicker('val'); let ubicacionPermitida = $( "#frmNCC_servicio option:selected" ).attr("data-tipoUbicacion"); var selected = false; modalidad.find("option").each(function() { if(ubicacionPermitida != 3 && ubicacionPermitida!=this.value) { $(this).attr("disabled", "disabled"); } else { $(this).removeAttr("disabled"); if(!selected) { modalidad.selectpicker("refresh"); modalidad.selectpicker("val", this.value); modalidad.selectpicker("refresh"); } selected = true; } }); modalidad.selectpicker("refresh"); //servicio.closest("form").valid(); } static initNuevaCita(idProfesional, profesional, administrador, initialDate, serviciosXprofesional, businessHourProfesionales, horasCentro){ CofenatProfesionales.init(); $(document).ready(function () { CofenatProfesionales.businessHourProfesionales = businessHourProfesionales; let servicio = $("#frmNCC_servicio"); let modalidad = $("#frmNCC_tipoUbicacion"); servicio.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { if (isSelected == null) return; CofenatProfesionales.recargaModalidadSegunServicio(servicio, modalidad); }); CofenatProfesionales.recargaModalidadSegunServicio(servicio, modalidad); let dateInitial = new Date(initialDate); let initialDateInSecs = undefined; if(isNaN(dateInitial.getTime()) || new Date().getTime() > dateInitial.getTime()) { initialDate = undefined; } else { initialDateInSecs = new Date(initialDate).getTime()/1000; } CofenatProfesionales.functionsAutoCompelteCliente = { abreAnadirCliente: function(searched) { CofenatProfesionales.blockNuevoCliente = ClassBlockUI.abrirBlockUIEstandar("bloqueEditarCliente", null, "Nuevo Cliente", "modal-xl"); let form = $("#frmEditarCliente"); form.trigger("reset"); $("#frmEditarCliente select.selectpicker").each(function () { $(this).selectpicker("val", $(this).prop("defaultValue")); $(this).selectpicker("refresh"); }); form.validate().resetForm(); }, clienteSeleccionado: function(item) { if(item) { $("#frmNCC_nombre").val(item.cliente.gpcl_nombre); $("#frmNCC_apellidos").val(item.cliente.gpcl_apellidos); $("#frmNCC_dni").val(item.cliente.gpcl_DNI); $("#frmNCC_email").val(item.cliente.gpcl_email); $("#frmNCC_telefonoFijo").val(item.cliente.gpcl_telefonoFijo); $("#frmNCC_telefonoMovil").val(item.cliente.gpcl_telefonoMovil); $("#frmNCC_ultimaVisita").val(item.ultimaVisita); $("#frmNCC_zonaHoraria").val(item.zonaHoraria); $("#frmNCC_observaciones").val(item.observaciones); } else { $("#frmNCC_nombre").val(""); $("#frmNCC_apellidos").val(""); $("#frmNCC_dni").val(""); $("#frmNCC_email").val(""); $("#frmNCC_telefonoFijo").val(""); $("#frmNCC_telefonoMovil").val(""); $("#frmNCC_ultimaVisita").val(""); $("#frmNCC_zonaHoraria").val(""); $("#frmNCC_observaciones").val(""); } }, cambiarCliente: function(caller) { let confirm = ClassBlockUI.abrirBlockUIConfirm("¿Estas seguro de que deseas seleccionar a otro cliente?", "Aceptar", function () { CofenatProfesionales.idClienteSeleccionadoCita = 0; CofenatProfesionales.functionsAutoCompelteCliente.clienteSeleccionado(); caller.autocomplete("option", "clear")(); confirm.modal("hide"); }, "Cancelar", null, "", "Aviso"); } } Utils.preparaAutoCompleteBuscarCliente( "btnCrearClienteNoEncontrado", "frmNCC_buscarCliente", CofenatProfesionales.functionsAutoCompelteCliente.abreAnadirCliente, CofenatProfesionales.functionsAutoCompelteCliente.clienteSeleccionado, CofenatProfesionales.functionsAutoCompelteCliente.cambiarCliente, "CofenatProfesionales.idClienteSeleccionadoCita", "ajax/Profesionales.buscarClientes.php"); $(".btnCrearClienteNuevo").makeTagLink(CofenatProfesionales.functionsAutoCompelteCliente.abreAnadirCliente); $(".btnReservarCita").makeTagLink(function () { if(!CofenatProfesionales.profesionalSeleccionado) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar la cita, primero debes elegir al profesional al que quieres visitar.", true) return; } let idServicio = $("#frmNCC_servicio").val()*1; if(!CofenatProfesionales.lastEventSelected) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar una cita, primero debes seleccionar la hora de la cita. Pulsa sobre la hora que te gustaria asistir y luego podrás ajustar los minutos.", true) return; } if(idServicio === 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar la cita, primero debes elegir seleccionar el servicio.", true) return; } if(!CofenatProfesionales.idClienteSeleccionadoCita) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar la cita, primero debes elegir seleccionar el cliente.", true) return; } let recurrente = $("input[name=frmRH_recurrenteActivo]:checked").val()*1; let queryString = "fecha="+CofenatProfesionales.lastEventSelected.startStr +"&timeZone="+CofenatProfesionales.fullCalendar.getOption("timeZone") +"&idServicio="+idServicio +"&idCliente="+CofenatProfesionales.idClienteSeleccionadoCita +"&idProfesional="+CofenatProfesionales.profesionalSeleccionado +"&avisoSMS="+($("#gpcita_avisoSMS").is(":checked") ? 1 : 0) +"&recurrenteActivo="+recurrente +"&recurrenteTipo="+$("#frmRH_recurrenteTipo").selectpicker("val")*1 +"&recurrenteNumero="+$("#frmRH_recurrenteNumRepeticiones").val()*1 +"&tipoUbicacion="+$("#frmNCC_tipoUbicacion").val()*1; if(recurrente === 1) { Utils.sendStandardAjax("null", "ajax/Profesionales.preparaCitaRecurrente.php?"+queryString, {"successCallback": "data-location"}); } else { Utils.sendStandardAjax("null", "ajax/Profesionales.nuevaCita.php?"+queryString, {"successCallback": "data-location"}); } }); CofenatProfesionales.prepareSmallCalendar("calendario", undefined, initialDateInSecs); CofenatProfesionales.prepararFullCalendar(idProfesional, profesional, administrador, undefined, initialDate, horasCentro, CofenatProfesionales.FC_NUEVA); CofenatProfesionales.initBloqueReservarHora("frmNCC_servicio", 0); $("#frmNCC_servicio").on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { CofenatProfesionales.showHideProfesionales(serviciosXprofesional); }); $("input[name='profesional']").change( function() { CofenatProfesionales.setProfesionalSelected($(this).val()); $(".servicioProfesional").html($("label[for='profesional"+$(this).val()+"']").text()); CofenatProfesionales.prepararFullCalendar($(this).val(), profesional, administrador, undefined, CofenatProfesionales.currentDateSM.toISOString(), horasCentro, CofenatProfesionales.FC_NUEVA); }); CofenatProfesionales.setProfesionalSelected($("input[name='profesional']:checked").val()); CofenatProfesionales.showHideProfesionales(serviciosXprofesional); }); }; static showHideProfesionales(serviciosXprofesional) { CofenatProfesionales.setProfesionalSelected(null); $(".contieneProfesionales .form-check").each(function () { let idServicio = $('#frmNCC_servicio').selectpicker("val")*1; let idProfesional = $(this).attr("data-idProfesional")*1; let numProfesionales = Object.keys(serviciosXprofesional[idServicio]).length; let profesionalVisible = Object.keys(serviciosXprofesional[idServicio].filter(x => x === idProfesional)).length >= 1; $(this).toggle(profesionalVisible); if(numProfesionales === 1 && profesionalVisible) { let input = $(this).find("input"); input.prop('checked', true); input.trigger("change"); } }); if(CofenatProfesionales.lastEventSelected) { CofenatProfesionales.lastEventSelected.remove(); CofenatProfesionales.lastEventSelected = null; } }; static setProfesionalSelected(idProfesional) { if(idProfesional == null) { $(".contieneProfesionales .form-check input:checked").prop('checked', false); } CofenatProfesionales.profesionalSeleccionado = idProfesional; }; static abrirBloqueReservarHora(fechaHora, tipo) { CofenatProfesionales.bloqueReservadoModal = ClassBlockUI.abrirBlockUIEstandar("bloqueReservarHora", null, "Reservar Hora"); $("#frmRH_hora").val(fechaHora); if(tipo === CofenatProfesionales.FC_NUEVA) { $(".citaRecurrente").show(); } }; lastDateSelected = new Date(); lastEventSelected = null; static initBloqueReservarHora(idServicio, idCitaActual, duracionServicio) { let duracionInicial = duracionServicio; $(document).ready(function () { let form = $("#frmRservarHora"); let validacion=form.validate({showLabels: false}); $("input[name=frmRH_recurrenteActivo]").click(function(){ if($(this).val()*1 === 1) { $(".datosRecurrenteActivo").show(); } else { $(".datosRecurrenteActivo").hide(); } }); $("#frmRH_hora").mask("99:99"); $("#btnConfirmarHuecoHora").makeTagLink(function () { if(!form.valid()) { ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revise los campos porque se han detectado los siguientes errores

"+validacion.invalidMessages("
"), true, false, "modalStandardMed"); return; } let nuevaHora = $("#frmRH_hora").val().split(":"); CofenatProfesionales.lastDateSelected.hour(nuevaHora[0]); CofenatProfesionales.lastDateSelected.minute(nuevaHora[1]); duracionServicio = duracionInicial !== undefined ? duracionInicial : $("#"+idServicio+" option:selected").attr("data-duracion") event = { id:idCitaActual, title: 'Nueva Cita - Pendiente de confirmar', start: CofenatProfesionales.lastDateSelected.format('YYYY-MM-DDTHH:mm:ssZZ'), end: CofenatProfesionales.lastDateSelected.clone().add(duracionServicio, 'minutes').format('YYYY-MM-DDTHH:mm:ssZZ'), constraint: 'available_hours' }; let validInbusinessHour = false; let eventRange = moment.range(event.start, event.end); //rangosValidos = []; for(var index in CofenatProfesionales.businessHourProfesionales[CofenatProfesionales.profesionalSeleccionado]) { for(var index2 in CofenatProfesionales.businessHourProfesionales[CofenatProfesionales.profesionalSeleccionado][index]["daysOfWeek"]) { if(CofenatProfesionales.lastDateSelected.isoWeekday() === CofenatProfesionales.businessHourProfesionales[CofenatProfesionales.profesionalSeleccionado][index]["daysOfWeek"][index2]) { let startTime = CofenatProfesionales.businessHourProfesionales[CofenatProfesionales.profesionalSeleccionado][index]["startTime"].split(":"); let startTimeTemp = CofenatProfesionales.lastDateSelected.clone(); startTimeTemp.hour(startTime[0]); startTimeTemp.minute(startTime[1]); let endTime = CofenatProfesionales.businessHourProfesionales[CofenatProfesionales.profesionalSeleccionado][index]["endTime"].split(":"); let endTimeTemp = CofenatProfesionales.lastDateSelected.clone(); endTimeTemp.hour(endTime[0]); endTimeTemp.minute(endTime[1]); //endTimeTemp.subtract($("#"+idServicio+" option:selected").attr("data-duracion")*1-1, "m"); //rangosValidos.push(moment.range(startTime, endTime)); let tempMoment = moment.range(startTimeTemp, endTimeTemp); if(tempMoment.contains(eventRange)) { validInbusinessHour = true; } } } } if(!validInbusinessHour) { ClassBlockUI.abrirBlockUIEstandarMensaje("La hora seleccionada esta fuera del horario laboral del profesional el día seleccionado.", true); } else if(CofenatProfesionales.lastDateSelected.isBefore(moment())) { ClassBlockUI.abrirBlockUIEstandarMensaje("No puedes seleccionar una hora que ya ha pasado.", true); } else if(CofenatProfesionales.isOverlappingEvents(CofenatProfesionales.fullCalendar.getEvents(), event, CofenatProfesionales.lastEventSelected)) { ClassBlockUI.abrirBlockUIEstandarMensaje("No puedes elegir esta hora porque se solapa con otra cita, asegurate que tu cita no coincide con la cita de otro usuario.", true); } else { if(CofenatProfesionales.lastEventSelected) { CofenatProfesionales.lastEventSelected.remove(); } CofenatProfesionales.lastEventSelected = CofenatProfesionales.fullCalendar.addEvent(event); CofenatProfesionales.bloqueReservadoModal.modal("hide"); } }) }); } static isOverlappingEvents(events, currentEvent, secondEvent) { for(var i in events){ if (!events.hasOwnProperty(i)) { continue; } if(secondEvent && events[i].id === secondEvent.id) { continue; } if(events[i].id*1 !== currentEvent.id*1){ let range1 = moment.range(events[i].startStr, events[i].endStr); let range2 = moment.range(currentEvent.startStr, currentEvent.endStr); if(range1.overlaps(range2)) { return true; } } } return false; } static isOverlappingRanges(rangList) { if(rangList.length < 2) { return false; } let previous = rangList[0]; for(var i in rangList){ if (!rangList.hasOwnProperty(i)) { continue; } if(i*1 === 0) { continue; } if(rangList[i].start < previous.end) { return true; //Orden incorrecto } if(rangList[i].overlaps(previous)) { return true; //Overlaps } previous = rangList[i]; } return false; } currentDateSM = null; static prepareSmallCalendar(id, autoSetDay, initialDate, minDate, onSelect) { if(id === undefined) { id = "calendario"; } if(minDate === undefined) { minDate = new Date(); } if(autoSetDay === undefined || autoSetDay === true) { autoSetDay = new Date(); } if(initialDate !== undefined) { autoSetDay = new Date(initialDate*1000); autoSetDay.setHours(12, 0, 0); autoSetDay.setMilliseconds(0); } if(onSelect === undefined) { onSelect = function(dates) { if(Object.keys(dates).length > 0 && CofenatProfesionales.currentDateSM.getTime() !== dates[0].getTime()) { CofenatProfesionales.currentDateSM = dates[0]; if(CofenatProfesionales.fullCalendar) { CofenatProfesionales.fullCalendar.gotoDate( dates[0].getTime() ); } let fechaNueva = dates[0].toLocaleString('es', {weekday:'long'})+ ", "+dates[0].getDate() +" de "+ dates[0].toLocaleString('es', {month:'long'}); $(".servicioFecha").html(fechaNueva); } }; } CofenatProfesionales.currentDateSM = new Date(); CofenatProfesionales.currentDateSM.setHours(12, 0, 0); CofenatProfesionales.currentDateSM.setMilliseconds(0); let calendario = $('#'+id); calendario.datepick( { onSelect: onSelect, minDate: minDate, defaultDate: autoSetDay, selectDefaultDate: autoSetDay, prevText: "<", nextText: ">" }); $.datepick.commands.today.action = function(inst) { $.datepick.showMonth(this); calendario.datepick('setDate', new Date()); } if(autoSetDay) { calendario.datepick('setDate', autoSetDay); } } fullCalendar = null; bloqueReservadoModal = null; numCitasRecurrentesGuardadas = 0; numCitasRecurrentesCargadas = 0; numCitasRecurrentesProblematicas = 0; static prepararFullCalendar(idProfesional, profesional, administrador, idCitaActual, initialDate, horasCentro, tipo, queryString) { queryString = queryString !== undefined ? queryString : ""; idCitaActual = idCitaActual !== undefined ? idCitaActual : 0; initialDate = initialDate !== undefined ? initialDate : new Date().toISOString(); let right = ""; if(profesional && tipo !== CofenatProfesionales.FC_CITA_RECURRENTE) { right = 'today dayGridMonth timeGridWeek timeGridDay'; if(administrador) { right = 'today dayGridMonth timeGridWeek resourceTimeGridDay profesionales'; } } else { right = ''; } CofenatProfesionales.fullCalendar = new FullCalendar.Calendar($("#calendar")[0], { //timeZone: "America/New_York", timeZone: "Europe/Madrid", schedulerLicenseKey: "0221401364-fcs-1627045855", customButtons: { profesionales: { text: 'Profesionales', click: CofenatProfesionales.showProfesionales } }, headerToolbar: { left: profesional ? 'prev,next today' : '', center: profesional ? 'title' : '', right: right, }, views: { resourceTimeGridDay: { // name of view titleFormat:{ year: 'numeric', month: 'long', day: 'numeric', weekday: 'long' } } }, dayMaxEvents: 3, locale: 'es', slotMinTime: horasCentro["gpc_minHora"], slotMaxTime: horasCentro["gpc_maxHora"], allDaySlot: false, initialDate: initialDate, initialView: profesional ? 'dayGridMonth' : 'timeGridDay', nowIndicator: true, businessHours: CofenatProfesionales.businessHourProfesionales[idProfesional], viewDidMount: function (info) { if(info.view.type === "dayGridMonth") { CofenatProfesionales.fullCalendar.setOption("selectConstraint", null); } else { CofenatProfesionales.fullCalendar.setOption("selectConstraint", "businessHours"); } }, eventSources: [ { url: "ajax/Profesionales.agenda.php?idCita="+idCitaActual+queryString, method: 'POST', extraParams: { "CSRF": CSRF, "idProfesional": administrador ? "-1" : idProfesional, }, failure: function() { ClassBlockUI.abrirBlockUIEstandarMensaje("Se ha producido un error al cargar la agenda, por favor intentelo de nuevo más tarde", true); }, success: function(content, xhr) { CofenatProfesionales.numCitasRecurrentesGuardadas = 0; CofenatProfesionales.numCitasRecurrentesCargadas = 0; CofenatProfesionales.numCitasRecurrentesProblematicas = 0; CofenatProfesionales.numCitasRecurrentesFuturas = 0; let currentUnixtime = new Date().getTime()/1000; for(var index in content) { if(content[index]["overlaps"]*1 === 1) { CofenatProfesionales.numCitasRecurrentesProblematicas++; } if(content[index]["recurrente"]*1 === 1) { CofenatProfesionales.numCitasRecurrentesCargadas++; } if(content[index]["idCitaRecurrente"] && content[index]["recurrente"]*1 === 0) { CofenatProfesionales.numCitasRecurrentesGuardadas++; if(content[index]["unixtime"] > currentUnixtime) { CofenatProfesionales.numCitasRecurrentesFuturas++; } } } if(CofenatProfesionales.mostrarSoloCitaRecurrente == 0) { $(".numOverlaps").html(CofenatProfesionales.numCitasRecurrentesProblematicas); $(".numCitasRecurrentes").html(CofenatProfesionales.numCitasRecurrentesCargadas); if(queryString.indexOf("idCitaRecurrente") !== -1 && CofenatProfesionales.numCitasRecurrentesCargadas === 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("Parece que se han borrado las citas recurrentes que estaba preparando porque han pasado mas de 45 min sin confirmarlas, deberá de empezar de nuevo el proceso", true); } } else { $(".numCitasRecurrentes").html(CofenatProfesionales.numCitasRecurrentesGuardadas); $(".numCitasFuturas").html(CofenatProfesionales.numCitasRecurrentesFuturas); } return content.eventArray; } }, ], eventTimeFormat: { // like '14:30:00' hour: '2-digit', minute: '2-digit', //omitZeroMinute: true, //second: '2-digit', meridiem: false }, resources: function(fetchInfo, successCallback, failureCallback) { // Filter resources by whether their id is in visibleResourceIds. var filteredResources = []; if(CofenatProfesionales.resourceData) { filteredResources = CofenatProfesionales.resourceData.filter(function(x) { return CofenatProfesionales.visibleResourceIds.indexOf(x.id) !== -1; }); } successCallback(filteredResources); }, editable: false, selectable: true, loading: function (bool) { if(bool) { $(".loadingText").remove(); } }, selectConstraint: "businessHours", eventConstraint: "businessHours", eventOrder: 'numOrder,start', dateClick: function(info) { CofenatProfesionales.lastDateSelected = moment(info.dateStr); //CofenatProfesionales.lastDateSelected = moment(info.date).add(-1, "hours"); let jsEvent = info.jsEvent; let view = info.view; if($(jsEvent.target).hasClass("fc-non-business")) { return; } CofenatProfesionales.init(); if(tipo === CofenatProfesionales.FC_AGENDA || tipo ===CofenatProfesionales.FC_CITA_RECURRENTE) { return; } if(!CofenatProfesionales.profesionalSeleccionado) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar la cita, primero debes elegir al profesional al que quieres visitar.", true) return; } if (moment().format('YYYY-MM-DD') === CofenatProfesionales.lastDateSelected.format('YYYY-MM-DD') || CofenatProfesionales.lastDateSelected.isAfter(moment())) { // This allows today and future date // alert('Date: ' + date._d.getTimezoneOffset()); //alert( date._d.getHours()); let fechaCita = CofenatProfesionales.lastDateSelected/1000; //fechaCita = fechaCita + date._d.getTimezoneOffset()*60; if(!$(jsEvent.target).is('input')) { CofenatProfesionales.abrirBloqueReservarHora(CofenatProfesionales.lastDateSelected.format('HH:mm'), tipo); } //$(".citasCalendario").unbind("click").makeTagLink(function(){alert("click event")}); } else { // Else part is for past dates return false; } }, eventClick: function(info ){ let infoCalendar = $('.infoCalendar'); if(infoCalendar.length !== 1 ) { return; } let event = info.event; let jsEvent = info.jsEvent; let view = info.view; // let parent = $(jsEvent.target).closest(view.type === "dayGridMonth" ? '.fc-daygrid-event' : '.fc-timegrid-event'); //let parent = $(jsEvent.target).closest('.fc-timegrid-event'); if(!parent.hasClass("tooltipstered")) { let colorClass = $(".trabajador[data-idProfesional="+event.extendedProps.idProfesional+"]").attr("data-color"); colorClass = colorClass !== undefined ? colorClass : "ownAgenda"; var tipoPago; var pagadoPendiente; switch (event.extendedProps.estadoPago) { default: { tipoPago = ""; pagadoPendiente = false; break; } case 3: { tipoPago = "Gratis"; pagadoPendiente = true; break; } case -2: { tipoPago = "En proceso de pago por TPV"; pagadoPendiente = false; break; } case -3: { tipoPago = "Pendiente de confirmar la cita recurrente"; pagadoPendiente = false; break; } case 1: { tipoPago = "Pagado por TPV-Tarjeta"; pagadoPendiente = true; break; } case -1: { tipoPago = "Pendiente de pago en el centro
Marcar como pagado
".replace(/%idCita%/ig, event.extendedProps.idCita); pagadoPendiente = false; break; } case 2: { if(event.extendedProps.facturado) { tipoPago = "Pagado en el centro"; } else { tipoPago = "Pagado en el centro
Hacer Factura
".replace(/%idCita%/ig, event.extendedProps.idCita); } pagadoPendiente = true; break; } case -4: { tipoPago = "Pendiente de confirmar la Pre-Reserva
Confirmar
Cancelar
".replace(/%idCita%/ig, event.extendedProps.idCita); pagadoPendiente = false; break; } case -5: { tipoPago = "Pendiente de pago pre-reserva externo a la plataforma
Marcar como pagado
".replace(/%idCita%/ig, event.extendedProps.idCita); pagadoPendiente = false; break; } case -6: { if(event.extendedProps.facturado) { tipoPago = "Pre-Reserva pagada"; } else { tipoPago = "Pre-Reserva pagada
Hacer Factura
".replace(/%idCita%/ig, event.extendedProps.idCita); } pagadoPendiente = true; break; } } let videoChat = event.extendedProps.cliente; //let childToolTipstered = null; let content = $("
"); var extraClass = (event.extendedProps.recurrente*1 || event.extendedProps.idCitaRecurrente) ? "tooltipsterCitaRecurrente" : ""; content.addClass("infoCalendarOnToolTipster "+extraClass); content.append( infoCalendar.html().replace("%btnVideoChat%", (event.extendedProps.modalidad === 2 && event.extendedProps.pagada) === "true" ? "btnVideoChat" : "d-none") .replace("%idVideoChat%", event.extendedProps.idVideoChat) .replace("%colorClass%", colorClass+" active") .replace(/%idCita%/ig, event.extendedProps.idCita) .replace("%tipoServicio%", event.extendedProps.tipoServicio) .replace("%pagada%", event.extendedProps.pagada) .replace("%1%", event.extendedProps.servicio+"
"+videoChat) .replace("%2%", event.extendedProps.fecha) .replace("%3%", event.extendedProps.profesional) .replace("%4%", (event.extendedProps.tipoServicio === 0 || event.extendedProps.tipoServicio === 1) ? "d-none" : (pagadoPendiente ? "formaPagoPagado" : "formaPagoPendiente")) .replace("%5%", tipoPago) .replace("%esEditable%", event.extendedProps.esEditable==="true" ? "editable" : "bloqueada") ); content.data("event", event); parent.tooltipster({ autoClose: false, hideOnClick: false, contentAsHTML: true, trigger:"custom", content: content, minWidth: 320, maxWidth: 320, theme: "infoCalendarToolTipster", interactive: true, functionReady: function(instance, helper){ $(helper.tooltip).find(".btnCalendarButtonClose").unbind("click").bind("click", function () { parent.tooltipster("hide"); //instance.close(); }); $(helper.tooltip).data("instance", instance); $(".infoCalendarOnToolTipster .tooltipOver").tooltipster({multiple: true, animation: 'grow',interactive:true, position:'bottom'}); }, functionBefore: function(origin, continueTooltip) { $.each($.tooltipster.instances(), function(i, instance){ instance.close(); }); }/*, functionAfter: function(origin) { }*/ }); } parent.tooltipster("show"); }, height: "100%" }); let body = $("body"); body.on( "click", ".btnMarcarComoPagado", function() { let idCita = $(this).attr("data-id"); Utils.sendStandardAjax(null, "ajax/Profesionales.marcarCitaPagada.php?idCita="+idCita, {"successCallback": "data-location"}); }); body.on( "click", ".btnHacerFactura", function() { let idCita = $(this).attr("data-id"); Utils.sendStandardAjax(null, "ajax/Profesionales.realizarFactura.php?idCita="+idCita, {"successCallback": "data-location"}); }); body.on( "click", ".btnConfirmarPreReserva", function() { let idCita = $(this).attr("data-id"); let tipo = $(this).attr("data-tipo"); let requireConfirm = $(this).attr("data-requireConfirm"); if(requireConfirm) { let confirm = ClassBlockUI.abrirBlockUIConfirm(requireConfirm, "Aceptar", function(){ confirm.modal("hide"); CofenatProfesionales.sendMarcaPreReservaConfirmadaBorrada(idCita, tipo); },"Cancelar"); } else { CofenatProfesionales.sendMarcaPreReservaConfirmadaBorrada(idCita, tipo); } }); body.on( "click", ".btnMarcarComoPagadoPreReserva", function() { let idCita = $(this).attr("data-id"); Utils.sendStandardAjax(null, "ajax/Profesionales.marcaPreReservaPagada.php?idCita="+idCita, {"successCallback": "data-location"}); }); CofenatProfesionales.fullCalendar.render(); } static sendMarcaPreReservaConfirmadaBorrada(idCita, tipo) { Utils.sendStandardAjax(null, "ajax/Profesionales.marcaPreReservaConfirmadaBorrada.php?idCita="+idCita+"&tipo="+tipo, {"successCallback": "data-location"}); } static showProfesionales() { $(".listadoProfesionales ").removeClass("d-none"); } resourceData = []; visibleResourceIds = []; //https://stackoverflow.com/questions/48427602/dynamically-toggle-resource-column-visibility static toggleResource(resourceId) { var index = CofenatProfesionales.visibleResourceIds.indexOf(resourceId); if (index !== -1) { CofenatProfesionales.visibleResourceIds.splice(index, 1); } else { CofenatProfesionales.visibleResourceIds.push(resourceId); } CofenatProfesionales.fullCalendar.refetchResources(); //$('#calendar').fullCalendar('refetchResources'); } static initDatosProfesional() { CofenatProfesionales.initPublicListadoSC(); $(document).ready(function () { $(".btnGuardarCambiosCuenta").makeTagLink(function(){Utils.sendStandardAjax("frmEditarProfesionalCuenta", "ajax/Profesionales.editarCuenta.php")}); $(".btnActualizarContrasena").makeTagLink(function(){Utils.sendStandardAjax("frmEditarProfesionalPassword", "ajax/Profesionales.actualizarPassword.php")}); $("#frmSubirFotoFile").change(function(){CofenatProfesionales.fotoPerfilChange("imagenPerfilToCrop", $(this).attr("id"), 1)}); $("#btnGuardarCrop").unbind("click").click(CofenatProfesionales.guardarFotosUsuario); }); } static reactivaClicksListadoStandard(settings, tableId){ let selectConfiguration = $("#"+tableId+"_length label"); selectConfiguration.addClass("inputIcon"); if(selectConfiguration.find("i").length === 0) { selectConfiguration.append(''); } //eval("tabla = tabla"+tableId); let datatable = $("#"+tableId).dataTable().api(); let numPages = datatable.page.info().pages; if (numPages < 2) { $("#"+tableId+"_wrapper .paginationFooter").addClass("d-none"); $("#"+tableId+"_wrapper .dataTables_info").addClass("d-none"); } $(".tooltipStandard").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom'}); $(".tooltipStandardHTML").not(".tooltipstered").tooltipster({animation: 'grow',interactive:true, position:'bottom', contentAsHTML: true}); } static reactivaClicksListadoHistoricoVisitas(settings, esMovil) { tablatablaHistorialVisitas.columns.adjust().responsive.recalc(); if(esMovil) { tablatablaHistorialVisitas.columns( [0,2,3,4,5,6,7] ).visible( false ); tablatablaHistorialVisitas.columns( [1] ).visible( true ); } else { tablatablaHistorialVisitas.columns( [0, 1] ).visible( false ); tablatablaHistorialVisitas.columns( [2,3,4,5,6,7] ).visible( true ); } CofenatProfesionales.reactivaClicksListadoStandard(settings, 'tablaHistorialVisitas'); $(".btnEditarHistorialCita").unbind("click").makeTagLink(function(){CofenatProfesionales.abreEditarHistorialCliente($(this).attr("data-idCita"))}); } static reactivaClicksListadoFacturas(settings, esMovil) { CofenatProfesionales.reactivaClicksListadoStandard(settings, 'tablaFacturas'); tablatablaFacturas.columns.adjust().responsive.recalc(); if(esMovil) { tablatablaFacturas.columns( [0,2,3,4,5,6,7,8,9] ).visible( false ); tablatablaFacturas.columns( [1] ).visible( true ); } else { tablatablaFacturas.columns( [0, 1] ).visible( false ); tablatablaFacturas.columns( [2,3,4,5,6,7,8,9] ).visible( true ); } } static reactivaClicksListadoClientes(settings, esMovil) { CofenatProfesionales.reactivaClicksListadoStandard(settings, 'tablaClientes'); tablatablaClientes.columns.adjust().responsive.recalc(); if(esMovil) { tablatablaClientes.columns( [0,2,3,4,5,6,7] ).visible( false ); tablatablaClientes.columns( [1] ).visible( true ); } else { tablatablaClientes.columns( [0, 1] ).visible( false ); tablatablaClientes.columns( [2,3,4,5,6,7] ).visible( true ); } } static reactivaClicksListadoProfesionales(settings, esMovil) { CofenatProfesionales.reactivaClicksListadoStandard(settings, 'tablaProfesionales'); tablatablaProfesionales.columns.adjust().responsive.recalc(); if(esMovil) { tablatablaProfesionales.columns( [0,2,3,4,5,6,7,8,9] ).visible( false ); tablatablaProfesionales.columns( [1] ).visible( true ); } else { tablatablaProfesionales.columns( [0, 1] ).visible( false ); tablatablaProfesionales.columns( [2,3,4,5,6,7,8,9] ).visible( true ); } } static reactivaClicksListadoCitasReservadas(settings, esMovil) { CofenatProfesionales.reactivaClicksListadoStandard(settings, 'tablaReservas'); tablatablaReservas.columns.adjust().responsive.recalc(); if(esMovil) { tablatablaReservas.columns( [0,2,3,4,5,6,7,8,9] ).visible( false ); tablatablaReservas.columns( [1] ).visible( true ); } else { tablatablaReservas.columns( [0, 1] ).visible( false ); tablatablaReservas.columns( [2,3,4,5,6,7,8,9] ).visible( true ); } } static initHistoricoVisitas() { $(document).ready(function () { }) } static abreEditarHistorialCliente(idCita) { Utils.sendStandardAjax(null, "ajax/Profesionales.datosCita.php?idCita="+idCita, {"successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true); return; } ClassBlockUI.abrirBlockUIEstandar("bloqueHistorialCliente", null, "Editar Historial", "modal-xl"); let fecha = new Date(); fecha.setTime(data["gpcita_fechaHoraInicioCita"]*1000); $("#frmHC_idCita").val(idCita); $("#frmHC_servicio").val(data["nombreCurso"]); $("#frmHC_fecha").val(fecha.getDate()+"/"+((fecha.getMonth() + 101).toString().substring(1, 3))+"/"+fecha.getFullYear()); $("#frmHC_hora").val(fecha.getHours()+":"+fecha.getMinutes()); $("#frmHC_profesional").val(data["nombreProfesional"]); $("#frmHC_comentarios").val(data["gpcita_comentarios"]); if(Object.keys(data["adjuntos"]).length > 1) { $(".contenedorFicheros").show(); } else { $(".contenedorFicheros").hide(); } for(let index in data["adjuntos"]) { let documento = data["adjuntos"][index]; let adjunto = "
"+documento["gpcd_orgName"]+" "+documento["gpcd_orgName"]+"
"; $(".ficherosSubidos").append(adjunto); $(".contenedorFicheros").show(); } }}); } static ajustaOpcionesDiasBloqueo() { if($("input[name='frmEBH_variosDia']:checked").val()*1 === 0) { $(".variosDias").hide(); } else { $(".variosDias").show(); } } static initBloqueoHorario() { $(document).ready(function () { CofenatProfesionales.init(); $("#frmEBH_dia").mask("99/99/99"); $("#frmEBH_diaFin").mask("99/99/99"); $("#frmEBH_horaInicio").mask("99:99"); $("#frmEBH_horaFin").mask("99:99"); $("input[name='frmEBH_variosDia']").change(function () { CofenatProfesionales.ajustaOpcionesDiasBloqueo() }); CofenatProfesionales.ajustaOpcionesDiasBloqueo(); $("#btnGuardaHoraBloqueo").makeTagLink(function(){Utils.sendStandardAjax("frmEditarBloqueoHorario", "ajax/Profesionales.guardarBloqueoHorario.php")}); }); } static abrirBloqueoHorario(idCita, dateInit) { idCita = idCita !== undefined ? idCita : -1; $("#frmEBH_idCita").val(idCita); if(idCita > 0 ) { Utils.sendStandardAjax(null, "ajax/Profesionales.datosCita.php?idCita="+idCita, {"successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true); return; } ClassBlockUI.abrirBlockUIEstandar("bloqueoHorario", null, "Elegir bloqueo", "modal-lg"); let initDate = new Date((data["gpcita_fechaHoraInicioCita"]-data["offset"])*1000); let endDate = new Date((data["gpcita_fechaHoraFinCita"]-data["offset"])*1000); let selectProfesional = $("#frmEBH_profesional"); selectProfesional.selectpicker('val', data["gpcita_idProfesional"]); selectProfesional.selectpicker("refresh"); if(data["gpcita_variosDias"]) { $("input[name='frmEBH_variosDia'][value=1]").prop("checked", true); } else { $("input[name='frmEBH_variosDia'][value=0]").prop("checked", true); } CofenatProfesionales.ajustaOpcionesDiasBloqueo(); $("#frmEBH_mensaje").val(data["gpcita_comentarios"]); $("#frmEBH_dia").val((initDate.getDate()+"").padStart(2, '0')+"/"+(((initDate.getMonth()+1)+"").padStart(2, '0'))+"/"+(initDate.getFullYear()+"").substring(2,4)); $("#frmEBH_diaFin").val((endDate.getDate()+"").padStart(2, '0')+"/"+(((initDate.getMonth()+1)+"").padStart(2, '0'))+"/"+(initDate.getFullYear()+"").substring(2,4)); $("#frmEBH_horaInicio").val((initDate.getHours()+"").padStart(2, '0')+":"+(initDate.getMinutes()+"").padStart(2, '0')); $("#frmEBH_horaFin").val( (endDate.getHours()+"").padStart(2, '0')+":"+( endDate.getMinutes()+"").padStart(2, '0')); }}); } else { let initDate = new Date(dateInit); $("#frmEBH_dia").val((initDate.getDate()+"").padStart(2, '0')+"/"+(((initDate.getMonth()+1)+"").padStart(2, '0'))+"/"+(initDate.getFullYear()+"").substring(2,4)); ClassBlockUI.abrirBlockUIEstandar("bloqueoHorario", null, "Elegir bloqueo", "modal-lg"); } } static initAgenda(idProfesional, propietario, businessHourProfesionales, horasCentro) { CofenatProfesionales.init(); $(document).ready(function () { CofenatProfesionales.businessHourProfesionales = businessHourProfesionales; $(".btnNuevoBloqueo").makeTagLink(function(){ CofenatProfesionales.abrirBloqueoHorario(undefined, CofenatProfesionales.lastDateSelected ? CofenatProfesionales.lastDateSelected.toISOString() : new Date().toISOString()); }); $(".btnNuevaCita").makeTagLink(function(){ if(CofenatProfesionales.lastDateSelected) { window.location = $(this).attr("href") + "?initialDate="+CofenatProfesionales.lastDateSelected.toISOString(); return false; } }); CofenatProfesionales.resourceData = []; CofenatProfesionales.visibleResourceIds = []; $(".trabajador").each(function () { CofenatProfesionales.resourceData.push({ id: $(this).attr("data-idprofesional"), title: $(this).html(), "eventClassNames":$(this).attr("data-color")+" active showOnAgenda" }); CofenatProfesionales.visibleResourceIds.push($(this).attr("data-idprofesional")); $(this).makeTagLink(function () { $(this).toggleClass("active"); CofenatProfesionales.toggleResource($(this).attr("data-idprofesional")); }); }); CofenatProfesionales.prepararFullCalendar(idProfesional, true, propietario, undefined, undefined, horasCentro, CofenatProfesionales.FC_AGENDA); CofenatProfesionales.prepareSmallCalendar(); let body = $("body"); body.on("click", ".btnVerCitasRecurrentes", function() { let event = $(this).closest(".infoCalendarOnToolTipster").data("event"); window.location = "/saludnatural24horas/profesional/mostrar-cita-multiple.html?idCitaRecurrente="+event.extendedProps.idCitaRecurrente+"&idCita="+event.extendedProps.idCita; }); body.on("click", ".btnCalendarButtonEdit", function() { let idCita = $(this).closest(".infoCalendarButtons").attr("data-idCita")*1; let tipoServicio = $(this).closest(".infoCalendarButtons").attr("data-tipoServicio")*1; if(tipoServicio === 0) { CofenatProfesionales.abrirBloqueoHorario(idCita); } else { window.location = "/saludnatural24horas/profesional/editar-cita.html?idCita="+idCita; } }); body.on("click", ".btnVideoChat", function() { let idCita = $(this).closest(".infoCalendarButtons").attr("data-idCita")*1; let idVideoChat = $(this).closest(".infoCalendarButtons").attr("data-idVideoChat")*1; let tipoServicio = $(this).closest(".infoCalendarButtons").attr("data-tipoServicio")*1; window.location = "/saludnatural24horas/videoChat.html?id="+idVideoChat }); body.on("click", ".btnCalendarButtonDelete", function() { let idCita = $(this).closest(".infoCalendarButtons").attr("data-idCita"); let pagada = $(this).closest(".infoCalendarButtons").attr("data-pagada") === "true"; CofenatProfesionales.borrarCita(idCita, pagada); }); }); }; static borrarCita(idCita, pagada) { let confirm = ClassBlockUI.abrirBlockUIConfirm(pagada ? "¿Estas seguro de que deseas borrar esta cita? Nota: ¡¡ESTA CITA ESTÁ PAGADA Y NO SE DEVOLVERÁ EL IMPORTE!!" : "¿Estas seguro de que deseas borrar esta cita?", "Aceptar", function(){ confirm.modal("hide"); let tooltipsterInstance = $('.infoCalendarButtons[data-idCita='+idCita+']').closest(".tooltipster-base").data("instance"); Utils.sendStandardAjax(null, "ajax/Profesionales.borrarCita.php?idCita="+idCita, {"successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"] >= 0) { tooltipsterInstance.close(); window.location = window.location; } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true) } }}); },"Cancelar"); } mostrarSoloCitaRecurrente = 0; static initMostrarCitaMultiple(idProfesional, businessHourProfesionales, horasCentro, initialDate, queryString) { CofenatProfesionales.mostrarSoloCitaRecurrente = 1; CofenatProfesionales.init(); $(document).ready(function () { CofenatProfesionales.businessHourProfesionales = businessHourProfesionales; CofenatProfesionales.resourceData = []; CofenatProfesionales.visibleResourceIds = []; $(".trabajador").each(function () { CofenatProfesionales.resourceData.push({ id: $(this).attr("data-idprofesional"), title: $(this).html(), "eventClassNames":$(this).attr("data-color")+" active showOnAgenda" }); CofenatProfesionales.visibleResourceIds.push($(this).attr("data-idprofesional")); $(this).makeTagLink(function () { $(this).toggleClass("active"); CofenatProfesionales.toggleResource($(this).attr("data-idprofesional")); }); }); CofenatProfesionales.prepararFullCalendar(idProfesional, true, false, undefined, initialDate, horasCentro, CofenatProfesionales.FC_CITA_RECURRENTE, queryString); let body = $("body"); body.on("click", ".btnCalendarRecurrenteButtonEdit", function() { CofenatProfesionales.abrirCambiarCitaRecurrente($(this).closest(".infoCalendarOnToolTipster").data("event")); }); body.on("click", ".btnCalendarButtonDelete", function() { let idCita = $(this).closest(".infoCalendarButtons").attr("data-idCita"); let pagada = $(this).closest(".infoCalendarButtons").attr("data-pagada") === "true"; CofenatProfesionales.borrarCita(idCita, pagada); }); body.on("click", ".btnCalendarButtonEdit", function() { let idCita = $(this).closest(".infoCalendarButtons").attr("data-idCita")*1; window.location = "/saludnatural24horas/profesional/editar-cita.html?idCita="+idCita; }); body.on("click", ".btnCancelarCitasFuturas", function() { let confirm = ClassBlockUI.abrirBlockUIConfirm("¿Estas seguro de que deseas borrar TODAS las citas recurrentes futuras (desde hoy a la hora actual incluidas)?", "Aceptar", function () { let espere = Utils.sendStandardAjax(null, "ajax/Profesionales.cancelarCitaRecurrenteFuturas.php?dummy"+queryString, {"successCallback": function (data, textStatus, XMLHttpRequest){ if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { window.location = "/saludnatural24horas/profesional/agenda.html"; } }}); }, "Cancelar", null, "", "Aviso"); return; let idCita = $(this).closest(".infoCalendarButtons").attr("data-idCita")*1; window.location = "/saludnatural24horas/profesional/editar-cita.html?idCita="+idCita; }); $(".btnCancelarCitaMultiple").click(function(){ let confirm = ClassBlockUI.abrirBlockUIConfirm("¿Esta seguro de que desea cancelar este cita recurrente?", "Aceptar", function () { let espere = Utils.sendStandardAjax(null, "ajax/Profesionales.cancelarCitaRecurrente.php?dummy"+queryString, {"successCallback": function (data, textStatus, XMLHttpRequest){ if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { window.location = "/saludnatural24horas/profesional/agenda.html"; } }}); }, "Cancelar", null, "", "Aviso"); }); $(".btnConfirmarCitaMultiple").click(function(){ if(CofenatProfesionales.numCitasRecurrentesProblematicas > 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("No puede confirmas las citas recurrentes porque todavía hay %1% cita/s con solapamientos o problemas".replace("%1%", CofenatProfesionales.numCitasRecurrentesProblematicas), true, false, "modalStandardMed"); return; } if(CofenatProfesionales.numCitasRecurrentesCargadas === 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("Parece que se han borrado las citas recurrentes que estaba preparando porque han pasado mas de 45 min sin confirmarlas, deberá de empezar de nuevo el proceso", true, false, "modalStandardMed"); return; } let espere = Utils.sendStandardAjax(null, "ajax/Profesionales.confirmarCitaRecurrente.php?dummy"+queryString, {"successCallback": function (data, textStatus, XMLHttpRequest){ if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { window.location = "/saludnatural24horas/profesional/agenda.html"; } }}); }); }); }; static initConfirmarCitaMultiple(idProfesional, businessHourProfesionales, horasCentro, queryString) { CofenatProfesionales.mostrarSoloCitaRecurrente = 0; CofenatProfesionales.init(); $(document).ready(function () { CofenatProfesionales.businessHourProfesionales = businessHourProfesionales; CofenatProfesionales.resourceData = []; CofenatProfesionales.visibleResourceIds = []; $(".trabajador").each(function () { CofenatProfesionales.resourceData.push({ id: $(this).attr("data-idprofesional"), title: $(this).html(), "eventClassNames":$(this).attr("data-color")+" active showOnAgenda" }); CofenatProfesionales.visibleResourceIds.push($(this).attr("data-idprofesional")); $(this).makeTagLink(function () { $(this).toggleClass("active"); CofenatProfesionales.toggleResource($(this).attr("data-idprofesional")); }); }); CofenatProfesionales.prepararFullCalendar(idProfesional, true, false, undefined, undefined, horasCentro, CofenatProfesionales.FC_CITA_RECURRENTE, queryString); let body = $("body"); body.on("click", ".btnCalendarRecurrenteButtonEdit", function() { CofenatProfesionales.abrirCambiarCitaRecurrente($(this).closest(".infoCalendarOnToolTipster").data("event")); }); $(".btnCancelarCitaMultiple").click(function(){ let confirm = ClassBlockUI.abrirBlockUIConfirm("¿Esta seguro de que desea cancelar este cita recurrente?", "Aceptar", function () { let espere = Utils.sendStandardAjax(null, "ajax/Profesionales.cancelarCitaRecurrente.php?dummy"+queryString, {"successCallback": function (data, textStatus, XMLHttpRequest){ if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { window.location = "/saludnatural24horas/profesional/agenda.html"; } }}); }, "Cancelar", null, "", "Aviso"); }); $(".btnConfirmarCitaMultiple").click(function(){ if(CofenatProfesionales.numCitasRecurrentesProblematicas > 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("No puede confirmas las citas recurrentes porque todavía hay %1% cita/s con solapamientos o problemas".replace("%1%", CofenatProfesionales.numCitasRecurrentesProblematicas), true, false, "modalStandardMed"); return; } if(CofenatProfesionales.numCitasRecurrentesCargadas === 0) { ClassBlockUI.abrirBlockUIEstandarMensaje("Parece que se han borrado las citas recurrentes que estaba preparando porque han pasado mas de 45 min sin confirmarlas, deberá de empezar de nuevo el proceso", true, false, "modalStandardMed"); return; } let espere = Utils.sendStandardAjax(null, "ajax/Profesionales.confirmarCitaRecurrente.php?dummy"+queryString, {"successCallback": function (data, textStatus, XMLHttpRequest){ if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { window.location = "/saludnatural24horas/profesional/agenda.html"; } }}); }); }); }; static initBloqueCambiarHoraRecurrente() { $(document).ready(function () { let form = $("#frmCambiarHoraRecurrente"); let validacion=form.validate({showLabels: false}); $("#frmCHR_dia").mask("99/99/9999"); $("#frmCHR_hora").mask("99:99"); $("#btnConfirmarCambioHora").makeTagLink(CofenatProfesionales.enviarCambiarCitaRecurrente); }); }; static enviarCambiarCitaRecurrente() { CofenatProfesionales.modalCambiarHoraRecurrente.hide(); let espere = Utils.sendStandardAjax("frmCambiarHoraRecurrente", "ajax/Profesionales.cambiaCitaRecurrente.php?idCita="+CofenatProfesionales.eventoRecurrenteSeleccionado.extendedProps.idCita, {"successCallback": function (data, textStatus, XMLHttpRequest){ if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { /* CofenatProfesionales.eventoRecurrenteSeleccionado.setStart(data["dateTime"], true); CofenatProfesionales.eventoRecurrenteSeleccionado.setProp('classNames', data["class"]); */ CofenatProfesionales.fullCalendar.refetchEvents(); espere.hide(); } }}); } eventoRecurrenteSeleccionado = null; modalCambiarHoraRecurrente = null; static abrirCambiarCitaRecurrente(event){ CofenatProfesionales.eventoRecurrenteSeleccionado = event; $("#frmCHR_dia").val(("00"+event.start.getDate()).slice(-2) + "/"+("00"+(event.start.getMonth()+1)).slice(-2)+ "/"+event.start.getFullYear()); $("#frmCHR_hora").val(("00"+event.start.getHours()).slice(-2)+":"+("00"+event.start.getMinutes()).slice(-2)); CofenatProfesionales.modalCambiarHoraRecurrente = ClassBlockUI.abrirBlockUIEstandar("bloqueCambiarHoraRecurrente", null, "Seleccione el nuevo día y/o hora", "modal-xl"); }; static initFichaCliente(idCliente, idProvincia) { $(document).ready(function () { let body = $("body"); $("#frmFC_gpcl_fechaNacimiento").mask("99/99/9999"); body.on("change", ".grupoFile input", function () { if($(this).val()) { let parent = $(this).closest(".grupoFile"); let contenedor = $(".contenedorGrupoFile"); let clone = parent.clone(); contenedor.append(clone) let num = (contenedor.attr("data-num"))*1+1; contenedor.attr("data-num", num); clone.attr("data-id", num); let input = clone.find("input"); input.attr("name", "frmHC_file_"+num); input.attr("id", "frmHC_file_"+num); input.val(""); } }); body.on("click", ".btnDeleteInput", function () { let parent = $(this).closest(".grupoFile"); parent.remove(); }); Utils.preparaLugar(28, idProvincia, 0, undefined, "frmFC_gpcl_idProvincia", "frmFC_gpcl_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); $(".btnGuardarCambiosHistorialCliente").makeTagLink(function () { Utils.sendStandardAjax("frmEditarHistorial", "ajax/Profesionales.guardarHistorialCliente.php", {"prepareFormData":function () { let formData = new FormData($("#frmEditarHistorial")[0]); let eliminados = []; $(".ficheroSubido.eliminarFichero").each(function() { eliminados.push($(this).attr("data-id")); }); formData.append("eliminados", eliminados); return formData; }}); }); $(".btnGuardarCliente").makeTagLink(function () { let esperePorFavor = Utils.sendStandardAjax("frmFichaCliente", "ajax/Profesionales.guardarCambiosCliente.php?idCliente="+idCliente, {"successCallback":function(data, textStatus, jqXHR) { $.notify( { title: "", message: data["error_message"], }, { type: data["error_number"]<0 ? 'danger' : 'info', placement: { from: "top", align: "center" }, delay: 10000 }); esperePorFavor.modal("hide"); }}); }); body.on("click", ".btnDeleteUploaded", function() { let parent = $(this).closest(".ficheroSubido"); parent.toggleClass("eliminarFichero"); }); }); }; static cambiarAvisoSMS(avisoSMS, idCita) { let esperePorFavor = Utils.sendStandardAjax("null", "ajax/Profesionales.modificarCitaSMS.php?idCita="+idCita+"&avisoSMS="+avisoSMS, {"successCallback":function(data, textStatus, jqXHR) { $.notify( { title: "", message: data["error_message"], }, { type: data["error_number"]<0 ? 'danger' : 'info', placement: { from: "top", align: "center" }, delay: 10000 }); esperePorFavor.modal("hide"); }}); } static initEditarCita(idCita, idProfesional, fechaHoraInicioCita, businessHourProfesionales, horasCentro){ CofenatProfesionales.init(); $(document).ready(function () { $("#gpcita_avisoSMS").change(function(){CofenatProfesionales.cambiarAvisoSMS($(this).is(":checked") ? 1 : 0, idCita)}); CofenatProfesionales.businessHourProfesionales = businessHourProfesionales; $(".btnCambiarCita").makeTagLink(function () { if(!CofenatProfesionales.lastEventSelected) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar una cita, primero debes seleccionar la hora de la cita. Pulsa sobre la hora que te gustaria asistir y luego podrás ajustar los minutos.", true) return; } Utils.sendStandardAjax("null", "ajax/Profesionales.modificarCita.php?idCita="+idCita+"&fecha="+CofenatProfesionales.lastEventSelected.startStr+"&idProfesional="+CofenatProfesionales.profesionalSeleccionado, {"successCallback": "data-location"}); }); $("input[name='profesional']").change( function() { CofenatProfesionales.setProfesionalSelected($(this).val()); $(".servicioProfesional").html($("label[for='profesional"+$(this).val()+"']").text()); CofenatProfesionales.prepararFullCalendar($(this).val(), undefined, undefined, idCita, CofenatProfesionales.currentDateSM.toISOString(), horasCentro, CofenatProfesionales.FC_EDITAR); }); CofenatProfesionales.setProfesionalSelected($("input[name='profesional']:checked").val()); CofenatProfesionales.prepareSmallCalendar(undefined, undefined, fechaHoraInicioCita); CofenatProfesionales.prepararFullCalendar(idProfesional, undefined, undefined, idCita, new Date(fechaHoraInicioCita*1000).toISOString(), horasCentro, CofenatProfesionales.FC_EDITAR); CofenatProfesionales.initBloqueReservarHora("frmECC_servicio", idCita); }); } static initCondiciones() { $(document).ready(function () { $(".btnAceptarCondiciones").makeTagLink(function () { Utils.sendStandardAjax(null, "ajax/Profesional.aceptarCondiciones.php", {"successCallback": "data-location"}); }) }); }; static initServicios(urlAjax) { $(document).ready(function () { $('#frmES_profesionales').dropdown(); $("#frmES_importe").bind("keydown", function(e) { $(this).val($(this).val().replace(",", ".")); }); $(".btnGuardarServicio").makeTagLink(function () { Utils.sendStandardAjax("frmEditarServicio", "ajax/Centros.guardarServicioCurso.php?tipo=2"); }) $(".btnNuevoServicio").makeTagLink(function () { ClassBlockUI.abrirBlockUIEstandar("bloqueServicio", null, "Nuevo Servicio", "modal-xl"); $("#frmEditarServicio").trigger("reset"); let profesionales = $('#frmES_profesionales'); profesionales.dropdown("clear"); let idCursoServicio = $("#frmES_idCursoServicio"); idCursoServicio.val(-1); }); let campoTipoPago = $("#frmES_admitePagoPresencialAdelantado"); let campoTipoUbicacion = $("#frmES_tipoUbicacion"); campoTipoUbicacion.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { CofenatProfesionales.onChangeTipoUbicacionServicios(campoTipoUbicacion, campoTipoPago); }); }); $("body").on("change", "#activarDesactivarOcultos", function() { let mostrar = $(this).is(":checked") ? -1 : 1; tablatablaServiciosCursos.ajax.url(urlAjax+mostrar).load(); }); }; static reactivaClicksListadoServiciosCursos(settings, tipo, esMovil) { tablatablaServiciosCursos.columns.adjust().responsive.recalc(); if(esMovil) { tablatablaServiciosCursos.columns( tipo === 1 ? [0,2,3,4,5,6,7,8,9,10] : [0,2,3,4,5,6,7] ).visible( false ); tablatablaServiciosCursos.columns( [1] ).visible( true ); } else { tablatablaServiciosCursos.columns( [0, 1] ).visible( false ); tablatablaServiciosCursos.columns( tipo === 1 ? [2,3,4,5,6,7,8,9,10] : [2,3,4,5,6,7] ).visible( true ); } CofenatProfesionales.reactivaClicksListadoStandard(settings, 'tablaServiciosCursos'); $(".btnEditarServicioCurso").unbind("click").makeTagLink(function(){CofenatProfesionales.abreEditarServicioCurso($(this).attr("data-gpcs_idCursoServicio"), tipo)}); $(".btnDuplicarServicioCurso").unbind("click").makeTagLink(function(){CofenatProfesionales.abreEditarServicioCurso($(this).attr("data-gpcs_idCursoServicio"), tipo, true)}); $(".btnEliminarActivarServicio").unbind("click").makeTagLink(function(){CofenatProfesionales.confirmaEliminarActivarServicioCurso($(this).attr("data-gpcs_idCursoServicio"), $(this).attr("data-accion"), $(this).attr("data-gpcs_tipo"))}); } static confirmaEliminarActivarServicioCurso(idServicio, accion, tipo) { let mensajeServicio = accion == 0 ? "Va a eliminar un servicio, ¿Desea continuar?" : "Va a activar un servicio, ¿Desea continuar?"; let mensajeCurso = accion == 0 ? "Va a ocultar un curso, ¿Desea continuar?" : "Va a activar un curso, ¿Desea continuar?"; let mensaje = tipo*1 === 1 ? mensajeCurso : mensajeServicio; ClassBlockUI.abrirBlockUIConfirm(mensaje, "Aceptar", function(){CofenatProfesionales.activarEliminarServicioCurso(idServicio, accion, tipo)}, "Cancelar") } static activarEliminarServicioCurso(idServicio, accion, tipo) { var successCallback = function (data, textStatus, XMLHttpRequest) { $(".modal").modal("hide"); if (data["error_number"] < 0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined); tablatablaServiciosCursos.ajax.reload(); } }; Utils.sendStandardAjax(null, "ajax/Profesionales.activarOcultarServicio.php?id="+idServicio+"&accion="+accion+"&tipo="+tipo, { successCallback: successCallback }); } static abreEditarServicioCurso(idServicioCurso, tipo, duplicar) { Utils.sendStandardAjax(null, "ajax/Profesionales.datosServicioCurso.php?idServicioCurso="+idServicioCurso, {"successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true); return; } let tituloExtra = duplicar !== undefined ? " - Duplicar" : ""; ClassBlockUI.abrirBlockUIEstandar(tipo === 2 ? "bloqueServicio" : "bloqueCurso", null, (tipo === 2 ? "Editar Servicio" : "Editar Curso")+tituloExtra, "modal-xl"); let prefix = tipo === 2 ? "frmES" : "frmEC"; $("#"+prefix+"_idCursoServicio").val(duplicar !== undefined ? -1 : data["gpcs_idCursoServicio"]); $("#"+prefix+"_titulo").val(data["titulo"]); $("#"+prefix+"_descripcion").val(data["descripcion"]); $("#"+prefix+"_duracion").val(data["gpcs_duracion"]); $("#"+prefix+"_importe").val(data["gpcs_importe"]); let campoTipoUbicacion = $("#"+prefix+"_tipoUbicacion"); campoTipoUbicacion.selectpicker('val', data["gpcs_tipoUbicacion"]); campoTipoUbicacion.selectpicker("refresh"); if(tipo === 2) { let campoTipoPago = $("#"+prefix+"_admitePagoPresencialAdelantado"); campoTipoPago.selectpicker('val', data["gpcs_admitePagoPresencialAdelantado"]); campoTipoPago.selectpicker("refresh"); CofenatProfesionales.onChangeTipoUbicacionServicios(campoTipoUbicacion, campoTipoPago); let profesionales = $('#frmES_profesionales'); profesionales.dropdown('setup menu', { values: data["profesionalesCentro"] }); if(data["numProfesionalesActuales"] > 0) { for(let index in data["profesionalesActuales"]) { profesionales.dropdown("set selected", data["profesionalesActuales"][index]); }; profesionales.dropdown('refresh'); } } else { $("#"+prefix+"_numPlazas").val(data["gpcs_numAsistentes"]); $("#"+prefix+"_fecha").val(duplicar !== undefined ? "" : data["gpcs_fechaInicio"]); $("#"+prefix+"_hora").val(duplicar !== undefined ? "" : data["gpcs_horaInicio"]); let idProfesional = Object.keys(data["profesionalesActuales"])[0]; let campoProfesional = $("#"+prefix+"_profesional"); if(idProfesional !== undefined) { campoProfesional.selectpicker('val', idProfesional); } else { campoProfesional.val('default'); } campoProfesional.selectpicker("refresh"); if(duplicar === undefined) { campoTipoUbicacion.attr("disabled", true); campoTipoUbicacion.selectpicker("refresh"); } } }}); } static onChangeTipoUbicacionServicios(campoTipoUbicacion, campoTipoPago){ let value = campoTipoUbicacion.selectpicker('val'); let permitePagoPresencial = campoTipoUbicacion.find("option[value="+value+"]").attr("data-permitePagoPresencial")*1; if(permitePagoPresencial===0) { campoTipoPago.attr("disabled", true); } else { campoTipoPago.removeAttr("disabled"); } campoTipoPago.selectpicker("refresh"); } static onChangeTipoUbicacionCursos(campoTipoUbicacion, campoTipoPago){ let value = campoTipoUbicacion.selectpicker('val'); let campoNumPlazas = $("#frmEC_numPlazas"); if(value*1 !== 1 ) { campoNumPlazas.attr("max", campoNumPlazas.attr("data-max")); } else { campoNumPlazas.removeAttr("max"); } } static initCursos() { $(document).ready(function () { $("#frmEC_fecha").mask("99/99/99"); $("#frmEC_hora").mask("99:99"); $("#frmES_importe").bind("keydown", function(e) { $(this).val($(this).val().replace(",", ".")); }); $(".btnGuardarCurso").makeTagLink(function () { Utils.sendStandardAjax("frmEditarCurso", "ajax/Centros.guardarServicioCurso.php?tipo=1"); }) $(".btnNuevoCurso").makeTagLink(function () { ClassBlockUI.abrirBlockUIEstandar("bloqueCurso", null, "Nuevo Curso", "modal-xl"); $("#frmEditarCurso").trigger("reset"); let profesionales = $('#frmEC_profesional'); profesionales.selectpicker("val", ""); profesionales.selectpicker("refresh"); let idCursoServicio = $("#frmEC_idCursoServicio"); idCursoServicio.val(-1); let campoTipoUbicacion = $("#frmEC_tipoUbicacion"); campoTipoUbicacion.removeAttr("disabled"); campoTipoUbicacion.selectpicker("refresh"); }); let campoTipoUbicacion = $("#frmEC_tipoUbicacion"); campoTipoUbicacion.on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) { CofenatProfesionales.onChangeTipoUbicacionCursos(campoTipoUbicacion); }); }); }; static loadCustomRules(){ if(CofenatProfesionales.CR_Loaded === true) { return; } CofenatProfesionales.CR_Loaded = true; $.validator.addMethod("dropdownOneOrMoreSelected", function(value, element) { return value !== "" && value.split(",").length>0; }, "Debes seleccionar al menos un elemento."); //REQUIRE:Moment-Range $.validator.addMethod("validacionHorario", function(value, element) { let allOk = true; $(".itemHorario").each(function () { let intervalosDia = []; $(this).find(".itemHora:visible").each(function () { let tempMoment = moment.range ( moment($(this).find(".horaInicio").val(), "HH:mm"), moment($(this).find(".horaFin").val(), "HH:mm") ); intervalosDia.push(tempMoment) }); allOk &= !CofenatProfesionales.isOverlappingRanges(intervalosDia); }); return allOk; }, "El horario no es válido, por favor repásalo"); jQuery.validator.addMethod("dateES", function(value, element) { return this.optional(element) || Utils.isValidDateES(value, element, this) }, "
Escriba una fecha del formato DD/MM/AAAA (dia, mes y año)" ); jQuery.validator.addMethod("hora", function (value, element) { return this.optional(element) || /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/.test(value); }, "
Escriba una hora valida (00:00 a 23:59)" ); } static initModificarProfesional(serviciosActuales) { $(document).ready(function () { CofenatProfesionales.loadCustomRules(); let body = $("body"); let servicios = $("#frmEP_servicios"); $(".inputHora").mask("99:99"); servicios.dropdown(); body.on("click", ".btnAgregarHorario", function() { var date = new Date(); let numDiaSemana = $(this).closest(".itemHorario").attr("data-numDia"); let grupo = $(this).closest(".horariosExtra"); grupo.append("
- x
Añadir horario
".replace(/%numDiaSemana%/g, numDiaSemana).replace(/%1%/g, date.getTime()*1000+date.getMilliseconds())); $(".inputHora").mask("99:99"); if(grupo.find(".itemHora").length===1) { grupo.addClass("horarioUnico"); } else { grupo.removeClass("horarioUnico"); } }); body.on("change", ".checkboxSlider", function() { let grupoPrincipal = $(this).closest(".itemHorario"); let grupo = grupoPrincipal.find(".horariosExtra"); if($(this).is(":checked")) { grupo.removeClass("sinHorario"); } else { grupo.addClass("sinHorario"); } }); body.on("click", ".btnEliminaHorario", function() { let grupo = $(this).closest(".horariosExtra"); $(this).closest(".itemHora").remove(); if(grupo.find(".itemHora").length===1) { grupo.addClass("horarioUnico"); } else { grupo.removeClass("horarioUnico"); } }); if(Object.keys(serviciosActuales).length > 0) { $.each( serviciosActuales, function( element, index ) { servicios.dropdown("set selected", element); }); servicios.dropdown('refresh'); } $(".btnGuardarProfesional").makeTagLink(CofenatProfesionales.guardarProfesional); }); }; static guardarProfesional() { Utils.sendStandardAjax("frmEditarProfesional", "ajax/Centros.guardaProfesional.php", { "opcionesValidacion": {showLabels: false, ignore:""}, "prepareFormData": function () { let formData = new FormData($("#frmEditarProfesional")[0]); $(".horaInicio:hidden").each(function(){ formData.delete($(this).attr("id")); }); $(".horaFin:hidden").each(function(){ formData.delete($(this).attr("id")); }); return formData; }, "successCallback": "data-location" }); } static initMiPlan() { $(document).ready(function () { $(".btnCambiarPlan").makeTagLink(function () { let idPlan = $(this).closest(".itemPlan").attr("data-id"); let confirm = ClassBlockUI.abrirBlockUIConfirm("¿Estás seguro de que deseas cambiar el plan? Al pulsar en confirmar, nos enviaras una solicitud para que nos pongamos en contacto contigo para confirmar el cambio.", "Aceptar", function(){ confirm.modal("hide"); Utils.sendStandardAjax(null, "ajax/Centros.solicitudCambiarPlan.php?idPlanNuevo="+idPlan); },"Cancelar"); }); }) }; static initPublicListadoSC() { $(document).ready(function () { $(".btnAbrirMasInfo").each(function () { let texto = $(this).closest(".itemServicio").find(".itemServicioDescripcion").html(); if(texto.length===0) { $(this).hide(); return; } $(this).makeTagLink(function () { ClassBlockUI.abrirBlockUIEstandarMensaje( texto, {}, undefined, "modalStandard scrollbar420", $(this).closest(".itemServicio").find(".itemServicioTitulo").html()); }); }); }); }; businessHourProfesionales = null; static initReservarCita(idProfesional, duracionServicio, action, businessHourProfesionales, horasCentro) { CofenatProfesionales.init(); $(document).ready(function (){ CofenatProfesionales.businessHourProfesionales = businessHourProfesionales; CofenatProfesionales.prepareSmallCalendar(); CofenatProfesionales.prepararFullCalendar(idProfesional, false, false, undefined, undefined, horasCentro, CofenatProfesionales.FC_RESERVAR); $("input[name='profesional']").change( function() { CofenatProfesionales.setProfesionalSelected($(this).val()); $(".servicioProfesional").html($("label[for='profesional"+$(this).val()+"']").text()); CofenatProfesionales.prepararFullCalendar($(this).val(), false, false, 0, CofenatProfesionales.currentDateSM.toISOString(), horasCentro, CofenatProfesionales.FC_RESERVAR); }); CofenatProfesionales.setProfesionalSelected($("input[name='profesional']:checked").val()); CofenatProfesionales.initBloqueReservarHora(undefined, undefined, duracionServicio); $(".btnConfirmarReserva").makeTagLink(function () { if(!CofenatProfesionales.lastEventSelected) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar una cita, primero debes seleccionar la hora de la cita. Pulsa sobre la hora que te gustaria asistir y luego podrás ajustar los minutos.", true) return; } if(!CofenatProfesionales.profesionalSeleccionado) { ClassBlockUI.abrirBlockUIEstandarMensaje("Para poder reservar la cita, primero debes elegir al profesional al que quieres visitar.", true) return; } window.location = "confirmar-reserva.html?action="+action+"&fecha="+CofenatProfesionales.lastEventSelected.startStr+"&idProfesional="+CofenatProfesionales.profesionalSeleccionado; }); }); }; static initEditarCentro(idProvinciaActual, idLocalidadActual) { $(document).ready(function(){ Utils.preparaLugar(28, idProvinciaActual, idLocalidadActual, undefined, "frmEDC_gpc_idProvincia", "frmEDC_gpc_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); CofenatProfesionales.loadCustomRules(); $("#frmEDC_gpc_minHora").mask("99:99"); $("#frmEDC_gpc_maxHora").mask("99:99"); $(".btnGuardarCambiosCentro").makeTagLink(function(){Utils.sendStandardAjax("frmEditarDatosCentro", "ajax/Centros.editarDatos.php")}) $("#frmSubirFotoFile").change(function(){CofenatProfesionales.fotoPerfilChange("imagenPerfilToCrop", $(this).attr("id"), 2)}); $("#btnGuardarCrop").unbind("click").click(CofenatProfesionales.guardarFotosUsuario); }); }; validacionOlvido = null; static initOlvido() { $(document).ready(function () { CofenatProfesionales.validacionOlvido = $("#frmEnviarOlvido").validate({showLabels: false}); $("#form_email").pressEnter(function () { Utils.sendStandardAjax("frmEnviarOlvido", "ajax/Usuarios.olvidarContrasena.php")}); $(".btnEnviarEmailOlvidoPass").makeTagLink(function () { Utils.sendStandardAjax("frmEnviarOlvido", "ajax/Usuarios.olvidarContrasena.php")}); }); }; static guardaClaveOlvidoPass() { let form = $("#form_olvido"); if(!form.valid()) { ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revise los campos porque se han detectado los siguientes errores

"+validacion.invalidMessages("
"), true, false, "modalStandardMed"); return; } var opciones= { url: "ajax/Usuarios.guardaClave.php?CSRF="+CSRF, type: "POST", dataType : "json", data: form.serialize(), success: function(data, textStatus, XMLHttpRequest) { if (data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, false, "modalStandardMed"); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, function(){window.location="/index.php"}, "modalStandardMed"); } } }; $.ajax(opciones); ClassBlockUI.abrirBlockUIEsperePorFavor(); }; static initOlvidoPaso2() { $(document).ready( function () { $(".btnEnviarNuevoPass").makeTagLink(function () { Utils.sendStandardAjax("frmEnviarOlvidoPaso2", "ajax/Usuarios.guardarContrasena.php", {"successCallback": "data-location"})}); $("#password2").pressEnter(function () { Utils.sendStandardAjax("frmEnviarOlvidoPaso2", "ajax/Usuarios.guardarContrasena.php", {"successCallback": "data-location"})}); let opciones_validacion= { showLabels: false, rules: { fEOP2_pass: { required: true, minlength: 6 }, fEOP2_pass2: { equalTo: "#fEOP2_pass" } } }; $("#frmEnviarOlvidoPaso2").validate(opciones_validacion); }); }; static initReactivaCuenta() { $(document).ready(function () { CofenatProfesionales.validacionOlvido = $("#frmReactivaCuenta").validate({showLabels: false}); $("#fRC_email").pressEnter(function () { Utils.sendStandardAjax("frmReactivaCuenta", "ajax/Usuarios.reactivaCuenta.php")}); $(".btnEnviarEmailReactivaCuenta").makeTagLink(function () { Utils.sendStandardAjax("frmReactivaCuenta", "ajax/Usuarios.reactivaCuenta.php")}); }); }; static initReactivaCuentaPaso2() { $(document).ready( function () { $(".btnEnviarReactivaCuenta").makeTagLink(function () { Utils.sendStandardAjax("frmReactivarCuentaPaso2", "ajax/Usuarios.reactivaCuentaPassword.php", {"successCallback": "data-location"})}); $("#fRCP2_pass").pressEnter(function () { Utils.sendStandardAjax("frmReactivarCuentaPaso2", "ajax/Usuarios.reactivaCuentaPassword.php", {"successCallback": "data-location"})}); let opciones_validacion= { showLabels: false, rules: { fRCP2_pass: { required: true, minlength: 6 }, fRCP2_pass2: { equalTo: "#fRCP2_pass" } } }; $("#frmReactivarCuentaPaso2").validate(opciones_validacion); }); }; static initNuevoCliente() { $(document).ready(function(){ let esperePorFavor = null; Utils.preparaLugar(28, 0, 0, undefined, "frmEC_idProvincia", "frmEC_localidad", "Selecciona una Provincia", "Selecciona una Localidad", "Cargando", "es", true); $("#frmEC_fechaNacimiento").mask("99/99/9999"); $("#btnNuevoCliente").makeTagLink(function(){esperePorFavor = Utils.sendStandardAjax("frmEditarCliente", "ajax/Profesionales.guardarCliente.php", {"successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true); return; } let item = {"cliente": data["items"][0]["cliente"], "ultimaVisita": data["items"][0]["ultimaVisita"], "zonaHoraria": data["items"][0]["zonaHoraria"], "observaciones": data["items"][0]["observaciones"]}; let id = data["items"][0]["id"]; CofenatProfesionales.idClienteSeleccionadoCita = id; CofenatProfesionales.functionsAutoCompelteCliente.clienteSeleccionado(item); CofenatProfesionales.blockNuevoCliente.modal("hide"); esperePorFavor.modal("hide"); }})}); }); }; cropContainerPreload = null; static fotoPerfilChange(idCroppicContainer, inputFileId, tipo) { var input = $("#"+inputFileId)[0]; if (input.files && input.files[0]) { var filename = input.files[0].name; var size = input.files[0].size; var extension = (filename.substring(filename.lastIndexOf('.') + 1, filename.length) || filename).toLowerCase(); var errores = ""; if (extension !== "png" && extension !== "jpg" && extension !== "jpeg" && extension !== "webp") { errores += "
El fichero debe ser de tipo JPG, PNG o WebP"; } if (size > 12582912) { errores += "
El fichero debe tener un tamaño máximo de 12Mb"; } if (errores === "") { let img = $("Img"); img.on("load", function (e) { let minWidth = tipo === 1 ? 400 : 400; let minHeight = tipo === 1 ? 300 : 400; if(this.width < minWidth || this.height < minHeight) { CofenatProfesionales.errorSeleccionarFoto(inputFileId, "Debes subir una imagen de un tamaño mínimo de %1% x %2% píxeles".replace("%1%", minWidth).replace("%2%", minHeight)); } else { CofenatProfesionales.cropFoto(idCroppicContainer, inputFileId, tipo); } }) img.on("error", function (e) { CofenatProfesionales.errorSeleccionarFoto(inputFileId, "El fichero debe ser de tipo JPG, PNG o WebP"); }) } else { CofenatProfesionales.errorSeleccionarFoto(inputFileId, errores); } } } static errorSeleccionarFoto (inputFileId, errores) { $(".modalAutoHide").modal("hide"); $("#"+inputFileId).val(""); ClassBlockUI.abrirBlockUIEstandarMensaje("Se ha producido un error al seleccionar la imagen.
"+errores, true, undefined); } static cropFoto(idCroppicContainer, inputFileId, tipo) { let image = $('#'+inputFileId)[0].files[0]; let file = URL.createObjectURL(image); let titulo; let texto; if(tipo === 1) { titulo = "Cambia tu foto de perfil"; texto = "Vamos a preparar tu foto de perfil, centra la imagen, haz zoom si lo necesitas y pulsa el botón guardar cuando este lista"; } else { titulo = "Foto del centro"; texto = "Vamos a preparar la foto de tu centro, centra la imagen, haz zoom si lo necesitas y pulsa el botón guardar cuando este lista"; } //Mostramos el cropic, guardar y btnCerrar let modal = ClassBlockUI.abrirBlockUIEstandar("bloqueSubirFoto", function(){ modal.modal("hide"); if($(".modal").length>0){$("body").addClass("modal-open")} $("#"+inputFileId).val(""); }, titulo); $("#bloqueSubirFoto .fraseModal").html(texto); var croppicContainerPreloadOptions = { cropUrl:tipo === 1 ? 'ajax/Profesionales.cambiarFotoPerfil.php?CSRF='+CSRF : 'ajax/Centros.cambiarFotoPerfil.php?CSRF='+CSRF, loadPicture: file/*+"?"+new Date().getTime()*/, rotateFactor: 90, scaleToFill: false, doubleZoomControls: false, enableMousescroll: false, loaderHtml:'
', //onError: function(errormsg){ console.log('onError:'+errormsg) }, //onBeforeImgUpload: function(){ console.log('onBeforeImgUpload') }, onAfterImgUpload: function() { $(".cropControlReset").hide(); $(".cropControlCrop").hide(); }, onBeforeImgCrop: function(){$("#btnGuardarCrop").hide(); }, onAfterImgCrop: CofenatProfesionales.onCropped, cropData: { "image": image } } if(CofenatProfesionales.cropContainerPreload!=null) { CofenatProfesionales.cropContainerPreload.destroy() } CofenatProfesionales.cropContainerPreload = new Croppic(idCroppicContainer, croppicContainerPreloadOptions); } static onCropped(response) { $("#frmSubirFotoFile").val(""); $(".modal").modal("hide"); if(response["error_number"]>=0) { $(".cropControlRemoveCroppedImage").hide(); $(".conFotoSubida img").attr("src", response.url+"?"+new Date().getTime()); $(".contieneFotoPerfil").removeClass("no-foto"); } else { ClassBlockUI.abrirBlockUIEstandarMensaje(response["error_message"], true, undefined); } } static guardarFotosUsuario () { $(".cropControlCrop").trigger("click"); $("#btnGuardarCrop").show(); } static recargarPagina(secs) { setTimeout(function () { window.location = window.location; }, secs*1000) }; static initFacturas() { $(document).ready(function () { CofenatProfesionales.prepareSmallCalendar("caledarDesde", false, undefined, new Date(0), CofenatProfesionales.cambiarFechaFacturas); CofenatProfesionales.prepareSmallCalendar("caledarHasta", false, undefined, new Date(0), CofenatProfesionales.cambiarFechaFacturas); $(".btnDescargarFacturas").click(function () { let esperePorFavor = Utils.sendStandardAjax(null, "ajax/Centros.descargarFacturas.php", { "prepareFormData": function () { let formData = new FormData(); formData.append("caledarDesde", $("#caledarDesde").val()); formData.append("caledarHasta", $("#caledarHasta").val()); Utils.appendFormDataFromDatatable(tablatablaFacturas, formData); return formData; }, "successCallback": function (data, textStatus, XMLHttpRequest) { if(data["error_number"]<0) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true); return; } if(data["idFilename"] !== undefined) { esperePorFavor.modal("hide"); window.location = "descargarZIP.php?idFilename="+data["idFilename"]; } }, }); }); }); }; static cambiarFechaFacturas(dates) { var fechaInicio = $("#caledarDesde").val(); var fechaFin = $("#caledarHasta").val(); let url = 'ajax/Centros.listadoFacturas.php?CSRF='+CSRF+'&caledarDesde='+fechaInicio+'&caledarHasta='+fechaFin; tablatablaFacturas.ajax.url(url).load(); } static initInicio() { $(document).ready(function(){ let form = $("#frmPruebaVideoChat"); let validacionVideoChat=form.validate({showLabels: false}); $(".btnSolicitarAcceso").makeTagLink(function() { var extraMsg = ""; if(!$("#politicaContacto").is(":checked")) { extraMsg += "Debe aceptar la Política de privacidad de Datos"; } if (!form.valid() || extraMsg !== "") { ClassBlockUI.abrirBlockUIEstandarMensaje("Por favor revise los campos porque se han detectado los siguientes errores:

"+validacionVideoChat.invalidMessages().replace(/\r\n/g, "
")+extraMsg, true, undefined, "modalStandard"); //marcamos los div.form-group.bmd-form-group en rojo $("#frmPruebaVideoChat input.error").each(function(){ $(this).parent().addClass("error"); }); return; } else { $(".form-control-b.error").each(function(){ $(this).removeClass("error"); }); } var returned = $.ajax( { url: "../ajax/VideoChat.solicitarAcceso.php", type: "POST", dataType : "json", data : form.serialize(), success: function(data) { ClassBlockUI.abrirBlockUIEstandarMensaje(data["error_message"], true, undefined, "modalStandard"); } }); ClassBlockUI.abrirBlockUIEsperePorFavor(); }); }); }; static initNotificaciones() { $(document).ready(function () { $("#btnAbrirNotificaciones").click(function() { $("#notificaciones").addClass("open"); $(".overlay").addClass("active"); Utils.sendStandardAjax(null, "ajax/Profesionales.actualizarAperturaNotificaciones.php", {"successCallback":"", "esperePorFavor":false, "disableErrors":true}); }); $("#cerrarNotificaciones").click(function() { $("#notificaciones").removeClass("open"); $("body").removeClass("notificaciones-open"); $(".overlay").removeClass("active"); }); }); }; }