{"version":3,"file":"default-src_app_modules_appointment-wizard_pages_appointment-wizard_appointment-wizard_compon-1df3d9.js","mappings":"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","sources":["./src/app/core/services/calendar-device/calendar-device.service.ts","./src/app/core/services/common-wizard/common-wizard.service.ts","./src/app/modules/appointment-wizard/components/calendar/calendar.component.ts","./src/app/modules/appointment-wizard/pages/appointment-wizard/appointment-wizard.component.ts","./src/app/modules/appointment-wizard/pages/appointment-wizard/appointment-wizard.functions.ts","./src/app/shared/models/idsStepsAppointmentWizard.model.ts","./src/app/shared/state/appointment-wizard-date/appointment-wizard-date.model.ts","./src/app/shared/state/appointment-wizard-date/appointment-wizard-date.query..ts","./src/app/shared/state/appointment-wizard-date/appointment-wizard-date.service.ts","./src/app/shared/state/appointment-wizard-date/appointment-wizard-date.store.ts","./src/app/shared/state/appointment-wizard-settings/appointment-wizard-settings.query.ts","./src/app/shared/state/appointment-wizard-settings/appointment-wizard-settings.service.ts","./src/app/shared/state/appointment-wizard-settings/appointment-wizard-settings.store.ts","./src/app/shared/state/appointment-wizard-time/appointment-wizard-time.model.ts","./src/app/shared/state/appointment-wizard-time/appointment-wizard-time.query.ts","./src/app/shared/state/appointment-wizard-time/appointment-wizard-time.service.ts","./src/app/shared/state/appointment-wizard-time/appointment-wizard-time.store.ts","./src/app/shared/state/appointment/appointment.query.ts","./src/app/shared/state/header-icon/header-icon.query.ts","./src/app/shared/state/pack-wizard/pack-wizard.model.ts","./src/app/shared/state/pack-wizard/pack-wizard.service.ts","./src/app/shared/state/payment-wizard-settings/payment-wizard-settings.query.ts","./src/app/shared/state/payment-wizard-settings/payment-wizard-settings.service.ts","./src/app/shared/state/payment-wizard-settings/payment-wizard-settings.store.ts","./src/app/shared/state/paymethod-wizard/paymethod-wizard.model.ts","./src/app/shared/state/paymethod-wizard/paymethod-wizard.query.ts","./src/app/shared/state/paymethod-wizard/paymethod-wizard.service.ts","./src/app/shared/state/paymethod-wizard/paymethod-wizard.store.ts","./src/app/shared/state/services-group/services-group.query.ts","./src/app/shared/state/services-group/services-group.service.ts","./src/app/shared/state/services-group/services-group.store.ts","./src/app/shared/state/social-login/social-login.query.ts","./src/app/shared/state/treatment-wizard-settings/treatment-wizard-settings.query.ts","./src/app/shared/state/treatment-wizard-settings/treatment-wizard-settings.store.ts","./src/app/shared/state/wizard-step/wizard-step-query.ts","./src/app/shared/state/wizard-step/wizard-step-store.ts","./src/app/shared/state/wizard-step/wizard-step.service.ts","./src/app/modules/appointment-wizard/components/calendar/calendar.component.scss","./src/app/modules/appointment-wizard/pages/appointment-wizard/appointment-wizard.component.scss"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Calendar } from '@awesome-cordova-plugins/calendar/ngx';\r\nimport { ClinicDetailQuery } from '../../../shared/state/clinic-detail/clinic-detail.query';\r\nimport { Appointment } from '../../../shared/state/appointment/appointment.model';\r\nimport { ClinicQuery } from '../../../shared/state/clinic/clinic.query';\r\nimport { Platform } from '@ionic/angular';\r\nimport { ServicesGroupQuery } from '../../../shared/state/services-group/services-group.query';\r\nimport { AppointmentWizardTimeQuery } from '../../../shared/state/appointment-wizard-time/appointment-wizard-time.query';\r\nimport { ServiceWizardQuery } from '../../../shared/state/service-wizard/service-wizard.query';\r\nimport { AppointmentQuery } from '../../../shared/state/appointment/appointment.query';\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CalendarDeviceService {\r\n constructor(\r\n private calendar: Calendar,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private clinicQuery: ClinicQuery,\r\n private platform: Platform,\r\n private servicesGroupQuery: ServicesGroupQuery,\r\n private appointmentWizardTimeQuery: AppointmentWizardTimeQuery,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private appointmentQuery: AppointmentQuery\r\n ) {}\r\n\r\n async addAppointmentToCalendarDevice(appointmentId: string) {\r\n if (!Capacitor.isNativePlatform()) {\r\n return;\r\n }\r\n const appointments: Appointment[] = this.createObjectAppointment(\r\n appointmentId\r\n );\r\n\r\n /** Por cada cita que hemos creado (puede ser cita multiple), la metemos en el calendar */\r\n for (const appointment of appointments) {\r\n const title =\r\n this.clinicDetailQuery.comercialName +\r\n ' (ID#' +\r\n appointment.id +\r\n ')';\r\n /** OJO! Esto puede petar si entramos directamente a la ruta sin que se rellenen las clínicas en Generic\r\n * (controlador porque solo se usa desde dispositivo y por dispositivo siempre se pasa por buscador) */\r\n const location = this.clinicDetailQuery.city;\r\n let notes = 'SERVICIOS\\n';\r\n for (const serviceDescription of appointment.servicesDescription) {\r\n notes += '- ' + serviceDescription + '\\n';\r\n }\r\n\r\n let startDate;\r\n let endDate;\r\n if (this.platform.is('ios')) {\r\n const {\r\n parsedIOSStartDate,\r\n parsedIOSEndDate,\r\n } = CalendarDeviceService.getIosDates(appointment);\r\n startDate = parsedIOSStartDate;\r\n endDate = parsedIOSEndDate;\r\n } else {\r\n startDate = new Date(\r\n appointment.date + ', ' + appointment.timeStart\r\n );\r\n endDate = new Date(\r\n appointment.date + ', ' + appointment.timeEnd\r\n );\r\n }\r\n\r\n await this.calendar.createEvent(\r\n title,\r\n location,\r\n notes,\r\n startDate,\r\n endDate\r\n );\r\n }\r\n }\r\n\r\n async deleteAppointmentToCalendarDevice(appointmentId: string) {\r\n if (!Capacitor.isNativePlatform()) {\r\n return;\r\n }\r\n let appointment: Appointment = this.appointmentQuery.getEntity(\r\n appointmentId\r\n );\r\n\r\n let _appointment: Appointment = { ...appointment };\r\n _appointment.date =\r\n _appointment.date.split('/')[2] +\r\n '-' +\r\n _appointment.date.split('/')[1] +\r\n '-' +\r\n _appointment.date.split('/')[0];\r\n\r\n const title =\r\n this.clinicDetailQuery.comercialName +\r\n ' (ID#' +\r\n _appointment.id +\r\n ')';\r\n\r\n let startDate;\r\n let endDate;\r\n if (this.platform.is('ios')) {\r\n const {\r\n parsedIOSStartDate,\r\n parsedIOSEndDate,\r\n } = CalendarDeviceService.getIosDates(_appointment);\r\n startDate = parsedIOSStartDate;\r\n endDate = parsedIOSEndDate;\r\n } else {\r\n startDate = new Date(\r\n _appointment.date + ', ' + _appointment.timeStart\r\n );\r\n endDate = new Date(_appointment.date + ', ' + _appointment.timeEnd);\r\n }\r\n\r\n try {\r\n await this.calendar.deleteEvent(\r\n title,\r\n null,\r\n null,\r\n startDate,\r\n endDate\r\n );\r\n } catch (e) {}\r\n }\r\n\r\n private createObjectAppointment(appointmentId: string): Appointment[] {\r\n /** Compruebo si estoy haciendo una cita simple o una cita múltiple\r\n * puesto que cambia la forma de obtener los datos */\r\n\r\n if (this.servicesGroupQuery.getAll().length === 1) {\r\n return this.createAppointmentsSingleGroup(appointmentId);\r\n } else {\r\n return this.createAppointmentsMultipleGroup(appointmentId);\r\n }\r\n }\r\n\r\n private createAppointmentsSingleGroup(\r\n appointmentId: string\r\n ): Appointment[] {\r\n const timeActive = this.appointmentWizardTimeQuery.getActive();\r\n\r\n const servicesChekedArrayDescription = [];\r\n this.serviceWizardQuery\r\n .getAll({\r\n filterBy: ({ checked }) => checked === true,\r\n })\r\n .forEach((service) => {\r\n servicesChekedArrayDescription.push(service.description);\r\n });\r\n\r\n const singleAppointment = {\r\n id: appointmentId,\r\n clinicID: this.clinicDetailQuery.id,\r\n date: timeActive.date,\r\n timeStart: timeActive.timeStart,\r\n timeEnd: timeActive.timeEnd,\r\n servicesDescription: servicesChekedArrayDescription,\r\n } as Appointment;\r\n\r\n return [singleAppointment];\r\n }\r\n private createAppointmentsMultipleGroup(appointmentId: string) {\r\n const timeActive: any = this.appointmentWizardTimeQuery.getActive();\r\n\r\n let appointmentsArray = [];\r\n\r\n timeActive.servicesGroup.forEach((serviceGroup, index) => {\r\n let servicesMultipleGroupDescription = [];\r\n serviceGroup.ServicesID.split(',').forEach((servicesId) => {\r\n servicesMultipleGroupDescription.push(\r\n this.serviceWizardQuery.getEntity(servicesId).description\r\n );\r\n });\r\n\r\n const singleAppointment = {\r\n id: appointmentId[index],\r\n clinicID: this.clinicDetailQuery.id,\r\n date: timeActive.date,\r\n timeStart: serviceGroup.TimeStart,\r\n timeEnd: serviceGroup.TimeEnd,\r\n servicesDescription: servicesMultipleGroupDescription,\r\n } as Appointment;\r\n\r\n appointmentsArray.push(singleAppointment);\r\n });\r\n\r\n return appointmentsArray;\r\n }\r\n\r\n private static getIosDates(appointment: Appointment) {\r\n const iosDateSplitted = appointment.date.split('-');\r\n const year = iosDateSplitted[0];\r\n const month =\r\n iosDateSplitted[1].length == 1\r\n ? '0' + iosDateSplitted[1]\r\n : iosDateSplitted[1];\r\n const day =\r\n iosDateSplitted[2].length == 1\r\n ? '0' + iosDateSplitted[2]\r\n : iosDateSplitted[2];\r\n\r\n const iosStartDate = new Date(\r\n year +\r\n '-' +\r\n month +\r\n '-' +\r\n day +\r\n 'T' +\r\n appointment.timeStart +\r\n ':00.000Z'\r\n );\r\n const iosEndDate = new Date(\r\n year +\r\n '-' +\r\n month +\r\n '-' +\r\n day +\r\n 'T' +\r\n appointment.timeEnd +\r\n ':00.000Z'\r\n );\r\n const parsedIOSStartDate = CalendarDeviceService.parseIOSDate(\r\n iosStartDate\r\n );\r\n const parsedIOSEndDate = CalendarDeviceService.parseIOSDate(iosEndDate);\r\n\r\n return { parsedIOSStartDate, parsedIOSEndDate };\r\n }\r\n\r\n private static parseIOSDate(date: Date) {\r\n const dateSplitted = date.toISOString().split(/[^0-9]/);\r\n return new Date(\r\n Number(dateSplitted[0]),\r\n Number(dateSplitted[1]) - 1,\r\n Number(dateSplitted[2]),\r\n Number(dateSplitted[3]),\r\n Number(dateSplitted[4]),\r\n Number(dateSplitted[5])\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport { FamilyWizardModel } from '../../../shared/models/family-wizard.model';\r\nimport { ServiceWizard } from '../../../shared/state/service-wizard/service-wizard.model';\r\nimport { ProductWizard } from '../../../shared/state/product-wizard/product-wizard.model';\r\nimport { map } from 'rxjs/operators';\r\nimport { FamilyFolderModel } from '../../../shared/models/family-folder.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CommonWizardService {\r\n constructor() {}\r\n\r\n getFamiliesCommonFactor(families: FamilyWizardModel[]) {\r\n const sourceFamilies = families.filter(\r\n (family) => family.id === family.sourceId\r\n );\r\n\r\n families\r\n .filter((family) => family.id !== family.sourceId)\r\n .forEach((family) => {\r\n const existSourceFamily = sourceFamilies.filter(\r\n (sourceFamily) => {\r\n return (\r\n (sourceFamily.id === family.sourceId ||\r\n sourceFamily.sourceId === family.sourceId) &&\r\n family.folderSourceId ===\r\n sourceFamily.folderSourceId\r\n );\r\n }\r\n );\r\n if (existSourceFamily.length === 0) {\r\n sourceFamilies.push(family);\r\n } else {\r\n existSourceFamily[0].familiesCommonFactor.push(family.id);\r\n }\r\n });\r\n\r\n return sourceFamilies;\r\n }\r\n\r\n selectFamilyFolderTree(\r\n familiesWizard$: Observable,\r\n servicesWizard$: Observable,\r\n productsWizard$: Observable\r\n ) {\r\n return combineLatest([\r\n familiesWizard$,\r\n servicesWizard$,\r\n productsWizard$,\r\n ]).pipe(\r\n map(([families, services, products]) => {\r\n const familyFolders: {\r\n [key: string]: FamilyFolderModel[];\r\n } = {};\r\n\r\n const familyFolderRoot: FamilyFolderModel = {\r\n id: '',\r\n description: 'root',\r\n parentId: '',\r\n parentSourceId: '',\r\n families: [],\r\n services: [],\r\n products: [],\r\n familiesCommonFactor: [],\r\n };\r\n\r\n familyFolders['0'] = [familyFolderRoot];\r\n\r\n families.forEach((family) => {\r\n const newFamilyFolder = {\r\n id: family.id,\r\n description: family.description,\r\n parentId: family.folderId,\r\n parentSourceId: family.folderSourceId,\r\n families: [],\r\n services: [],\r\n products: [],\r\n familiesCommonFactor: family.familiesCommonFactor,\r\n };\r\n if (familyFolders[family.sourceId]) {\r\n familyFolders[family.sourceId].push(newFamilyFolder);\r\n } else {\r\n familyFolders[family.sourceId] = [newFamilyFolder];\r\n }\r\n });\r\n\r\n services.forEach((service) => {\r\n if (familyFolders[service.familySourceID]) {\r\n familyFolders[service.familySourceID].forEach(\r\n (familyFolder) => {\r\n if (\r\n familyFolder.familiesCommonFactor.some(\r\n (familyCombineFactorId) => {\r\n return (\r\n familyCombineFactorId ===\r\n service.familyId\r\n );\r\n }\r\n )\r\n ) {\r\n familyFolder.services.push(service);\r\n }\r\n }\r\n );\r\n } else {\r\n familyFolders[0][0].services.push(service);\r\n }\r\n });\r\n\r\n products.forEach((product) => {\r\n if (familyFolders[product.familySourceId]) {\r\n familyFolders[product.familySourceId].forEach(\r\n (familyFolder) => {\r\n if (\r\n familyFolder.familiesCommonFactor.some(\r\n (familyCombineFactorId) => {\r\n return (\r\n familyCombineFactorId ===\r\n product.familyId\r\n );\r\n }\r\n )\r\n ) {\r\n familyFolder.products.push(product);\r\n }\r\n }\r\n );\r\n } else {\r\n familyFolders[0][0].products.push(product);\r\n }\r\n });\r\n\r\n for (const [, familyFolderGroup] of Object.entries(\r\n familyFolders\r\n )) {\r\n familyFolderGroup.forEach((familyFolder) => {\r\n if (familyFolder.parentSourceId !== '') {\r\n if (familyFolders[familyFolder.parentSourceId]) {\r\n familyFolders[\r\n familyFolder.parentSourceId\r\n ].forEach((currentFamilyFolder) => {\r\n if (\r\n currentFamilyFolder.familiesCommonFactor.some(\r\n (familyCombineFactorId) => {\r\n return (\r\n familyCombineFactorId ===\r\n familyFolder.parentId\r\n );\r\n }\r\n ) ||\r\n currentFamilyFolder.id === ''\r\n ) {\r\n currentFamilyFolder.families.push(\r\n familyFolder\r\n );\r\n }\r\n });\r\n } else {\r\n familyFolders['0'][0].families.push(\r\n familyFolder\r\n );\r\n }\r\n }\r\n });\r\n }\r\n\r\n /** Ordenamos alfabéticamente las familias, servicios y productos\r\n * Borramos las familias vacías */\r\n for (const [, familyFolder] of Object.entries(familyFolders)) {\r\n familyFolder.forEach((currentFamilyFolder, indexGroup) => {\r\n currentFamilyFolder.families = currentFamilyFolder.families.sort(\r\n (a, b) =>\r\n a.description > b.description\r\n ? 1\r\n : b.description > a.description\r\n ? -1\r\n : 0\r\n );\r\n\r\n currentFamilyFolder.services = currentFamilyFolder.services.sort(\r\n (a, b) =>\r\n a.description > b.description\r\n ? 1\r\n : b.description > a.description\r\n ? -1\r\n : 0\r\n );\r\n\r\n currentFamilyFolder.products = currentFamilyFolder.products.sort(\r\n (a, b) =>\r\n a.description > b.description\r\n ? 1\r\n : b.description > a.description\r\n ? -1\r\n : 0\r\n );\r\n\r\n this.deleteEmptyFamily(\r\n currentFamilyFolder,\r\n familyFolders\r\n );\r\n });\r\n }\r\n\r\n return familyFolderRoot;\r\n })\r\n );\r\n }\r\n\r\n /** Función recursiva que se va borrando familias vacías hacía arriba en el árbol */\r\n deleteEmptyFamily(familyFolder: FamilyFolderModel, familyFolders) {\r\n if (this.isFamilyEmpty(familyFolder)) {\r\n if (familyFolder.parentSourceId !== '') {\r\n if (familyFolders[familyFolder.parentSourceId]) {\r\n familyFolders[familyFolder.parentSourceId].forEach(\r\n (currentFamilyFolderToDelete) => {\r\n if (\r\n currentFamilyFolderToDelete.familiesCommonFactor.some(\r\n (familyCombineFactorId) => {\r\n return (\r\n familyCombineFactorId ===\r\n familyFolder.parentId\r\n );\r\n }\r\n ) ||\r\n currentFamilyFolderToDelete.id === ''\r\n ) {\r\n currentFamilyFolderToDelete.families = currentFamilyFolderToDelete.families.filter(\r\n (family) => {\r\n return family.id !== familyFolder.id;\r\n }\r\n );\r\n\r\n if (\r\n this.isFamilyEmpty(\r\n currentFamilyFolderToDelete\r\n )\r\n ) {\r\n this.deleteEmptyFamily(\r\n currentFamilyFolderToDelete,\r\n familyFolders\r\n );\r\n }\r\n }\r\n }\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n isFamilyEmpty(familyFolder) {\r\n return (\r\n familyFolder.families?.length === 0 &&\r\n familyFolder.services?.length === 0 &&\r\n familyFolder.products?.length === 0\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n Injectable,\r\n OnInit,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport {\r\n NgbCalendar,\r\n NgbDate,\r\n NgbDatepicker,\r\n NgbDatepickerI18n,\r\n NgbDateStruct,\r\n} from '@ng-bootstrap/ng-bootstrap';\r\nimport { LanguageService } from '../../../../core/services/language/language.service';\r\n\r\nconst I18N_VALUES = {\r\n es: {\r\n weekdays: ['Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab', 'Dom'],\r\n months: [\r\n 'Ene',\r\n 'Feb',\r\n 'Mar',\r\n 'Abr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Ago',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dic',\r\n ],\r\n },\r\n ca: {\r\n weekdays: ['Dln', 'Dmt', 'Dmc', 'Djs', 'Dvn', 'Dsb', 'Dug'],\r\n months: [\r\n 'Gen',\r\n 'Feb',\r\n 'Mar',\r\n 'Abr',\r\n 'Mai',\r\n 'Jun',\r\n 'Jul',\r\n 'Ago',\r\n 'Set',\r\n 'Oct',\r\n 'Nov',\r\n 'Des',\r\n ],\r\n },\r\n en: {\r\n weekdays: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\r\n months: [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n ],\r\n },\r\n pt: {\r\n weekdays: ['Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab', 'Dom'],\r\n months: [\r\n 'Jan',\r\n 'Fev',\r\n 'Mar',\r\n 'Abr',\r\n 'Mai',\r\n 'Jun',\r\n 'Jul',\r\n 'Ago',\r\n 'Set',\r\n 'Out',\r\n 'Nov',\r\n 'Dez',\r\n ],\r\n },\r\n br: {\r\n weekdays: ['Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab', 'Dom'],\r\n months: [\r\n 'Jan',\r\n 'Fev',\r\n 'Mar',\r\n 'Abr',\r\n 'Mai',\r\n 'Jun',\r\n 'Jul',\r\n 'Ago',\r\n 'Set',\r\n 'Out',\r\n 'Nov',\r\n 'Dez',\r\n ],\r\n },\r\n it: {\r\n weekdays: ['Lun', 'Mar', 'Mer', 'Gio', 'Ven', 'Sab', 'Dom'],\r\n months: [\r\n 'Gen',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'Mag',\r\n 'Giu',\r\n 'Lug',\r\n 'Ago',\r\n 'Set',\r\n 'Ott',\r\n 'Nov',\r\n 'Dic',\r\n ],\r\n },\r\n};\r\n\r\n@Injectable()\r\nexport class I18n {\r\n constructor(private languageService: LanguageService) {}\r\n language = this.languageService.getLocale();\r\n}\r\n\r\n@Injectable()\r\nexport class CustomDatepickerI18n extends NgbDatepickerI18n {\r\n private I18NValues: { weekdays: string[]; months: string[] };\r\n constructor(private _i18n: I18n) {\r\n super();\r\n this.setI18NValues();\r\n }\r\n\r\n setI18NValues() {\r\n const shortLocale = this._i18n.language.substring(0, 2).toLowerCase();\r\n if (\r\n Object.keys(I18N_VALUES).findIndex(\r\n (lang) => lang === shortLocale\r\n ) !== -1\r\n ) {\r\n this.I18NValues = I18N_VALUES[shortLocale];\r\n } else {\r\n this.I18NValues = I18N_VALUES.en;\r\n }\r\n }\r\n\r\n getWeekdayLabel(weekday: number): string {\r\n return this.I18NValues.weekdays[weekday - 1];\r\n }\r\n getMonthShortName(month: number): string {\r\n return this.I18NValues.months[month - 1];\r\n }\r\n getMonthFullName(month: number): string {\r\n return this.getMonthShortName(month);\r\n }\r\n getDayAriaLabel(date: NgbDateStruct): string {\r\n return `${date.day}-${date.month}-${date.year}`;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'app-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n providers: [\r\n I18n,\r\n { provide: NgbDatepickerI18n, useClass: CustomDatepickerI18n },\r\n ],\r\n})\r\nexport class CalendarComponent implements OnInit {\r\n date: NgbDateStruct;\r\n todayDate;\r\n\r\n @ViewChild(NgbDatepicker)\r\n datepicker: NgbDatepicker;\r\n\r\n @Input() isDisabled;\r\n @Output() dateSelectEvent = new EventEmitter();\r\n @Output() calendarChangeEvent = new EventEmitter();\r\n\r\n constructor(private calendar: NgbCalendar) {}\r\n\r\n ngOnInit(): void {\r\n this.date = this.calendar.getToday();\r\n this.todayDate = this.calendar.getToday();\r\n }\r\n\r\n onNavigate(event) {\r\n if (event.current === null) {\r\n return;\r\n }\r\n const selected = {\r\n year: event.next.year,\r\n month: event.next.month,\r\n day: 1,\r\n };\r\n this.onCalendarChange(selected);\r\n }\r\n\r\n onDateSelect(date: NgbDateStruct) {\r\n this.dateSelectEvent.emit(date);\r\n }\r\n\r\n onCalendarChange(date: NgbDateStruct) {\r\n this.calendarChangeEvent.emit(date);\r\n }\r\n\r\n resetCalendar() {\r\n this.date = this.calendar.getToday();\r\n this.datepicker.navigateTo(this.date);\r\n this.isDisabled = null;\r\n }\r\n}\r\n","import { Component, ElementRef, NgZone, OnDestroy, OnInit, ViewChild, ViewChildren } from '@angular/core';\r\nimport {\r\n ModalController,\r\n ActionSheetController,\r\n AlertController,\r\n Platform,\r\n} from '@ionic/angular';\r\nimport { AppointmentWizardSettingsService } from '../../../../shared/state/appointment-wizard-settings/appointment-wizard-settings.service';\r\nimport { AppointmentWizardSettingsQuery } from '../../../../shared/state/appointment-wizard-settings/appointment-wizard-settings.query';\r\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\r\nimport { AppointmentWizardSettingsState } from '../../../../shared/state/appointment-wizard-settings/appointment-wizard-settings.store';\r\nimport { LibraryService } from '../../../../core/services/library/library.service';\r\nimport { FamilyWizardModel } from '../../../../shared/models/family-wizard.model';\r\nimport { ServiceWizardQuery } from '../../../../shared/state/service-wizard/service-wizard.query';\r\nimport {\r\n ServiceWizard,\r\n ServiceWizardCheckedEvent,\r\n} from '../../../../shared/state/service-wizard/service-wizard.model';\r\nimport { ServiceWizardService } from '../../../../shared/state/service-wizard/service-wizard.service';\r\nimport { filter, map, take, takeUntil } from 'rxjs/operators';\r\nimport { IdsStepsAppointmentWizardModel } from '../../../../shared/models/idsStepsAppointmentWizard.model';\r\nimport { WizardStep } from '../../../../shared/state/wizard-step/wizard-step.model';\r\nimport { WizardStepService } from '../../../../shared/state/wizard-step/wizard-step.service';\r\nimport { WizardStepQuery } from '../../../../shared/state/wizard-step/wizard-step-query';\r\nimport { CalendarComponent } from '../../components/calendar/calendar.component';\r\nimport { NgbDate, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AppointmentWizardTimeService } from '../../../../shared/state/appointment-wizard-time/appointment-wizard-time.service';\r\nimport { AppointmentWizardTime } from '../../../../shared/state/appointment-wizard-time/appointment-wizard-time.model';\r\nimport { AppointmentWizardTimeQuery } from '../../../../shared/state/appointment-wizard-time/appointment-wizard-time.query';\r\nimport { AppointmentWizardDateService } from '../../../../shared/state/appointment-wizard-date/appointment-wizard-date.service';\r\nimport { AppointmentWizardDateQuery } from '../../../../shared/state/appointment-wizard-date/appointment-wizard-date.query.';\r\nimport { AppointmentWizardDate } from '../../../../shared/state/appointment-wizard-date/appointment-wizard-date.model';\r\nimport { PaymentWizardSettingsService } from '../../../../shared/state/payment-wizard-settings/payment-wizard-settings.service';\r\nimport { PaymentWizardSettingsQuery } from '../../../../shared/state/payment-wizard-settings/payment-wizard-settings.query';\r\nimport { Router } from '@angular/router';\r\nimport { UserQuery } from '../../../../shared/state/user/user.query';\r\nimport { ClinicDetailQuery } from '../../../../shared/state/clinic-detail/clinic-detail.query';\r\nimport { UserRegisterModel } from '../../../../shared/models/userRegister.model';\r\nimport { RegisterFormComponent } from '../../../../shared/components/register-form/register-form.component';\r\nimport { UserService } from '../../../../shared/state/user/user.service';\r\nimport { ToastService } from '../../../../core/services/toast/toast.service';\r\nimport { SettingsQuery } from '../../../../shared/state/settings/settings.query';\r\nimport { AppointmentService } from '../../../../shared/state/appointment/appointment.service';\r\nimport { PaymethodWizard } from '../../../../shared/state/paymethod-wizard/paymethod-wizard.model';\r\nimport { PaymethodWizardQuery } from '../../../../shared/state/paymethod-wizard/paymethod-wizard.query';\r\nimport { PaymethodWizardService } from '../../../../shared/state/paymethod-wizard/paymethod-wizard.service';\r\nimport { TreatmentService } from '../../../../shared/state/treatment/treatment.service';\r\nimport { ServicesGroupService } from 'src/app/shared/state/services-group/services-group.service';\r\nimport { ServicesGroupQuery } from 'src/app/shared/state/services-group/services-group.query';\r\nimport {\r\n ProfessionalServiceGroupSelected,\r\n ServicesGroup,\r\n} from 'src/app/shared/state/services-group/services-group.model';\r\nimport { CompanyQuery } from 'src/app/shared/state/company/company.query';\r\nimport { ServiceSearchbarComponent } from '../../../../shared/components/service-searchbar/service-searchbar.component';\r\nimport { LoadingService } from '../../../../shared/state/loading/loading.service';\r\nimport { CalendarDeviceService } from '../../../../core/services/calendar-device/calendar-device.service';\r\nimport { KeyboardQuery } from '../../../../shared/state/keyboard/keyboard.query';\r\nimport { RouterService } from '../../../../core/services/router/router.service';\r\nimport { FamilyFolderModel } from '../../../../shared/models/family-folder.model';\r\nimport { GenericHeaderComponent } from '../../../../shared/components/generic-header/generic-header.component';\r\nimport {\r\n OtpModalComponent,\r\n OTPModalDismissActions,\r\n} from '../../../../shared/components/otp-modal/otp-modal.component';\r\nimport { SocialLoginQuery } from '../../../../shared/state/social-login/social-login.query';\r\nimport { SocialLoginService } from '../../../../shared/state/social-login/social-login.service';\r\nimport { ClientDataSocialLogin } from '../../../../shared/state/social-login/social-login.store';\r\nimport { InputSearchComponent } from 'src/app/shared/components/input-search/input-search.component';\r\nimport {\r\n templateProfessionalsActionButtonDisabled,\r\n templateProfessionalsStepCheckShowActionButton,\r\n templateProfessionalsNextStep,\r\n templateGoBackSlideProfessional,\r\n templateProfessionalUndoNextStep,\r\n templateDatetimeStepCheckShowActionButton,\r\n templateDatetimeActionButtonDisabled,\r\n templatePaymethodsStepCheckShowActionButton,\r\n templatePaymethodsActionButtonDisabled,\r\n templatePaymethodUndoNextStep,\r\n templateResultStepCheckShowActionButton,\r\n stepsLabels\r\n} from './appointment-wizard.functions';\r\nimport { HeaderPictureQuery } from 'src/app/shared/state/header-picture/header-picture.query';\r\nimport { SwiperOptions } from 'swiper';\r\nimport { PackWizardQuery } from 'src/app/shared/state/pack-wizard/pack-wizard.query';\r\nimport { PacksWizardService } from 'src/app/shared/state/pack-wizard/pack-wizard.service';\r\nimport { PackWizard } from 'src/app/shared/state/pack-wizard/pack-wizard.model';\r\n\r\n@Component({\r\n selector: 'app-appointment-wizard',\r\n templateUrl: './appointment-wizard.component.html',\r\n styleUrls: ['./appointment-wizard.component.scss'],\r\n})\r\n\r\n/**\r\n * TODO: Ver si puedo mejorar el doble filtrado por familias y por buscador de texto\r\n * TODO: Animaciones en los checkboxes\r\n */\r\nexport class AppointmentWizardComponent implements OnInit, OnDestroy {\r\n @ViewChild(RegisterFormComponent)\r\n registerFormComponent: RegisterFormComponent;\r\n @ViewChild(ServiceSearchbarComponent)\r\n serviceSearchBar: ServiceSearchbarComponent;\r\n @ViewChild(GenericHeaderComponent) genericHeader: GenericHeaderComponent;\r\n @ViewChild(CalendarComponent) calendar: CalendarComponent;\r\n /** Flowwwer template */\r\n @ViewChild(InputSearchComponent) inputSearch: InputSearchComponent;\r\n @ViewChild('swiper') swiperContainer: ElementRef;\r\n\r\n appointmentWizardSettings$: Observable;\r\n familiesWizard$: Observable;\r\n familiesFilterWizard$: Observable;\r\n appDelegate$: Observable;\r\n servicesWizard$: Observable<\r\n ServiceWizard[]\r\n >; /** Servicios filtrados por familias y buscador */\r\n servicesWizardFamily$: Observable<\r\n ServiceWizard[]\r\n >; /** Servicios filtrados por familias */\r\n servicesChecked$: Observable<\r\n ServiceWizard[]\r\n >; /** Servicios seleccionados por el usuario */\r\n\r\n stepActive$: Observable;\r\n slideActiveIndex: number;\r\n /** Opciones iniciales del asistente */\r\n slideOpts: SwiperOptions = {};\r\n disabledButtonAction$: Observable;\r\n labelButtonAction$: Observable;\r\n showActionButton$: Observable;\r\n times$: Observable;\r\n isDisabledDateCalendar;\r\n dateActive$: Observable;\r\n timeActive$: Observable;\r\n timeLoading$: Observable;\r\n clinicDetailRgpdDisable$: Observable;\r\n paymethodsWizard$: Observable;\r\n urlPaymentSafe$: Observable;\r\n listenerEventsPayment;\r\n isLoadingContent;\r\n servicesGroup$: Observable;\r\n keyboardIsShowing: Observable;\r\n noMoreServices$: Observable;\r\n familyFolderTree: FamilyFolderModel;\r\n familyFolderSlide: FamilyFolderModel[] = [];\r\n familyFolderSlideFiltered: FamilyFolderModel[] = [];\r\n idsStepsAppointmentWizardModel = IdsStepsAppointmentWizardModel;\r\n clientDataSocialLogin: ClientDataSocialLogin | {};\r\n socialLoginResponse$;\r\n clinicName$: Observable;\r\n headerCurrentStep = 0;\r\n packsWizard$: Observable;\r\n\r\n /** Flowwwer template */\r\n IdsStepsAppointmentWizardModelRESULT =\r\n IdsStepsAppointmentWizardModel.RESULT;\r\n slideActiveProfessionalIndex: number;\r\n slideActiveProfessionalIndexSubject: BehaviorSubject<\r\n number\r\n > = new BehaviorSubject(null);\r\n servicesGroups: ServicesGroup[];\r\n logoHeader: string = null;\r\n familyFolderUserAction$ = new Subject();\r\n\r\n /** 1º Introducimos todos los pasos del asistente en el Store */\r\n appointmentWizardSteps: WizardStep[] = [\r\n {\r\n id: IdsStepsAppointmentWizardModel.FAMILIES,\r\n titleLabel: stepsLabels.FAMILIES,\r\n actionLabel: 'app_ask_sched_step_1_button',\r\n showActionButton: true,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.PROFESSIONALS,\r\n titleLabel: stepsLabels.PROFESSIONALS,\r\n actionLabel: 'app_ask_sched_step_1_button',\r\n showActionButton: false,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.DATETIME,\r\n titleLabel: stepsLabels.DATETIME,\r\n actionLabel: 'app_ask_sched_step_1_button',\r\n showActionButton: false,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.SOCIAL_LOGIN,\r\n titleLabel: stepsLabels.SOCIAL_LOGIN,\r\n actionLabel: '',\r\n showActionButton: false,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.REGISTER,\r\n titleLabel: stepsLabels.REGISTER,\r\n actionLabel: 'app_ask_sched_step_5_button_confirm',\r\n showActionButton: true,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.PAYMETHODS,\r\n titleLabel: stepsLabels.PAYMETHODS,\r\n actionLabel: 'app_ask_sched_step_1_button',\r\n showActionButton: false,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.CONFIRM,\r\n titleLabel: stepsLabels.CONFIRM,\r\n actionLabel: 'app_ask_sched_step_5_button_confirm',\r\n showActionButton: true,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.PAYMENT,\r\n titleLabel: stepsLabels.PAYMENT,\r\n actionLabel: '',\r\n showActionButton: false,\r\n },\r\n {\r\n id: IdsStepsAppointmentWizardModel.RESULT,\r\n titleLabel: stepsLabels.RESULT,\r\n actionLabel: 'lbl_appointments_see',\r\n showActionButton: false,\r\n },\r\n ];\r\n\r\n get servicesDescription$() {\r\n return this.servicesChecked$.pipe(\r\n map((services) => services.map(({ description }) => description))\r\n );\r\n }\r\n\r\n constructor(\r\n private modalController: ModalController,\r\n private appointmentWizardSettingsService: AppointmentWizardSettingsService,\r\n private appointmentWizardSettingsQuery: AppointmentWizardSettingsQuery,\r\n private libraryService: LibraryService,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private serviceWizardService: ServiceWizardService,\r\n private wizardStepService: WizardStepService,\r\n private wizardStepQuery: WizardStepQuery,\r\n private appointmentWizardTimeService: AppointmentWizardTimeService,\r\n private appointmentWizardTimeQuery: AppointmentWizardTimeQuery,\r\n private appointmentWizardDateService: AppointmentWizardDateService,\r\n private appointmentWizardDateQuery: AppointmentWizardDateQuery,\r\n private paymentWizardSettingsService: PaymentWizardSettingsService,\r\n private paymentWizardSettingsQuery: PaymentWizardSettingsQuery,\r\n private actionSheetController: ActionSheetController,\r\n private router: Router,\r\n private userQuery: UserQuery,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private userService: UserService,\r\n private toastService: ToastService,\r\n private settingsQuery: SettingsQuery,\r\n private appointmentService: AppointmentService,\r\n private paymethodWizardQuery: PaymethodWizardQuery,\r\n private paymethodWizardService: PaymethodWizardService,\r\n private treatmentService: TreatmentService,\r\n private alertCtrl: AlertController,\r\n private servicesGroupService: ServicesGroupService,\r\n private servicesGroupQuery: ServicesGroupQuery,\r\n private platform: Platform,\r\n private companyQuery: CompanyQuery,\r\n private ngZone: NgZone,\r\n private loadingService: LoadingService,\r\n private calendarDeviceService: CalendarDeviceService,\r\n private keyboardQuery: KeyboardQuery,\r\n private routerService: RouterService,\r\n private socialLoginQuery: SocialLoginQuery,\r\n private socialLoginService: SocialLoginService,\r\n private headerPicturesQuery: HeaderPictureQuery,\r\n private packWizardQuery: PackWizardQuery,\r\n private packWizardService: PacksWizardService\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.clinicName$ = this.clinicDetailQuery.select('commercialName');\r\n this.appDelegate$ = this.clinicDetailQuery.select('appDelegate');\r\n this.keyboardIsShowing = this.keyboardQuery.select('isShowing');\r\n this.isLoadingContent = true;\r\n }\r\n\r\n async ngAfterViewInit() {\r\n try {\r\n await this.initWizardConfig();\r\n } catch (error) {\r\n this.isLoadingContent = false;\r\n this.loadingService.updateShowSpinner(false);\r\n }\r\n this.isLoadingContent = false;\r\n\r\n this.stepActive$.subscribe((step) => {\r\n if (step) {\r\n if (step.id < IdsStepsAppointmentWizardModel.DATETIME) {\r\n this.headerCurrentStep = 0;\r\n } else if (step.id < IdsStepsAppointmentWizardModel.CONFIRM) {\r\n this.headerCurrentStep = 1;\r\n } else {\r\n this.headerCurrentStep = 2;\r\n }\r\n }\r\n });\r\n\r\n /** Flowwwer template */\r\n this.headerPicturesQuery\r\n .select('homeCompany')\r\n .subscribe((homeCompany) => {\r\n this.logoHeader = homeCompany;\r\n });\r\n }\r\n\r\n goBack(): void {\r\n const { stepStack } = this.appointmentWizardSettingsQuery.getValue();\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n\r\n if (currentStep?.id === IdsStepsAppointmentWizardModel.RESULT) {\r\n this.dismissModal();\r\n return;\r\n }\r\n\r\n if (\r\n currentStep?.id === IdsStepsAppointmentWizardModel.FAMILIES &&\r\n this.slideActiveIndex > 0\r\n ) {\r\n this.popFamilyFolder();\r\n return;\r\n }\r\n\r\n /** Flowwwer template */\r\n if (currentStep?.id === IdsStepsAppointmentWizardModel.PROFESSIONALS) {\r\n const checkGoToPrevStep = this.goBackSlideProfessional();\r\n if (!checkGoToPrevStep) {\r\n return;\r\n }\r\n }\r\n\r\n if (stepStack?.length > 0) {\r\n this.goToPrevStep();\r\n return;\r\n }\r\n\r\n this.dismissModal();\r\n }\r\n\r\n ionViewDidEnter() {\r\n this.swiperContainer?.nativeElement.swiper.update();\r\n }\r\n\r\n dismissModal() {\r\n this.modalController.dismiss({\r\n dismissed: true,\r\n });\r\n\r\n /** Comprobamos si el paso que cerramos es uno cualquiera o el último para ir al apartado de mis citas */\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n if (\r\n currentStep &&\r\n currentStep.id === IdsStepsAppointmentWizardModel.RESULT\r\n ) {\r\n this.router.navigate([\r\n this.settingsQuery.systemKeyURL +\r\n '/' +\r\n this.clinicDetailQuery.id +\r\n '/appointment',\r\n ]);\r\n }\r\n }\r\n\r\n /*-----------------------------*/\r\n /** FUNCIONES GENÉRICAS WIZARD */\r\n /*-----------------------------*/\r\n\r\n /** Función que inicializa el primera paso. No hay que hacer el avance con slide porque aun no está el objeto creado y se inicia solo */\r\n goToInitStep(initStep: WizardStep) {\r\n /** 1º Inicializamos el paso siguiente */\r\n this.initNextStep(initStep);\r\n\r\n /** 2º Avanzamos al paso siguiente */\r\n this.goToStep(initStep);\r\n }\r\n\r\n /** Función que retrocede de un paso a otro */\r\n goToPrevStep() {\r\n /** 1º Hace los cambios necesarios al destruir un paso y volver atrás */\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n this.destroyCurrentStep(currentStep);\r\n\r\n /** 2º Retrocede al paso anterior, buscando en la pila de pasos */\r\n const prevStep: WizardStep = this.wizardStepQuery.getEntity(\r\n this.appointmentWizardSettingsQuery.stepStack[\r\n this.appointmentWizardSettingsQuery.stepStack.length - 1\r\n ]\r\n );\r\n this.undoNextStep(prevStep);\r\n this.goToStep(prevStep);\r\n\r\n /** 3º Saca el paso que vamos a dejar atrás de la pila */\r\n this.appointmentWizardSettingsService.popStepStack();\r\n }\r\n\r\n /** Función que inicializa uno de los pasos */\r\n destroyCurrentStep(currentStep: WizardStep) {\r\n switch (currentStep.id) {\r\n case IdsStepsAppointmentWizardModel.FAMILIES: {\r\n this.destroyFamilyStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PROFESSIONALS: {\r\n this.destroyProfessionalsStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.DATETIME: {\r\n this.destroyDateTimeStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.SOCIAL_LOGIN: {\r\n this.destroySocialLoginStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.REGISTER: {\r\n this.destroyRegisterStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.CONFIRM: {\r\n this.destroyConfirmStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMETHODS: {\r\n this.destroyPaymethodStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMENT: {\r\n this.destroyPaymentStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.RESULT: {\r\n this.destroyResultStep();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /** Función que avanza de un paso a otro */\r\n goToNextStep(nextStepId: number, addCurrentStepToStak = true) {\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n /** 1º En la pila de pasos, añade el paso que vamos a dejar atrás */\r\n if (addCurrentStepToStak) {\r\n this.appointmentWizardSettingsService.pushStepStack(currentStep.id);\r\n }\r\n\r\n /** 2º Inicializamos el paso siguiente */\r\n const nextStep: WizardStep = this.wizardStepQuery.getEntity(nextStepId);\r\n this.initNextStep(nextStep);\r\n\r\n /** 3º Avanzamos al paso siguiente */\r\n this.goToStep(nextStep);\r\n }\r\n\r\n /** Función que inicializa uno de los pasos */\r\n initNextStep(nextStep: WizardStep) {\r\n switch (nextStep.id) {\r\n case IdsStepsAppointmentWizardModel.FAMILIES: {\r\n this.initFamilyStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PROFESSIONALS: {\r\n this.initProfessionalStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.DATETIME: {\r\n this.initDatetimeStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.SOCIAL_LOGIN: {\r\n this.initSocialLoginStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.REGISTER: {\r\n this.initRegisterStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.CONFIRM: {\r\n this.initConfirmStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMETHODS: {\r\n this.initPaymethodStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMENT: {\r\n this.initPaymentStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.RESULT: {\r\n this.initResultStep();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /** Función que avanza al paso siguiente */\r\n goToStep(step: WizardStep) {\r\n /** 1º Se mueve al paso siguiente con la librería de slides */\r\n this.swiperContainer?.nativeElement.swiper.slideTo(step.id);\r\n\r\n /** 2º Actualiza el paso activo actual */\r\n this.wizardStepService.setActive(step.id.toString());\r\n\r\n /** 3º Actualiza el disabled del botón de acción según el paso y su label */\r\n this.checkShowActionButton();\r\n this.getLabelActionButton();\r\n this.checkDisabledButtonAction();\r\n }\r\n\r\n /** Cuando se pulsa el botón de continuar (si lo hay), se llama a la función de next step de los pasos */\r\n actionNextStep() {\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n switch (currentStep.id) {\r\n case IdsStepsAppointmentWizardModel.FAMILIES: {\r\n this.familyNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PROFESSIONALS: {\r\n this.professionalsNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.DATETIME: {\r\n this.dateTimeNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.SOCIAL_LOGIN: {\r\n this.socialLoginNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.REGISTER: {\r\n this.registerNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.CONFIRM: {\r\n this.confirmNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMETHODS: {\r\n this.paymethodNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMENT: {\r\n this.paymentNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.RESULT: {\r\n this.resultNextStep();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n undoNextStep(step: WizardStep) {\r\n switch (step.id) {\r\n case IdsStepsAppointmentWizardModel.FAMILIES: {\r\n this.familyUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PROFESSIONALS: {\r\n this.professionalUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.DATETIME: {\r\n this.datetimeUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.SOCIAL_LOGIN: {\r\n this.socialLoginUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.REGISTER: {\r\n this.registerUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.CONFIRM: {\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMETHODS: {\r\n this.paymethodUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.PAYMENT: {\r\n this.paymentUndoNextStep();\r\n break;\r\n }\r\n case IdsStepsAppointmentWizardModel.RESULT: {\r\n this.resultUndoNextStep();\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /*--------------------------------------*/\r\n /** CONFIGURACIÓN DISABLED BOTÓN ACCIÓN */\r\n /*--------------------------------------*/\r\n\r\n checkDisabledButtonAction() {\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n switch (currentStep.id) {\r\n case IdsStepsAppointmentWizardModel.FAMILIES:\r\n this.disabledButtonAction$ = this.familyActionButtonDisabled();\r\n break;\r\n case IdsStepsAppointmentWizardModel.PROFESSIONALS:\r\n this.disabledButtonAction$ = this.professionalsActionButtonDisabled();\r\n break;\r\n case IdsStepsAppointmentWizardModel.DATETIME:\r\n this.disabledButtonAction$ = this.datetimeActionButtonDisabled();\r\n break;\r\n case IdsStepsAppointmentWizardModel.CONFIRM:\r\n this.disabledButtonAction$ = this.confirmActionButtonDisabled();\r\n break;\r\n case IdsStepsAppointmentWizardModel.REGISTER:\r\n this.disabledButtonAction$ = of(false);\r\n break;\r\n case IdsStepsAppointmentWizardModel.PAYMETHODS:\r\n this.disabledButtonAction$ = this.paymethodsActionButtonDisabled();\r\n break;\r\n case IdsStepsAppointmentWizardModel.RESULT:\r\n this.disabledButtonAction$ = of(false);\r\n break;\r\n default:\r\n this.disabledButtonAction$ = of(true);\r\n break;\r\n }\r\n }\r\n\r\n /*--------------------------------------*/\r\n /** LABEL PARA EL BOTÓN DE BOTÓN ACCIÓN */\r\n /*--------------------------------------*/\r\n\r\n getLabelActionButton() {\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n switch (currentStep.id) {\r\n case IdsStepsAppointmentWizardModel.CONFIRM: {\r\n this.labelButtonAction$ = this.getActionLabelConfirmStep();\r\n break;\r\n }\r\n default:\r\n this.labelButtonAction$ = of(currentStep.actionLabel);\r\n break;\r\n }\r\n }\r\n\r\n /*--------------------------------------*/\r\n /** MOSTRAR O NO EL BOTÓN DE ACCIÓN */\r\n /*--------------------------------------*/\r\n\r\n checkShowActionButton() {\r\n const currentStep: WizardStep = this.wizardStepQuery.getActive();\r\n switch (currentStep.id) {\r\n case IdsStepsAppointmentWizardModel.PROFESSIONALS:\r\n this.showActionButton$ = this.professionalsStepCheckShowActionButton();\r\n break;\r\n case IdsStepsAppointmentWizardModel.DATETIME:\r\n this.showActionButton$ = this.datetimeStepCheckShowActionButton();\r\n break;\r\n case IdsStepsAppointmentWizardModel.PAYMETHODS:\r\n this.showActionButton$ = this.paymethodsStepCheckShowActionButton();\r\n break;\r\n case IdsStepsAppointmentWizardModel.RESULT:\r\n this.showActionButton$ = this.resultStepCheckShowActionButton();\r\n break;\r\n default:\r\n this.showActionButton$ = of(currentStep.showActionButton);\r\n break;\r\n }\r\n }\r\n\r\n /*------------------------*/\r\n /** CONFIGURACIÓN PASO 0 */\r\n /*------------------------*/\r\n\r\n /** Configuración inicial del asistente. Definimos cual es el primer paso y su primer título */\r\n async initWizardConfig() {\r\n this.slideOpts = {\r\n speed: 200,\r\n allowTouchMove: false\r\n };\r\n Object.assign(this.swiperContainer?.nativeElement, this.slideOpts);\r\n\r\n this.wizardStepService.setWizardSteps(this.appointmentWizardSteps);\r\n\r\n this.stepActive$ = this.wizardStepQuery.selectActive();\r\n\r\n /** Cargamos la configuración inicial del asistente de pedir cita */\r\n this.appointmentWizardSettings$ = this.appointmentWizardSettingsQuery.select();\r\n\r\n /** Obtenemos las familias sin duplicar (desarrollo de centros delegados) */\r\n this.familiesWizard$ = this.appointmentWizardSettingsQuery.selectFamiliesDistinct;\r\n\r\n /** Obtenemos los servicios */\r\n this.servicesWizard$ = this.serviceWizardQuery.selectAll();\r\n\r\n //** Obtenemos los packs */\r\n this.packsWizard$ = this.packWizardQuery.selectAll();\r\n\r\n /** Juntamos el paso 0 (Familias) y 1 (Servicios) (desarrollo de folder families) */\r\n this.appointmentWizardSettingsQuery\r\n .selectFamilyFolderTree(\r\n this.familiesWizard$,\r\n this.servicesWizard$,\r\n of([])\r\n )\r\n .pipe(\r\n takeUntil(this.familyFolderUserAction$)\r\n )\r\n .subscribe((familyFolderRoot) => {\r\n this.familyFolderTree = familyFolderRoot;\r\n\r\n this.familyFolderSlide[0] = { ...this.familyFolderTree };\r\n this.familyFolderSlideFiltered[0] = {\r\n ...this.familyFolderTree,\r\n };\r\n\r\n if (this.serviceSearchBar) {\r\n this.onChangeFamilySearchbar(\r\n this.serviceSearchBar.searchBar.value\r\n );\r\n }\r\n });\r\n\r\n this.loadingService.updateShowSpinner(true);\r\n await this.appointmentWizardSettingsService.getAppointmentWizardSettings();\r\n this.loadingService.updateShowSpinner(false);\r\n\r\n let stepInitial: WizardStep;\r\n\r\n stepInitial = this.wizardStepQuery.getEntity(\r\n IdsStepsAppointmentWizardModel.FAMILIES\r\n );\r\n\r\n this.slideOpts = {\r\n initialSlide: stepInitial.id,\r\n speed: 200,\r\n allowTouchMove: false,\r\n };\r\n Object.assign(this.swiperContainer?.nativeElement, this.slideOpts);\r\n this.swiperContainer?.nativeElement.initialize();\r\n\r\n this.goToInitStep(stepInitial);\r\n }\r\n\r\n /*------------------------------------------*/\r\n /** INSTRUCCIONES PARA CREAR UN PASO NUEVO\r\n * Para crear un paso nuevo, los requisitos son los siguientes:\r\n * Cada paso tiene que ser añadido al objeto de configuración de pasos, indicando su número de paso y su título de paso.\r\n * Cada paso tiene que tener una función inicializadora del paso,otra que lo destruya y otra que deshará la acción de ir al siguiente paso.\r\n * En estas funciones pondremos las acciones que necesitamos hacer cuando se entra a ese paso (inicialización)\r\n * en concreto y lo que hay que hacer cuando se vuelve de ese paso en concreto (limpieza)\r\n /*------------------------------------------*/\r\n\r\n /*--------------------*/\r\n /** PASO 0: FAMILIAS */\r\n /*--------------------*/\r\n\r\n initFamilyStep() {\r\n this.slideActiveIndex = 0;\r\n\r\n /** Se inicia el observable de los servicios selecionados por el usuario */\r\n this.servicesChecked$ = this.serviceWizardQuery.selectAll({\r\n filterBy: ({ checked }) => checked === true,\r\n });\r\n this.noMoreServices$ = this.servicesChecked$.pipe(\r\n map((services) => {\r\n return (\r\n services.length >=\r\n parseInt(this.companyQuery.maxServices, 10)\r\n );\r\n })\r\n );\r\n }\r\n\r\n /** Paso de familias del asistente. Hemos pulsado una familia */\r\n onFamilyClicked(family: FamilyFolderModel) {\r\n this.familyFolderUserAction$.next(true);\r\n this.resetFamilySearchbar();\r\n this.slideActiveIndex++;\r\n this.familyFolderSlide[this.slideActiveIndex] = { ...family };\r\n this.familyFolderSlideFiltered[this.slideActiveIndex] = family;\r\n this.swiperContainer?.nativeElement.swiper.slideTo(this.slideActiveIndex);\r\n }\r\n\r\n popFamilyFolder() {\r\n this.resetFamilySearchbar();\r\n this.slideActiveIndex--;\r\n this.swiperContainer?.nativeElement.swiper.slideTo(this.slideActiveIndex);\r\n }\r\n\r\n resetFamilySearchbar() {\r\n if (this.serviceSearchBar) {\r\n this.serviceSearchBar.clearInput();\r\n }\r\n\r\n if (this.genericHeader) {\r\n this.genericHeader.clearInput();\r\n }\r\n\r\n /** Flowwwer template */\r\n if (this.inputSearch) {\r\n this.inputSearch.clearInput();\r\n }\r\n\r\n this.onChangeFamilySearchbar('');\r\n }\r\n\r\n async familyNextStep() {\r\n /** Llamamos a la API para ver cual es el siguiente paso */\r\n\r\n /** Llamamos a la API para cargar los grupos de servicios.\r\n * Posibles respuestas:\r\n * 0 grupos, no es posible esa cita de ninguna forma\r\n * 1 grupo con listado de prof -> Selección de profesionales normal,\r\n * 1 grupo sin listado de prof -> Saltamos al paso de dia hora,\r\n * varios grupos con listado de prof -> Nueva selección de profesionales,\r\n * varios grupos sin listado -> Saltamos al paso de dia hora (comprobar esta casuistica con la de javi)\r\n */\r\n\r\n this.servicesGroup$ = this.servicesGroupQuery.selectAll();\r\n\r\n /** Flowwwer template */\r\n this.servicesGroup$.subscribe((servicesGroup: ServicesGroup[]) => {\r\n this.servicesGroups = servicesGroup;\r\n });\r\n\r\n this.loadingService.updateShowSpinner(true);\r\n await this.servicesGroupService.getServicesGroup();\r\n this.loadingService.updateShowSpinner(false);\r\n\r\n if (this.appointmentWizardSettingsQuery.professionals?.length > 0) {\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.PROFESSIONALS);\r\n } else {\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.DATETIME);\r\n }\r\n }\r\n\r\n familyUndoNextStep() {\r\n this.slideActiveIndex = 0;\r\n this.resetFamilySearchbar();\r\n }\r\n\r\n destroyFamilyStep() {}\r\n\r\n /** A partir del Observable de los familias se aplica un filtro de búsqueda del buscador */\r\n onChangeFamilySearchbar(searchText: string) {\r\n if (!this.familyFolderSlide[this.slideActiveIndex]) {\r\n return;\r\n }\r\n\r\n const familiesFiltered = this.familyFolderSlide[\r\n this.slideActiveIndex\r\n ].families.filter((family) => {\r\n return family.description\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .includes(\r\n searchText\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n );\r\n });\r\n\r\n const servicesFiltered = this.familyFolderSlide[\r\n this.slideActiveIndex\r\n ].services.filter((service) => {\r\n return (\r\n service.description\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .includes(\r\n searchText\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n ) ||\r\n service.clinicName\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n .includes(\r\n searchText\r\n .toLowerCase()\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '')\r\n )\r\n );\r\n });\r\n\r\n this.familyFolderSlideFiltered[\r\n this.slideActiveIndex\r\n ].families = familiesFiltered;\r\n this.familyFolderSlideFiltered[\r\n this.slideActiveIndex\r\n ].services = servicesFiltered;\r\n }\r\n\r\n /** Cuando se marca o desmarca un servicio del listado de servicios, se actualiza en la Store */\r\n onServiceClicked(serviceAndCheckedEvent: ServiceWizardCheckedEvent) {\r\n this.familyFolderUserAction$.next(true);\r\n this.serviceWizardService.setServiceChecked(\r\n serviceAndCheckedEvent.service.id,\r\n serviceAndCheckedEvent.checkedEvent\r\n );\r\n }\r\n\r\n onServiceToggle(service: ServiceWizard) {\r\n this.familyFolderUserAction$.next(true);\r\n this.serviceWizardService.toggleServiceChecked(service.id);\r\n }\r\n\r\n onPackToggle(pack: PackWizard) {\r\n\r\n pack.serviceIDs.forEach( id => {\r\n this.serviceWizardService.toggleServiceChecked(id, (!pack.isChecked || pack.joinCitation));\r\n });\r\n this.packWizardService.toggleChecked(pack);\r\n }\r\n\r\n familyActionButtonDisabled(): Observable {\r\n return this.servicesChecked$.pipe(\r\n map((servicesChecked) => {\r\n if (servicesChecked.length > 0) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n\r\n get countFamiliesAndServices() {\r\n return (\r\n this.familyFolderSlide[this.slideActiveIndex]?.families.length +\r\n this.familyFolderSlide[this.slideActiveIndex]?.services.length\r\n );\r\n }\r\n\r\n /*------------------------*/\r\n /** PASO 2: PROFESIONALES */\r\n /*------------------------*/\r\n\r\n /** Flowwwer template */\r\n updateSlideActiveProfessionalIndex(step: number) {\r\n this.slideActiveProfessionalIndex = step;\r\n this.slideActiveProfessionalIndexSubject.next(step);\r\n }\r\n initProfessionalStep() {\r\n this.updateSlideActiveProfessionalIndex(0);\r\n }\r\n\r\n /** Paso de selección de profesional. Hemos seleccionado un profesional para un grupo de citas simple */\r\n onProfessionalClickedSingleGroup(\r\n professionalServiceGroupSelected: ProfessionalServiceGroupSelected\r\n ) {\r\n this.servicesGroupService.setProfessionalWizardChecked(\r\n professionalServiceGroupSelected\r\n );\r\n this.actionNextStep();\r\n }\r\n\r\n onProfessionalClickedMultipleGroup(\r\n professionalServiceGroupSelected: ProfessionalServiceGroupSelected\r\n ) {\r\n this.servicesGroupService.setProfessionalWizardChecked(\r\n professionalServiceGroupSelected\r\n );\r\n }\r\n\r\n /** Flowwwer template */\r\n onProfessionalToggle(\r\n professionalServiceGroupSelected: ProfessionalServiceGroupSelected\r\n ) {\r\n this.servicesGroupService.toggleProfessionalWizardChecked(\r\n professionalServiceGroupSelected\r\n );\r\n }\r\n\r\n professionalsNextStep() {\r\n templateProfessionalsNextStep({\r\n defaultTemplate: this.slideMainStepProfessional,\r\n flowwwerTemplate: this.pushSlideProfessional,\r\n });\r\n }\r\n\r\n slideMainStepProfessional = () => {\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.DATETIME);\r\n };\r\n\r\n pushSlideProfessional = () => {\r\n if (\r\n this.servicesGroups.length - 1 >\r\n this.slideActiveProfessionalIndex\r\n ) {\r\n this.updateSlideActiveProfessionalIndex(\r\n ++this.slideActiveProfessionalIndex\r\n );\r\n this.swiperContainer?.nativeElement.swiper.slideTo(\r\n IdsStepsAppointmentWizardModel.PROFESSIONALS +\r\n this.slideActiveProfessionalIndex\r\n );\r\n } else {\r\n this.slideMainStepProfessional();\r\n }\r\n };\r\n\r\n popSlideProfessional() {\r\n this.updateSlideActiveProfessionalIndex(\r\n --this.slideActiveProfessionalIndex\r\n );\r\n this.swiperContainer?.nativeElement.swiper.slideTo(\r\n IdsStepsAppointmentWizardModel.PROFESSIONALS +\r\n this.slideActiveProfessionalIndex\r\n );\r\n }\r\n\r\n goBackSlideProfessional(): boolean {\r\n return templateGoBackSlideProfessional({\r\n defaultTemplate: this.goBackProfessionalDefault,\r\n flowwwerTemplate: this.goBackProfessionalFlowwwer,\r\n });\r\n }\r\n\r\n goBackProfessionalDefault = (): boolean => {\r\n return true;\r\n };\r\n\r\n goBackProfessionalFlowwwer = (): boolean => {\r\n if (this.slideActiveProfessionalIndex > 0) {\r\n this.popSlideProfessional();\r\n return false;\r\n }\r\n return true;\r\n };\r\n\r\n /** Solo se hace el reset del profesional si estamos en un único grupo (NO CITA COMPUESTA) */\r\n professionalUndoNextStep() {\r\n templateProfessionalUndoNextStep({\r\n defaultTemplate: this.professionalUndoNextStepDefault,\r\n flowwwerTemplate: this.professionalUndoNextStepFlowwwer,\r\n });\r\n }\r\n\r\n professionalUndoNextStepDefault = () => {\r\n if (this.servicesGroupQuery.getAll().length === 1) {\r\n this.servicesGroupService.resetProfessionalWizardCheckedSingleGroup();\r\n }\r\n };\r\n\r\n professionalUndoNextStepFlowwwer = () => {\r\n this.updateSlideActiveProfessionalIndex(0);\r\n };\r\n\r\n professionalsActionButtonDisabled(): Observable {\r\n return templateProfessionalsActionButtonDisabled({\r\n defaultTemplate: this.professionalsActionButtonDisabledDefault,\r\n flowwwerTemplate: this.professionalsActionButtonDisabledFlowwwer,\r\n });\r\n }\r\n\r\n professionalsActionButtonDisabledDefault = (): Observable => {\r\n return this.servicesGroup$.pipe(\r\n map((servicesGroups: ServicesGroup[]) => {\r\n let valid = true;\r\n\r\n servicesGroups.forEach((servicesGroup: ServicesGroup) => {\r\n if (!servicesGroup.professionalSelected) {\r\n valid = false;\r\n }\r\n });\r\n\r\n return !valid;\r\n })\r\n );\r\n };\r\n\r\n professionalsActionButtonDisabledFlowwwer = (): Observable => {\r\n return combineLatest([\r\n this.servicesGroup$,\r\n this.slideActiveProfessionalIndexSubject,\r\n ]).pipe(\r\n map(([servicesGroups, slideActiveProfessionalIndex]) => {\r\n return (\r\n servicesGroups[slideActiveProfessionalIndex]\r\n ?.professionalSelected === null\r\n );\r\n })\r\n );\r\n };\r\n\r\n professionalsStepCheckShowActionButton(): Observable {\r\n return templateProfessionalsStepCheckShowActionButton({\r\n defaultTemplate: this.professionalsStepCheckShowActionButtonDefault,\r\n flowwwerTemplate: this\r\n .professionalsStepCheckShowActionButtonFlowwwer,\r\n });\r\n }\r\n\r\n professionalsStepCheckShowActionButtonDefault = (): Observable => {\r\n return this.servicesGroup$.pipe(\r\n map((servicesGroups: ServicesGroup[]) => {\r\n if (servicesGroups.length > 1) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n })\r\n );\r\n };\r\n\r\n professionalsStepCheckShowActionButtonFlowwwer = (): Observable<\r\n boolean\r\n > => {\r\n return of(true);\r\n };\r\n\r\n destroyProfessionalsStep() {\r\n this.servicesGroupService.resetStore();\r\n }\r\n\r\n /*------------------------*/\r\n /** PASO 3: DÍA Y HORA */\r\n /*------------------------*/\r\n async initDatetimeStep() {\r\n /** Indicamos al componente hijo de calendario que inicialice el mes actual en el que está */\r\n this.configIsDisabledDate();\r\n this.times$ = this.appointmentWizardTimeQuery.selectAll();\r\n\r\n this.dateActive$ = this.appointmentWizardDateQuery.selectActive();\r\n this.timeActive$ = this.appointmentWizardTimeQuery.selectActive();\r\n\r\n this.timeLoading$ = this.appointmentWizardTimeQuery.selectLoading();\r\n\r\n /** TODO: Mirar si podemos acceder a este dato de otra forma, con ngmodel o algo así */\r\n /** Lanzamos automáticamente los eventos del calendar con la fecha actual (usamos el parámetro date del calendar */\r\n await this.getDatesDisabled({\r\n year: this.calendar.date.year,\r\n month: this.calendar.date.month,\r\n day: 1,\r\n });\r\n\r\n this.onDateSelect(this.calendar.date);\r\n }\r\n\r\n /** Función que calcula las horas seleccionables para reservar la cita */\r\n async onDateSelect(date: NgbDateStruct) {\r\n this.isLoadingContent = true;\r\n if (this.servicesGroupQuery.getAll().length === 1) {\r\n try {\r\n await this.appointmentWizardTimeService.getTimesSingleGroup(\r\n date,\r\n this.servicesGroupQuery.getAll()[0].clinicId\r\n );\r\n } catch (error) {\r\n this.isLoadingContent = false;\r\n }\r\n } else {\r\n try {\r\n await this.appointmentWizardTimeService.getTimesMultipleGroup(\r\n date\r\n );\r\n } catch (error) {\r\n this.isLoadingContent = false;\r\n }\r\n }\r\n this.isLoadingContent = false;\r\n }\r\n\r\n async onCalendarChange(day: NgbDateStruct) {\r\n await this.getDatesDisabled(day);\r\n /** Borramos el listado de horas para no confundir al usuario */\r\n this.appointmentWizardTimeService.resetStore();\r\n\r\n /** Si la fecha que tenemos marcada es de este mes, llamamos a la api para cargar las horas */\r\n if (this.calendar.date.month === day.month) {\r\n this.onDateSelect(this.calendar.date);\r\n }\r\n }\r\n\r\n async getDatesDisabled(day: NgbDateStruct) {\r\n /** Esto solo se hace si tenemos 1 solo grupo de servicios */\r\n if (this.servicesGroupQuery.getAll().length === 1) {\r\n this.loadingService.updateShowSpinner(true);\r\n await this.appointmentWizardDateService.getDatesDisabled(\r\n day,\r\n this.servicesGroupQuery.getAll()[0].clinicId\r\n );\r\n this.loadingService.updateShowSpinner(false);\r\n }\r\n }\r\n\r\n onTimeClicked(time: AppointmentWizardTime) {\r\n this.appointmentWizardTimeService.setActive(\r\n time.clinicId + '_' + time.date + '_' + time.timeStart\r\n );\r\n this.actionNextStep();\r\n }\r\n\r\n /** Flowwwer template */\r\n onTimeSelected(time: AppointmentWizardTime) {\r\n this.appointmentWizardTimeService.setActive(\r\n time.clinicId + '_' + time.date + '_' + time.timeStart\r\n );\r\n }\r\n\r\n formatDateDisabled(dateString: string): NgbDateStruct {\r\n const splitDate = dateString.split('-');\r\n return {\r\n year: Number(splitDate[0]),\r\n month: Number(splitDate[1]),\r\n day: Number(splitDate[2]),\r\n };\r\n }\r\n\r\n /** Con esta función vamos a suscribirnos a los cambios de los días deshabilitados que se encuentran en store para que se reflejen en\r\n * el calendar\r\n */\r\n configIsDisabledDate() {\r\n this.appointmentWizardDateQuery\r\n .selectAll({\r\n filterBy: ({ availability }) => !availability,\r\n })\r\n .pipe(\r\n map((dates) => {\r\n const datesArray: NgbDateStruct[] = [];\r\n dates.map((date) => {\r\n if (!date.availability) {\r\n datesArray.push(this.formatDateDisabled(date.date));\r\n }\r\n });\r\n return datesArray;\r\n })\r\n )\r\n .subscribe((datesDisabled) => {\r\n this.isDisabledDateCalendar = (\r\n date: NgbDateStruct,\r\n current: { month: number; year: number }\r\n ) => {\r\n return !!datesDisabled.find((x) =>\r\n NgbDate.from(x).equals(date)\r\n );\r\n };\r\n });\r\n }\r\n\r\n dateTimeNextStep() {\r\n /** Antes de pasar a la confirmación, tenemos que comprobar si el usuario está registrado */\r\n if (this.userQuery.tokenId !== '') {\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.CONFIRM);\r\n } else {\r\n //this.goToNextStep(IdsStepsAppointmentWizardModel.SOCIAL_LOGIN); E.C.S: Se desactiva esta funcionalidad momentaneamente\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.REGISTER);\r\n }\r\n }\r\n\r\n datetimeUndoNextStep() {}\r\n\r\n destroyDateTimeStep() {\r\n this.calendar.resetCalendar();\r\n this.appointmentWizardTimeService.resetStore();\r\n this.appointmentWizardDateService.resetStore();\r\n }\r\n\r\n /** Flowwwer template */\r\n datetimeStepCheckShowActionButton() {\r\n return templateDatetimeStepCheckShowActionButton({\r\n defaultTemplate: this.datetimeStepCheckShowActionButtonDefault,\r\n flowwwerTemplate: this.datetimeStepCheckShowActionButtonFlowwwer,\r\n });\r\n }\r\n\r\n datetimeStepCheckShowActionButtonDefault() {\r\n return of(false);\r\n }\r\n\r\n datetimeStepCheckShowActionButtonFlowwwer() {\r\n return of(true);\r\n }\r\n\r\n datetimeActionButtonDisabled(): Observable {\r\n return templateDatetimeActionButtonDisabled({\r\n defaultTemplate: this.templateDatetimeActionButtonDisabledDefault,\r\n flowwwerTemplate: this.templateDatetimeActionButtonDisabledFlowwwer,\r\n });\r\n }\r\n\r\n templateDatetimeActionButtonDisabledDefault() {\r\n of(false);\r\n }\r\n\r\n templateDatetimeActionButtonDisabledFlowwwer = (): Observable => {\r\n return this.appointmentWizardTimeService.selectActive().pipe(\r\n map((timeActive) => {\r\n return !timeActive;\r\n })\r\n );\r\n };\r\n\r\n /*---------------------------*/\r\n /** PASO 4: SOCIAL LOGIN --- */\r\n /*---------------------------*/\r\n initSocialLoginStep() {\r\n this.socialLoginListener();\r\n }\r\n\r\n registerDefault() {\r\n this.actionNextStep();\r\n }\r\n\r\n socialLoginNextStep() {\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.REGISTER);\r\n }\r\n\r\n socialLoginUndoNextStep() {\r\n this.socialLoginListener();\r\n }\r\n\r\n socialLoginListener() {\r\n this.socialLoginService.resetStore();\r\n this.clientDataSocialLogin = {};\r\n this.socialLoginResponse$?.unsubscribe();\r\n this.socialLoginResponse$ = this.socialLoginQuery\r\n .select()\r\n .pipe(\r\n filter((socialLogin) => {\r\n return (\r\n socialLogin.socialLoginSuccess ||\r\n socialLogin.socialLoginFail\r\n );\r\n }),\r\n take(1)\r\n )\r\n .subscribe(async (socialLogin) => {\r\n if (socialLogin.socialLoginSuccess) {\r\n // TODO, si redigijo, controlar que no de error y me quede en la misma página porque ya estoy desuscrito\r\n\r\n /** Social Login correcto, se ha encontrado al usuario, redirigir */\r\n try {\r\n await this.userService.checkUserAndLoad();\r\n if (this.companyQuery.clientAdvisor) {\r\n await this.userService.getReferrerData();\r\n }\r\n } catch (e) {\r\n this.dismissModal();\r\n this.routerService.goToMainTabWithoutLogin();\r\n }\r\n\r\n /** Si puedo mostrar el tab de details redirijo a details, si no a perfil */\r\n this.goToNextStep(\r\n IdsStepsAppointmentWizardModel.CONFIRM,\r\n false\r\n );\r\n }\r\n\r\n if (socialLogin.socialLoginFail) {\r\n // TODO, si redigijo, controlar que no de error y me quede en la misma página porque ya estoy desuscrito\r\n /** Social Login incorrecto, NO se ha encontrado al usuario, ir a Registro con los datos precargados */\r\n /** No borrar store, la borra la pantalla de REGISTRO */\r\n this.clientDataSocialLogin = socialLogin.clientData;\r\n this.socialLoginService.resetStore();\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.REGISTER);\r\n }\r\n });\r\n }\r\n\r\n destroySocialLoginStep() {}\r\n\r\n /*------------------------*/\r\n /** PASO 4: REGISTER- --- */\r\n /*------------------------*/\r\n // TODO: clear del formulario al entrar\r\n initRegisterStep() {\r\n this.clinicDetailRgpdDisable$ = this.clinicDetailQuery.select(\r\n 'RGPDDisable'\r\n );\r\n }\r\n\r\n async registerNextStep() {\r\n /** Validamos el registro y pasamos al siguiente paso si está todo_ OK */\r\n this.loadingService.updateShowSpinner(true);\r\n await this.submitRegisterForm();\r\n this.loadingService.updateShowSpinner(false);\r\n }\r\n\r\n async submitRegisterForm() {\r\n if (this.registerFormComponent.registerForm.invalid) {\r\n Object.values(\r\n this.registerFormComponent.registerForm.controls\r\n ).forEach((control) => {\r\n control.markAsTouched();\r\n });\r\n return;\r\n }\r\n\r\n /** Validaciones adicionales de checkboxes */\r\n if (!this.registerFormComponent.userEnableGeneralConditions) {\r\n this.toastService.presentErrorToast(\r\n this.libraryService.getLabel('app_privacy_policy_mandatory')\r\n );\r\n return;\r\n }\r\n\r\n const userRegister: UserRegisterModel = {\r\n name: this.registerFormComponent.registerForm.value.userName,\r\n surname1: this.companyQuery.nameSplit\r\n ? this.registerFormComponent.registerForm.value.userSurname1 ??\r\n ''\r\n : '',\r\n surname2: this.companyQuery.nameSplit\r\n ? this.registerFormComponent.registerForm.value.userSurname2 ??\r\n ''\r\n : '',\r\n phone:\r\n this.registerFormComponent.registerForm.value.userPhone ?? '',\r\n email:\r\n this.registerFormComponent.registerForm.value.userEmail ?? '',\r\n referrerCode:\r\n this.registerFormComponent.registerForm.value\r\n .userReferrerCode ?? '',\r\n enableGeneralConditions: this.registerFormComponent\r\n .userEnableGeneralConditions,\r\n enableRgpd: this.clinicDetailQuery.RGPDDisable\r\n ? true\r\n : this.registerFormComponent.userEnableRgpd,\r\n };\r\n /** Registramos el usuario y lo logeamos en el sistema */\r\n /** OTP: Si no da error, y no se devuelve el clientToken es porque\r\n * hay que pedir OTP para completar registro */\r\n const { clientToken, hashCode } = await this.userService.registerUser(\r\n userRegister\r\n );\r\n if (!clientToken) {\r\n /** Abrimos modal de OTP y esperamos a que se cierre para decidir que hacer */\r\n const otpModal = await this.modalController.create({\r\n component: OtpModalComponent,\r\n componentProps: {\r\n hashCode,\r\n email: this.registerFormComponent.registerForm.value\r\n .userEmail\r\n },\r\n });\r\n await otpModal.present();\r\n const { data } = await otpModal.onDidDismiss();\r\n if (data?.action === OTPModalDismissActions.NONE) {\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n await this.userService.checkUserAndLoad();\r\n if (this.companyQuery.clientAdvisor) {\r\n await this.userService.getReferrerData();\r\n }\r\n } catch (e) {\r\n this.dismissModal();\r\n this.routerService.goToMainTabWithoutLogin();\r\n }\r\n\r\n // Además borramos el paso del login social para no volver a él tampoco\r\n this.appointmentWizardSettingsService.removeStepFromStepStack(\r\n IdsStepsAppointmentWizardModel.SOCIAL_LOGIN\r\n );\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.CONFIRM, false);\r\n }\r\n\r\n registerUndoNextStep() {}\r\n\r\n destroyRegisterStep() {}\r\n\r\n /*------------------------*/\r\n /** PASO 5: CONFIRMAR --- */\r\n /*------------------------*/\r\n initConfirmStep() {\r\n this.paymentWizardSettingsService.getPaymentWizardSettings();\r\n }\r\n\r\n confirmNextStep() {\r\n\r\n if (this.userQuery.appDisabled) {\r\n this.dismissModal();\r\n this.toastService.presentErrorToast(\r\n this.libraryService.getLabel('lbl_error_booking')\r\n );\r\n return;\r\n }\r\n\r\n /** Vamos a comprobar si hay que hacer el pago opcionalmente (preguntaremos al usuario), obligatoriamente (iremos al paso de\r\n * pagar, o no hay que pagar (haremos la reserva de la cita) */\r\n const appSchedAndBuy = this.paymentWizardSettingsQuery\r\n .clinicAppSchedAndBuy;\r\n\r\n switch (appSchedAndBuy) {\r\n case '0':\r\n /** Hacemos la reserva\r\n * TODO: Errores al reservar */\r\n this.confirmAppointment();\r\n break;\r\n case '-1':\r\n /** Preguntamos al usuario */\r\n this.optionalPaymentWizard();\r\n break;\r\n case '-2':\r\n /** Siguiente paso: Elegir métodos de pago */\r\n /** Vamos a la pantalla de pago */\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.PAYMETHODS);\r\n break;\r\n default:\r\n /** TODO: Mostrar error??¿?¿ */\r\n break;\r\n }\r\n }\r\n\r\n async optionalPaymentWizard() {\r\n const actionSheet = await this.actionSheetController.create({\r\n mode: this.platform.is('android') ? 'md' : 'ios',\r\n header: this.libraryService.getLabel(\r\n 'app_ask_sched_title_action_sheet'\r\n ),\r\n cssClass: 'appointment-slide-sheet',\r\n buttons: [\r\n {\r\n text: this.libraryService.getLabel(\r\n 'app_ask_sched_continue_action_sheet'\r\n ),\r\n role: 'continue',\r\n handler: () => {},\r\n },\r\n {\r\n text: this.libraryService.getLabel(\r\n 'app_ask_sched_cancel_action_sheet'\r\n ),\r\n role: 'close',\r\n handler: () => {},\r\n },\r\n ],\r\n });\r\n await actionSheet.present();\r\n\r\n const r = await actionSheet.onDidDismiss();\r\n if (r.role === 'continue') {\r\n /** Vamos a la pantalla de pago */\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.PAYMETHODS);\r\n }\r\n if (r.role === 'close') {\r\n /** Confirmamos la cita */\r\n this.confirmAppointment();\r\n }\r\n }\r\n\r\n /** TODO: Manejar el error, podemos estar en la pantalla de confirmar o en la de pago */\r\n async confirmAppointment() {\r\n let appointmentId = '';\r\n this.loadingService.updateShowSpinner(true);\r\n if (this.servicesGroupQuery.getAll().length === 1) {\r\n appointmentId = await this.appointmentWizardSettingsService.makeAppointmentSingleGroup(\r\n this.servicesGroupQuery.getAll()[0].clinicId\r\n );\r\n } else {\r\n appointmentId = await this.appointmentWizardSettingsService.makeAppointmentMultipleGroup();\r\n }\r\n this.loadingService.updateShowSpinner(false);\r\n\r\n /** Añadir citas a google calendar */\r\n this.calendarDeviceService.addAppointmentToCalendarDevice(\r\n appointmentId\r\n );\r\n\r\n this.appointmentService.getAppointments();\r\n this.treatmentService.getTreatments();\r\n try {\r\n this.userService.checkUserAndLoad(true);\r\n } catch (e) {\r\n this.routerService.goToMainTabWithoutLogin();\r\n }\r\n\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.RESULT);\r\n }\r\n\r\n confirmActionButtonDisabled() {\r\n return combineLatest([\r\n this.servicesChecked$,\r\n this.dateActive$,\r\n this.timeActive$,\r\n ]).pipe(\r\n map(([services, date, time]) => {\r\n if (\r\n services.length > 0 &&\r\n date?.date !== '' &&\r\n time?.timeStart !== ''\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n })\r\n );\r\n }\r\n\r\n destroyConfirmStep() {\r\n this.paymethodWizardService.resetStore();\r\n this.paymentWizardSettingsService.resetStore();\r\n }\r\n\r\n getActionLabelConfirmStep() {\r\n return this.paymentWizardSettingsQuery\r\n .select('clinicAppSchedAndBuy')\r\n .pipe(\r\n map((clinicAppSchedAndBuy) => {\r\n if (clinicAppSchedAndBuy === '-2') {\r\n return 'app_prepaid_ask';\r\n } else {\r\n return 'app_ask_sched_step_5_button_confirm';\r\n }\r\n })\r\n );\r\n }\r\n\r\n /*--------------------------------------*/\r\n /** PASO 6: Listado métodos de pago --- */\r\n /*--------------------------------------*/\r\n\r\n initPaymethodStep() {\r\n this.paymethodsWizard$ = this.paymethodWizardQuery.selectAll();\r\n }\r\n\r\n async onPaymethodClicked(paymethod: PaymethodWizard) {\r\n this.paymethodWizardService.setActive(paymethod.id);\r\n\r\n /** TODO: ver como hacerlo mejor. El set de akita no es asincrono? */\r\n /** Esperamos a que Akita marque como activo el método de pago para continuar */\r\n await this.paymethodWizardQuery.selectActive().pipe(\r\n filter((data) => data !== null && data !== undefined),\r\n take(1)\r\n );\r\n this.actionNextStep();\r\n }\r\n\r\n /** Flowwwer template */\r\n async onPaymethodTogle(paymethod: PaymethodWizard) {\r\n const checked = !this.paymethodWizardQuery.getEntity(paymethod.id)\r\n .checked;\r\n\r\n this.paymethodWizardService.togglePaymethodChecked(paymethod.id);\r\n\r\n if (checked) {\r\n this.paymethodWizardService.setActive(paymethod.id);\r\n\r\n /** TODO: ver como hacerlo mejor */\r\n /** Esperamos a que Akita marque como activo el método de pago para continuar */\r\n await this.paymethodWizardQuery.selectActive().pipe(\r\n filter((data) => data !== null && data !== undefined),\r\n take(1)\r\n );\r\n } else {\r\n this.paymethodWizardService.setActive(null);\r\n }\r\n }\r\n\r\n paymethodNextStep() {\r\n this.paymentWizardSettingsService.createUrlPaymentByAppointment();\r\n this.goToNextStep(IdsStepsAppointmentWizardModel.PAYMENT);\r\n }\r\n\r\n paymethodUndoNextStep() {\r\n templatePaymethodUndoNextStep({\r\n defaultTemplate: this.templatePaymethodUndoNextStepDefault,\r\n flowwwerTemplate: this.templatePaymethodUndoNextStepFlowwwer,\r\n });\r\n }\r\n\r\n templatePaymethodUndoNextStepDefault = () => {\r\n this.paymethodWizardService.setActive(null);\r\n };\r\n\r\n templatePaymethodUndoNextStepFlowwwer = () => {};\r\n\r\n destroyPaymethodStep() {}\r\n\r\n paymethodsStepCheckShowActionButton() {\r\n return templatePaymethodsStepCheckShowActionButton({\r\n defaultTemplate: this.paymethodsStepCheckShowActionButtonDefault,\r\n flowwwerTemplate: this.paymethodsStepCheckShowActionButtonFlowwwer,\r\n });\r\n }\r\n\r\n paymethodsStepCheckShowActionButtonDefault() {\r\n return of(false);\r\n }\r\n\r\n paymethodsStepCheckShowActionButtonFlowwwer() {\r\n return of(true);\r\n }\r\n\r\n paymethodsActionButtonDisabled(): Observable {\r\n return templatePaymethodsActionButtonDisabled({\r\n defaultTemplate: this.templatepaymethodsActionButtonDisabledDefault,\r\n flowwwerTemplate: this\r\n .templatepaymethodsActionButtonDisabledFlowwwer,\r\n });\r\n }\r\n\r\n templatepaymethodsActionButtonDisabledDefault() {\r\n of(false);\r\n }\r\n\r\n templatepaymethodsActionButtonDisabledFlowwwer = (): Observable<\r\n boolean\r\n > => {\r\n return this.paymethodWizardQuery.selectActive().pipe(\r\n map((paymethodActive) => {\r\n return !paymethodActive;\r\n })\r\n );\r\n };\r\n /*--------------------------------------*/\r\n /** PASO 7: Pago en proceso------------ */\r\n /*--------------------------------------*/\r\n\r\n initPaymentStep() {\r\n const paymethodActive: PaymethodWizard = this.paymethodWizardQuery.getActive();\r\n this.urlPaymentSafe$ = this.paymentWizardSettingsQuery.selectUrlPaymentSafe();\r\n\r\n /** Creamos un listener para escuchar las respuestas de los iframes de pago */\r\n window.addEventListener(\r\n 'message',\r\n (this.listenerEventsPayment = (event) => {\r\n switch (event.data) {\r\n /** Pago OK de cualquier método. Realizar la compra */\r\n case paymethodActive.url_ok: {\r\n this.ngZone.run(() => {\r\n this.confirmAppointment();\r\n });\r\n\r\n window.removeEventListener(\r\n 'message',\r\n this.listenerEventsPayment\r\n );\r\n break;\r\n }\r\n\r\n case paymethodActive.url_err: {\r\n this.ngZone.run(() => {\r\n this.goToPrevStep();\r\n });\r\n this.showAlertErrorPay(\r\n this.libraryService.getLabel('app_buy_step_4b_desc')\r\n );\r\n window.removeEventListener(\r\n 'message',\r\n this.listenerEventsPayment\r\n );\r\n break;\r\n }\r\n }\r\n })\r\n );\r\n }\r\n\r\n async showAlertErrorPay(message: string) {\r\n const alert = await this.alertCtrl.create({\r\n mode: this.platform.is('android') ? 'md' : 'ios',\r\n message,\r\n buttons: [\r\n {\r\n text: 'OK',\r\n role: 'ok',\r\n },\r\n ],\r\n });\r\n await alert.present();\r\n }\r\n\r\n /** No tiene siguiente paso */\r\n paymentNextStep() {}\r\n\r\n /** No hay que hacer un undo del siguiente paso porque no tiene */\r\n paymentUndoNextStep() {}\r\n\r\n destroyPaymentStep() {\r\n this.paymentWizardSettingsService.resetUrlPayment();\r\n window.removeEventListener('message', this.listenerEventsPayment);\r\n }\r\n\r\n /*--------------------------------------*/\r\n /** PASO 8: Resultado del asistente---- */\r\n /*--------------------------------------*/\r\n initResultStep() {}\r\n\r\n /** Flowwwer template */\r\n resultNextStep() {\r\n this.dismissModal();\r\n }\r\n\r\n resultUndoNextStep() {}\r\n\r\n destroyResultStep() {}\r\n\r\n /** Flowwwer template */\r\n resultStepCheckShowActionButton() {\r\n return templateResultStepCheckShowActionButton({\r\n defaultTemplate: this.resultStepCheckShowActionButtonDefault,\r\n flowwwerTemplate: this.resultStepCheckShowActionButtonFlowwwer,\r\n });\r\n }\r\n\r\n resultStepCheckShowActionButtonDefault() {\r\n return of(false);\r\n }\r\n\r\n resultStepCheckShowActionButtonFlowwwer() {\r\n return of(true);\r\n }\r\n\r\n /*---------------------------*/\r\n /** DESTRUIR MODAL ASISTENTE */\r\n /*---------------------------*/\r\n\r\n ngOnDestroy(): void {\r\n this.appointmentWizardSettingsService.resetStore();\r\n this.serviceWizardService.resetStore();\r\n this.appointmentWizardDateService.resetStore();\r\n this.appointmentWizardTimeService.resetStore();\r\n this.wizardStepService.resetStore();\r\n this.paymethodWizardService.resetStore();\r\n this.paymentWizardSettingsService.resetStore();\r\n this.servicesGroupService.resetStore();\r\n window.removeEventListener('message', this.listenerEventsPayment);\r\n }\r\n}\r\n","import { Observable, of } from 'rxjs';\r\nimport { TemplateFunctionsModel } from 'src/app/shared/models/template-functions';\r\nimport { IdsStepsAppointmentWizardModel } from 'src/app/shared/models/idsStepsAppointmentWizard.model';\r\n\r\nexport function templateProfessionalsActionButtonDisabled({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateProfessionalsStepCheckShowActionButton({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateProfessionalsNextStep({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): void {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateGoBackSlideProfessional({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): boolean {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateProfessionalUndoNextStep({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): void {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateDatetimeStepCheckShowActionButton({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateDatetimeActionButtonDisabled({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templatePaymethodsStepCheckShowActionButton({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templatePaymethodsActionButtonDisabled({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templatePaymethodUndoNextStep({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nexport function templateResultStepCheckShowActionButton({\r\n flowwwerTemplate,\r\n}: TemplateFunctionsModel): Observable {\r\n return flowwwerTemplate();\r\n}\r\n\r\nconst FAMILIES = IdsStepsAppointmentWizardModel.FAMILIES;\r\nconst PROFESSIONALS = IdsStepsAppointmentWizardModel.PROFESSIONALS;\r\nconst DATETIME = IdsStepsAppointmentWizardModel.DATETIME;\r\nconst SOCIAL_LOGIN = IdsStepsAppointmentWizardModel.SOCIAL_LOGIN;\r\nconst REGISTER = IdsStepsAppointmentWizardModel.REGISTER;\r\nconst CONFIRM = IdsStepsAppointmentWizardModel.CONFIRM;\r\nconst PAYMETHODS = IdsStepsAppointmentWizardModel.PAYMETHODS;\r\nconst PAYMENT = IdsStepsAppointmentWizardModel.PAYMENT;\r\nconst RESULT = IdsStepsAppointmentWizardModel.RESULT;\r\n\r\nexport const stepsLabels = {\r\n FAMILIES: 'app_ask_sched_step_1_title',\r\n PROFESSIONALS: 'app_ask_sched_step_1b_title',\r\n DATETIME: 'app_ask_sched_step_2_title',\r\n SOCIAL_LOGIN: 'app_registration_title_header',\r\n REGISTER: 'app_registration_title_header',\r\n CONFIRM: 'app_sched_ask',\r\n PAYMETHODS: 'app_buy_step_2_title',\r\n PAYMENT: 'app_buy_step_3_title',\r\n RESULT: 'app_appointment_result_step_title',\r\n};\r\n","export enum IdsStepsAppointmentWizardModel {\r\n FAMILIES,\r\n PROFESSIONALS = 10,\r\n DATETIME = 20,\r\n SOCIAL_LOGIN,\r\n REGISTER,\r\n CONFIRM,\r\n PAYMETHODS,\r\n PAYMENT,\r\n RESULT,\r\n}\r\n","export interface AppointmentWizardDate {\r\n date: string /** Fecha en formato yyyy-mm-dd */;\r\n availability: boolean /** Indica si se debe de deshabilitar en el calendario */;\r\n}\r\n\r\n/**\r\n * A factory function that creates AppointmentWizardDate\r\n */\r\nexport function createAppointmentWizardDate(\r\n params: Partial\r\n) {\r\n return {} as AppointmentWizardDate;\r\n}\r\n\r\n/**\r\n * Factoría que crea una Appointment con los datos recogidos por la API\r\n */\r\nexport function appointmentWizardDateFactory(params: any) {\r\n return {\r\n date: params.DiaryDate,\r\n availability: params.Availability,\r\n } as AppointmentWizardDate;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { QueryEntity } from '@datorama/akita';\r\nimport {\r\n AppointmentWizardDateStore,\r\n AppointmentWizardDateState,\r\n} from './appointment-wizard-date.store';\r\nimport { AppointmentWizardDate } from './appointment-wizard-date.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AppointmentWizardDateQuery extends QueryEntity<\r\n AppointmentWizardDateState,\r\n AppointmentWizardDate\r\n> {\r\n constructor(protected store: AppointmentWizardDateStore) {\r\n super(store);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ID } from '@datorama/akita';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { AppointmentWizardDateStore } from './appointment-wizard-date.store';\r\nimport {\r\n AppointmentWizardDate,\r\n appointmentWizardDateFactory,\r\n} from './appointment-wizard-date.model';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageService } from '../../../core/services/language/language.service';\r\nimport { SettingsQuery } from '../settings/settings.query';\r\nimport { CompanyQuery } from '../company/company.query';\r\nimport { ClinicDetailQuery } from '../clinic-detail/clinic-detail.query';\r\nimport { ServiceWizardQuery } from '../service-wizard/service-wizard.query';\r\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport { AppointmentWizardDateQuery } from './appointment-wizard-date.query.';\r\nimport { ApiService } from 'src/app/core/services/api/api.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppointmentWizardDateService {\r\n constructor(\r\n private appointmentWizardDateStore: AppointmentWizardDateStore,\r\n private http: HttpClient,\r\n private languageService: LanguageService,\r\n private settingsQuery: SettingsQuery,\r\n private companyQuery: CompanyQuery,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private appointmentWizardDateQuery: AppointmentWizardDateQuery,\r\n private apiService: ApiService\r\n ) {}\r\n\r\n /*---------------------*/\r\n /** OPERACIONES ENTITY */\r\n /*---------------------*/\r\n\r\n add(appointmentWizardDate: AppointmentWizardDate) {\r\n this.appointmentWizardDateStore.add(appointmentWizardDate);\r\n }\r\n\r\n update(id, appointmentWizardDate: Partial) {\r\n this.appointmentWizardDateStore.update(id, appointmentWizardDate);\r\n }\r\n\r\n remove(id: ID) {\r\n this.appointmentWizardDateStore.remove(id);\r\n }\r\n\r\n setAppointmentWizardDates(dates: AppointmentWizardDate[]) {\r\n this.appointmentWizardDateStore.set(dates);\r\n }\r\n\r\n /*---------------*/\r\n /** LLAMADAS API */\r\n /*---------------*/\r\n\r\n /**\r\n * Llamada api para obtener los días disponibles de un mes para una clínica\r\n */\r\n private getDatesApi(\r\n systemKey: string,\r\n clinicId: string,\r\n services: string,\r\n date: string\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('Services', services);\r\n params = params.append('DiaryDate', date);\r\n params = params.append('Cmd', 'c1042a');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n\r\n /**\r\n * Llama a la API para obtener las fechas del mes\r\n */\r\n async getDatesDisabled(date: NgbDateStruct, currentClinicId: string) {\r\n /** Los servicios seleccionados los cogemos de Akita */\r\n const servicesChekedArrayId = [];\r\n const servicesCheked = this.serviceWizardQuery\r\n .getAll({\r\n filterBy: ({ checked }) => checked === true,\r\n })\r\n .forEach((service) => {\r\n servicesChekedArrayId.push(service.id);\r\n });\r\n const dates = await this.getDatesApi(\r\n this.settingsQuery.systemKeyURL,\r\n currentClinicId,\r\n servicesChekedArrayId.join(','),\r\n `${date.year}-${date.month}-${date.day}`\r\n ).toPromise();\r\n\r\n /**\r\n * Cargamos las clínicas a la Store\r\n */\r\n this.setAppointmentWizardDatesByApi(dates.MonthlyAvailability);\r\n }\r\n\r\n /**\r\n * Crea las citas a partir de una Array y las carga en el Store\r\n */\r\n setAppointmentWizardDatesByApi(dates) {\r\n const appointmentWizardDates = this.appointmentWizardDateQuery.getAll();\r\n dates.forEach((date) => {\r\n appointmentWizardDates.push(appointmentWizardDateFactory(date));\r\n });\r\n\r\n this.setAppointmentWizardDates(appointmentWizardDates);\r\n }\r\n\r\n resetStore() {\r\n this.appointmentWizardDateStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActiveState,\r\n EntityState,\r\n EntityStore,\r\n StoreConfig,\r\n} from '@datorama/akita';\r\nimport { AppointmentWizardDate } from './appointment-wizard-date.model';\r\n\r\nexport interface AppointmentWizardDateState\r\n extends EntityState,\r\n ActiveState {}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({\r\n name: 'appointment-wizard-date',\r\n idKey: 'date',\r\n resettable: true,\r\n})\r\nexport class AppointmentWizardDateStore extends EntityStore<\r\n AppointmentWizardDateState,\r\n AppointmentWizardDate\r\n> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Query } from '@datorama/akita';\r\nimport {\r\n AppointmentWizardSettingsStore,\r\n AppointmentWizardSettingsState,\r\n} from './appointment-wizard-settings.store';\r\nimport { map } from 'rxjs/operators';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport { FamilyWizardModel } from '../../models/family-wizard.model';\r\nimport { FamilyFolderModel } from '../../models/family-folder.model';\r\nimport { ServiceWizard } from '../service-wizard/service-wizard.model';\r\nimport { CommonWizardService } from '../../../core/services/common-wizard/common-wizard.service';\r\nimport { ProductWizard } from '../product-wizard/product-wizard.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppointmentWizardSettingsQuery extends Query<\r\n AppointmentWizardSettingsState\r\n> {\r\n constructor(\r\n protected store: AppointmentWizardSettingsStore,\r\n private commonWizardService: CommonWizardService\r\n ) {\r\n super(store);\r\n }\r\n\r\n /*-----------*/\r\n /** GETTERS */\r\n /*----------*/\r\n\r\n get stepStack() {\r\n return this.getValue()?.stepStack;\r\n }\r\n\r\n get families() {\r\n return this.getValue()?.families;\r\n }\r\n\r\n get professionals() {\r\n return this.getValue()?.professionals;\r\n }\r\n\r\n get selectFamiliesDistinct(): Observable {\r\n return this.select('families').pipe(\r\n map((families) => {\r\n return this.commonWizardService.getFamiliesCommonFactor(\r\n families\r\n );\r\n })\r\n );\r\n }\r\n\r\n selectFamilyFolderTree(\r\n familiesWizard$: Observable,\r\n servicesWizard$: Observable,\r\n productsWizard$: Observable\r\n ) {\r\n return this.commonWizardService.selectFamilyFolderTree(\r\n familiesWizard$,\r\n servicesWizard$,\r\n productsWizard$\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport {\r\n AppointmentWizardSettingsStore,\r\n familyWizardFactory,\r\n professionalWizardFactory,\r\n} from './appointment-wizard-settings.store';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageService } from '../../../core/services/language/language.service';\r\nimport { SettingsQuery } from '../settings/settings.query';\r\nimport { UserQuery } from '../user/user.query';\r\nimport { ClinicDetailQuery } from '../clinic-detail/clinic-detail.query';\r\nimport { FamilyWizardModel } from '../../models/family-wizard.model';\r\nimport { ServiceWizardService } from '../service-wizard/service-wizard.service';\r\nimport { AppointmentWizardSettingsQuery } from './appointment-wizard-settings.query';\r\nimport { AppointmentWizardTime } from '../appointment-wizard-time/appointment-wizard-time.model';\r\nimport { ServiceWizardQuery } from '../service-wizard/service-wizard.query';\r\nimport { AppointmentWizardDateQuery } from '../appointment-wizard-date/appointment-wizard-date.query.';\r\nimport { AppointmentWizardTimeQuery } from '../appointment-wizard-time/appointment-wizard-time.query';\r\nimport { ApiService } from 'src/app/core/services/api/api.service';\r\nimport { ProfessionalWizard } from '../../models/professional-wizard.model';\r\nimport { ServicesGroupQuery } from '../services-group/services-group.query';\r\nimport { ClinicWizardModel } from '../../models/clinic-wizard.model';\r\nimport { PacksWizardService } from '../pack-wizard/pack-wizard.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppointmentWizardSettingsService {\r\n constructor(\r\n private appointmentWizardSettingsStore: AppointmentWizardSettingsStore,\r\n private languageService: LanguageService,\r\n private settingsQuery: SettingsQuery,\r\n private userQuery: UserQuery,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private serviceWizardService: ServiceWizardService,\r\n private appointmentWizardSettingsQuery: AppointmentWizardSettingsQuery,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private appointmentWizardDateQuery: AppointmentWizardDateQuery,\r\n private appointmentWizardTimeQuery: AppointmentWizardTimeQuery,\r\n private apiService: ApiService,\r\n private servicesGroupQuery: ServicesGroupQuery,\r\n private packsWizardService: PacksWizardService\r\n ) {}\r\n\r\n /*-----------*/\r\n /** UPDATES */\r\n /*----------*/\r\n updateFamilies(newFamilies: FamilyWizardModel[]) {\r\n this.appointmentWizardSettingsStore.update({ families: newFamilies });\r\n }\r\n\r\n updateClinics(newClinics: ClinicWizardModel[]) {\r\n this.appointmentWizardSettingsStore.update({ clinics: newClinics });\r\n }\r\n\r\n updateProfessionals(newProfessionals: ProfessionalWizard[]) {\r\n this.appointmentWizardSettingsStore.update({\r\n professionals: newProfessionals,\r\n });\r\n }\r\n\r\n /** TODO: He intentado usar la función de akita arrayAdd pero no me funciona, uso este método para añadir elementos a un array */\r\n pushStepStack(step: number) {\r\n const currentStepStack = this.appointmentWizardSettingsQuery.getValue()\r\n ?.stepStack;\r\n const cloneStepStack = [...currentStepStack];\r\n cloneStepStack.push(step);\r\n this.appointmentWizardSettingsStore.update({\r\n stepStack: cloneStepStack,\r\n });\r\n }\r\n\r\n /** TODO: He intentado usar la función de akita arrayAdd pero no me funciona, uso este método para añadir elementos a un array */\r\n popStepStack() {\r\n const currentStepStack = this.appointmentWizardSettingsQuery.getValue()\r\n ?.stepStack;\r\n const cloneStepStack = [...currentStepStack];\r\n cloneStepStack.pop();\r\n this.appointmentWizardSettingsStore.update({\r\n stepStack: cloneStepStack,\r\n });\r\n }\r\n\r\n /** TODO: He intentado usar la función de akita arrayAdd pero no me funciona, uso este método para añadir elementos a un array */\r\n removeStepFromStepStack(step: number) {\r\n const currentStepStack = this.appointmentWizardSettingsQuery.getValue()\r\n ?.stepStack;\r\n const cloneStepStack = [...currentStepStack].filter(\r\n (item) => item !== step\r\n );\r\n this.appointmentWizardSettingsStore.update({\r\n stepStack: cloneStepStack,\r\n });\r\n }\r\n\r\n clearStepStack() {\r\n this.appointmentWizardSettingsStore.update({\r\n stepStack: [],\r\n });\r\n }\r\n\r\n /*---------------*/\r\n /** LLAMADAS API */\r\n /*---------------*/\r\n\r\n /**\r\n * Llamada api para obtener la configuración del asistente de pedir cita\r\n */\r\n private getAppointmentWizardSettingsApi(\r\n systemKey: string,\r\n tokenId: string,\r\n clinicId: string\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClientToken', tokenId);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('Cmd', 'c1041');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /**\r\n * Llamada api para obtener la configuración del asistente de pedir cita\r\n */\r\n private makeAppointmentSinlgeGroupApi(\r\n systemKey: string,\r\n clientToken: string,\r\n clinicId: string,\r\n services: string[],\r\n professional: ProfessionalWizard,\r\n time: AppointmentWizardTime\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClientToken', clientToken);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('Services', services.join(','));\r\n params = params.append(\r\n 'ProfessionalID',\r\n professional ? professional.id : ''\r\n );\r\n params = params.append(\r\n 'ProfessionalName',\r\n professional ? professional.description : ''\r\n );\r\n params = params.append('DiaryDate', time.date);\r\n params = params.append('TimeStart', time.timeStart);\r\n params = params.append('TimeEnd', time.timeEnd);\r\n params = params.append('CabineID', time.cabinetId);\r\n params = params.append('Cmd', 'c1043');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /**\r\n * Llamada api para obtener la configuración del asistente de pedir cita\r\n */\r\n private makeAppointmentMultipleGroupApi(\r\n systemKey: string,\r\n clientToken: string,\r\n servicesGroup: any\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClientToken', clientToken);\r\n params = params.append('CompositeApp', servicesGroup);\r\n params = params.append('Cmd', 'c1047');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n /** Este servicio llama a la API para recoger los datos y la configuración inicial del asistente de pedir cita y rellena el store */\r\n async getAppointmentWizardSettings() {\r\n const appointmentWizardSettingsData = await this.getAppointmentWizardSettingsApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.userQuery.tokenId,\r\n this.clinicDetailQuery.id\r\n ).toPromise();\r\n this.appointmentWizardSettingsStore.update({\r\n servicesMultiSelect:\r\n appointmentWizardSettingsData.ServicesMultiSelect != null\r\n ? appointmentWizardSettingsData.ServicesMultiSelect === '-1'\r\n : false,\r\n professionalsEnabled:\r\n appointmentWizardSettingsData.ServiceProfessionalsEnabled !=\r\n null\r\n ? appointmentWizardSettingsData.ServiceProfessionalsEnabled ===\r\n '-1'\r\n : false,\r\n });\r\n this.serviceWizardService.setServicesWizardByApi(\r\n appointmentWizardSettingsData.Services\r\n );\r\n this.setFamiliesWizardByApi(appointmentWizardSettingsData.Families);\r\n this.setProfessionalsByApi(appointmentWizardSettingsData.Professionals);\r\n this.packsWizardService.setPacksByApi(appointmentWizardSettingsData?.PackList);\r\n }\r\n\r\n /**\r\n * Crea las familias a partir de los datos de la API y los carga en el Store\r\n */\r\n setFamiliesWizardByApi(families) {\r\n if (families?.length > 0) {\r\n const familiesWizardEntities = [];\r\n families.forEach((familyWizard) => {\r\n familiesWizardEntities.push(familyWizardFactory(familyWizard));\r\n });\r\n\r\n this.updateFamilies(familiesWizardEntities);\r\n }\r\n }\r\n\r\n setProfessionalsByApi(professionals) {\r\n if (professionals?.length > 0) {\r\n const professionalsEntities = [];\r\n professionals.forEach((professional) => {\r\n professionalsEntities.push(\r\n professionalWizardFactory(professional)\r\n );\r\n });\r\n this.updateProfessionals(professionalsEntities);\r\n }\r\n }\r\n\r\n async makeAppointmentSingleGroup(currentClinicId: string): Promise {\r\n /** Los servicios seleccionados los cogemos de Akita */\r\n const servicesChekedArrayId = [];\r\n this.serviceWizardQuery\r\n .getAll({\r\n filterBy: ({ checked }) => checked === true,\r\n })\r\n .forEach((service) => {\r\n servicesChekedArrayId.push(service.id);\r\n });\r\n const professionalChecked: ProfessionalWizard = this.servicesGroupQuery.getAll()[0]\r\n .professionalSelected;\r\n const timeActive = this.appointmentWizardTimeQuery.getActive();\r\n\r\n const appointmentData = await this.makeAppointmentSinlgeGroupApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.userQuery.tokenId,\r\n currentClinicId,\r\n servicesChekedArrayId,\r\n professionalChecked,\r\n timeActive\r\n ).toPromise();\r\n\r\n return appointmentData.AppID;\r\n }\r\n\r\n async makeAppointmentMultipleGroup(): Promise {\r\n const timeActive = this.appointmentWizardTimeQuery.getActive();\r\n\r\n const JsonTimeActive = {\r\n CompositeApp: {\r\n ClinicID: timeActive.clinicId,\r\n Date: timeActive.date,\r\n TimeStart: timeActive.timeStart,\r\n TimeEnd: timeActive.timeEnd,\r\n TotalWait: timeActive.totalWait,\r\n ServicesGroups: timeActive.servicesGroup,\r\n },\r\n };\r\n const appointmentData = await this.makeAppointmentMultipleGroupApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.userQuery.tokenId,\r\n JSON.stringify(JsonTimeActive)\r\n ).toPromise();\r\n\r\n return appointmentData.AppID;\r\n }\r\n\r\n resetStore() {\r\n this.appointmentWizardSettingsStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Store, StoreConfig } from '@datorama/akita';\r\nimport { FamilyWizardModel } from '../../models/family-wizard.model';\r\nimport { ProfessionalWizard } from '../../models/professional-wizard.model';\r\nimport { ClinicWizardModel } from '../../models/clinic-wizard.model';\r\n\r\nexport interface AppointmentWizardSettingsState {\r\n servicesMultiSelect: boolean /** Indica si en el asistente de pedir cita se pueden seleccionar varios servicios */;\r\n professionalsEnabled: boolean /** TODO: Indica si el sistema tiene las habilidades profesionales activadas ¿OBSOLETO, No se usa en cita compuesta? */;\r\n families: FamilyWizardModel[] /** Listado de familias disponibles para el asistente de cita */;\r\n professionals: ProfessionalWizard[];\r\n stepStack: number[] /** Pila de pasos del asistente para volver hacia atrás */;\r\n clinics: ClinicWizardModel[];\r\n}\r\n\r\nexport function createInitialState(): AppointmentWizardSettingsState {\r\n return {\r\n servicesMultiSelect: null,\r\n professionalsEnabled: null,\r\n families: [],\r\n professionals: [],\r\n stepStack: [],\r\n clinics: [],\r\n };\r\n}\r\n\r\n/**\r\n * Factoría que crea una Familia para el asistente de pedir cita con los datos recogidos por la API\r\n */\r\nexport function familyWizardFactory(params: any) {\r\n return {\r\n id: params.FamilyId,\r\n sourceId: params.FamilySourceID ?? params.FamilySourceId, //TODO Lo mejor sería poner ID en mayúscula como en toda la spec de citas compuestas\r\n folderId: params.FamilyFolderID ?? '0',\r\n folderSourceId: params.FamilyFolderSourceID ?? '0',\r\n description: params.FamilyName,\r\n familiesCommonFactor: [params.FamilyId],\r\n } as FamilyWizardModel;\r\n}\r\n\r\nexport function professionalWizardFactory(params: any) {\r\n return {\r\n id: params.ProfessionalId,\r\n description: params.ProfessionalName,\r\n clinic: params.ProfessionalClinicID\r\n ? params.ProfessionalClinicID.split(',')\r\n : [] /** Back me devuelve el listado como una lista de strings a diferencia de otros parámetros */,\r\n disabled: false,\r\n } as ProfessionalWizard;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'appointment-wizard-settings', resettable: true })\r\nexport class AppointmentWizardSettingsStore extends Store<\r\n AppointmentWizardSettingsState\r\n> {\r\n constructor() {\r\n super(createInitialState());\r\n }\r\n}\r\n","export interface AppointmentWizardTime {\r\n id: string /** id de la entity (creada a mano para tener una clave primaria) */;\r\n clinicId: string /** Id de la clínica donde está esta hora asociada */;\r\n cabinetId: string /** Id de la cabina donde está esta hora asociada */;\r\n date: string /** Fecha de la hora */;\r\n timeStart: string /** Hora de inicio del hueco disponible */;\r\n timeEnd: string /** Hora fin del hueco disponible */;\r\n totalWait: string /** Tiempo de espera entre cada grupo de servicios SOLO PARA COMPUESTAS */;\r\n servicesGroup: any /** Objeto que SOLO necesitamos para guardar la cita, SOLO PARA COMPUESTAS */;\r\n}\r\n\r\n/**\r\n * A factory function that creates AppointmentWizardTime\r\n */\r\nexport function createAppointmentWizardTime(\r\n params: Partial\r\n) {\r\n return {} as AppointmentWizardTime;\r\n}\r\n\r\n/**\r\n * Factoría que crea una Appointment con los datos recogidos por la API\r\n */\r\nexport function appointmentWizardTimeFactory(params: any) {\r\n return {\r\n id: params.ClinicID + '_' + params.Date + '_' + params.TimeStart,\r\n clinicId: params.ClinicID,\r\n cabinetId: params.CabineID,\r\n date: params.Date,\r\n timeStart: params.TimeStart,\r\n timeEnd: params.TimeEnd,\r\n totalWait: params.TotalWait,\r\n servicesGroup: params.ServicesGroups,\r\n } as AppointmentWizardTime;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { QueryEntity } from '@datorama/akita';\r\nimport { AppointmentWizardTimeStore, AppointmentWizardTimeState } from './appointment-wizard-time.store';\r\nimport { AppointmentWizardTime } from './appointment-wizard-time.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppointmentWizardTimeQuery extends QueryEntity {\r\n\r\n constructor(protected store: AppointmentWizardTimeStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ID } from '@datorama/akita';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { AppointmentWizardTimeStore } from './appointment-wizard-time.store';\r\nimport {\r\n AppointmentWizardTime,\r\n appointmentWizardTimeFactory,\r\n} from './appointment-wizard-time.model';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageService } from '../../../core/services/language/language.service';\r\nimport { SettingsQuery } from '../settings/settings.query';\r\nimport { ClinicDetailQuery } from '../clinic-detail/clinic-detail.query';\r\nimport { UserQuery } from '../user/user.query';\r\nimport { ServiceWizardQuery } from '../service-wizard/service-wizard.query';\r\nimport { NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';\r\nimport { ApiService } from 'src/app/core/services/api/api.service';\r\nimport { ProfessionalWizard } from '../../models/professional-wizard.model';\r\nimport { ServicesGroupQuery } from '../services-group/services-group.query';\r\nimport { AppointmentWizardTimeQuery } from './appointment-wizard-time.query';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AppointmentWizardTimeService {\r\n constructor(\r\n private appointmentWizardTimeStore: AppointmentWizardTimeStore,\r\n private appointmentWizardTimeQuery: AppointmentWizardTimeQuery,\r\n private languageService: LanguageService,\r\n private settingsQuery: SettingsQuery,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private userQuery: UserQuery,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private apiService: ApiService,\r\n private servicesGroupQuery: ServicesGroupQuery\r\n ) {}\r\n\r\n /*---------------------*/\r\n /** OPERACIONES ENTITY */\r\n /*---------------------*/\r\n\r\n add(appointmentWizardTime: AppointmentWizardTime) {\r\n this.appointmentWizardTimeStore.add(appointmentWizardTime);\r\n }\r\n\r\n update(id, appointmentWizardTime: Partial) {\r\n this.appointmentWizardTimeStore.update(id, appointmentWizardTime);\r\n }\r\n\r\n remove(id: ID) {\r\n this.appointmentWizardTimeStore.remove(id);\r\n }\r\n\r\n setAppointmentWizardTimes(times: AppointmentWizardTime[]) {\r\n this.appointmentWizardTimeStore.set(times);\r\n }\r\n\r\n /*---------------*/\r\n /** LLAMADAS API */\r\n /*---------------*/\r\n\r\n /**\r\n * Llamada api para obtener los días disponibles de un mes para una clínica\r\n * GRUPOS DE SERVICIOS SINGLE\r\n * TODO: Ver por qué se mandan parámetros vacíos siempre\r\n */\r\n private getTimesSingleGroupApi(\r\n systemKey: string,\r\n clientToken: string,\r\n clinicId: string,\r\n services: string,\r\n professional: ProfessionalWizard,\r\n date: string\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClientToken', clientToken);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('Services', services);\r\n params = params.append(\r\n 'ProfessionalID',\r\n professional ? professional.id : ''\r\n );\r\n params = params.append(\r\n 'ProfessionalName',\r\n professional ? professional.description : ''\r\n );\r\n params = params.append('DiaryDate', date);\r\n params = params.append('TimeEnd', '');\r\n params = params.append('CabineID', '');\r\n params = params.append('TimeStart', '');\r\n params = params.append('Cmd', 'c1042');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /**\r\n * Llamada api para obtener los días disponibles de un mes para una clínica\r\n * GRUPOS DE SERVICIOS MÚLTIPLES\r\n * TODO: Ver por qué se mandan parámetros vacíos siempre\r\n */\r\n private getTimesMultipleGroupApi(\r\n systemKey: string,\r\n clinicId: string,\r\n date: string,\r\n servicesGroups: any\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('ServicesGroups', servicesGroups);\r\n params = params.append('DiaryDate', date);\r\n params = params.append('Cmd', 'c1046');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n\r\n /**\r\n * Llama a la API para obtener las horas posibles para reservar la cita\r\n * TODO: Validar el [0] que le he puesto al profesional (¿Y si no hay ninguno peta?) ¿Cambiar a Active?\r\n */\r\n async getTimesSingleGroup(date: NgbDateStruct, currentClinicId: string) {\r\n /** Los servicios seleccionados los cogemos de Akita */\r\n const servicesChekedArrayId = [];\r\n const servicesCheked = this.serviceWizardQuery\r\n .getAll({\r\n filterBy: ({ checked }) => checked === true,\r\n })\r\n .forEach((service) => {\r\n servicesChekedArrayId.push(service.id);\r\n });\r\n\r\n const professionalChecked: ProfessionalWizard = this.servicesGroupQuery.getAll()[0]\r\n .professionalSelected;\r\n try {\r\n const dates = await this.getTimesSingleGroupApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.userQuery.tokenId,\r\n currentClinicId,\r\n servicesChekedArrayId.join(','),\r\n professionalChecked,\r\n `${date.year}-${date.month}-${date.day}`\r\n ).toPromise();\r\n\r\n /**\r\n * Cargamos los huecos a la Store\r\n */\r\n this.setAppointmentWizardTimesByApi(dates.DiaryOptions);\r\n } catch (error) {\r\n this.setAppointmentWizardTimesByApi(null);\r\n }\r\n }\r\n\r\n /** Cargar las horas disponibles cuando tenemos múltiples grupos de citas */\r\n async getTimesMultipleGroup(date: NgbDateStruct) {\r\n const servicesGroups = [];\r\n this.servicesGroupQuery.getAll().forEach((serviceGroup) => {\r\n servicesGroups.push({\r\n ServicesID: serviceGroup.ids,\r\n ServicesProfessionalID:\r\n serviceGroup.professionalSelected?.id ?? '0',\r\n ServicesClinicID: serviceGroup.clinicId, //TODO CONFIRMAR c1046 de petición de jorge ¿Hace falta también con los simples?\r\n });\r\n });\r\n const servicesGroupJson = {\r\n ServicesGroups: servicesGroups,\r\n };\r\n try {\r\n const dates = await this.getTimesMultipleGroupApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.clinicDetailQuery.id,\r\n `${date.year}-${date.month}-${date.day}`,\r\n JSON.stringify(servicesGroupJson)\r\n ).toPromise();\r\n\r\n /**\r\n * Cargamos los huecos a la Store\r\n */\r\n this.setAppointmentWizardTimesByApi(dates.DiaryOptions);\r\n } catch (error) {\r\n this.setAppointmentWizardTimesByApi(null);\r\n }\r\n }\r\n\r\n /**\r\n * Crea las citas a partir de una Array y las carga en el Store\r\n */\r\n setAppointmentWizardTimesByApi(times) {\r\n const appointmentWizardTimes = [];\r\n if (times) {\r\n times.forEach((time) => {\r\n appointmentWizardTimes.push(appointmentWizardTimeFactory(time));\r\n });\r\n }\r\n\r\n this.setAppointmentWizardTimes(appointmentWizardTimes);\r\n }\r\n\r\n setActive(appointmentWizardTimeId: string) {\r\n this.appointmentWizardTimeStore.setActive(appointmentWizardTimeId);\r\n }\r\n\r\n selectActive(): Observable {\r\n return this.appointmentWizardTimeQuery.selectActive();\r\n }\r\n\r\n resetStore() {\r\n this.appointmentWizardTimeStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActiveState,\r\n EntityState,\r\n EntityStore,\r\n StoreConfig,\r\n} from '@datorama/akita';\r\nimport { AppointmentWizardTime } from './appointment-wizard-time.model';\r\n\r\nexport interface AppointmentWizardTimeState\r\n extends EntityState,\r\n ActiveState {}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'appointment-wizard-time', resettable: true })\r\nexport class AppointmentWizardTimeStore extends EntityStore<\r\n AppointmentWizardTimeState,\r\n AppointmentWizardTime\r\n> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { QueryEntity } from '@datorama/akita';\r\nimport { AppointmentStore, AppointmentState } from './appointment.store';\r\nimport { Appointment } from './appointment.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppointmentQuery extends QueryEntity {\r\n\r\n constructor(protected store: AppointmentStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Query } from '@datorama/akita';\r\nimport { HeaderIconStore, HeaderIconState } from './header-icon.store';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class HeaderIconQuery extends Query {\r\n\r\n constructor(protected store: HeaderIconStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","export interface PackWizard {\r\n id: number;\r\n description: string;\r\n serviceIDs: string[];\r\n joinCitation: boolean;\r\n isChecked: boolean;\r\n}\r\n\r\n/**\r\n * Factoría que crea un Pack para el asistente de pedir cita con los datos recogidos por la API\r\n */\r\nexport function packWizardFactory(param, index) {\r\n return {\r\n id: index,\r\n description: param.Description,\r\n serviceIDs: param.ZoneList.split(','),\r\n joinCitation: param.ProductJoinCitation === '-1',\r\n isChecked: false,\r\n };\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PackWizardStore } from './pack-wizard.store';\r\nimport { PackWizard, packWizardFactory } from './pack-wizard.model';\r\nimport { PackWizardQuery } from './pack-wizard.query';\r\nimport { ServiceWizardService } from '../service-wizard/service-wizard.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PacksWizardService {\r\n constructor(\r\n public packsWizardStore: PackWizardStore,\r\n private serviceWizardService: ServiceWizardService\r\n ) {}\r\n\r\n setPacksByApi(params) {\r\n if(!params || params.length === 0) {\r\n this.packsWizardStore.set([]);\r\n return;\r\n }\r\n\r\n this.resetStore();\r\n\r\n const packs: PackWizard[] = [];\r\n params.forEach( (param, index) => {\r\n packs.push(\r\n packWizardFactory(param, index)\r\n );\r\n });\r\n\r\n this.packsWizardStore.set({...packs});\r\n\r\n // Array with IDs that should be displayed\r\n const showServices = packs.filter( pack => !pack.joinCitation)\r\n .flatMap( pack => pack.serviceIDs);\r\n\r\n // Array with IDs that should be hidden\r\n const hiddeServices = packs.filter( pack => pack.joinCitation)\r\n .flatMap( pack => pack.serviceIDs)\r\n // If the same ID is in both arrays (showServices & hiddeServices), we will not hidde that service\r\n .filter( id => showServices.indexOf(id) === -1)\r\n\r\n\r\n hiddeServices.forEach( id => {\r\n this.serviceWizardService.hiddeService(id, true);\r\n })\r\n\r\n }\r\n\r\n toggleChecked(pack: PackWizard) {\r\n const isChecked = !pack.isChecked;\r\n this.packsWizardStore.update(pack.id, { isChecked: isChecked });\r\n }\r\n\r\n resetStore() {\r\n this.packsWizardStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Query } from '@datorama/akita';\r\nimport {\r\n PaymentWizardSettingsStore,\r\n PaymentWizardSettingsState,\r\n} from './payment-wizard-settings.store';\r\nimport { map } from 'rxjs/operators';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PaymentWizardSettingsQuery extends Query<\r\n PaymentWizardSettingsState\r\n> {\r\n constructor(\r\n protected store: PaymentWizardSettingsStore,\r\n private sanitizer: DomSanitizer\r\n ) {\r\n super(store);\r\n }\r\n\r\n /*-----------*/\r\n /** GETTERS */\r\n /*----------*/\r\n\r\n get clinicAppSchedAndBuy() {\r\n return this.getValue()?.clinicAppSchedAndBuy;\r\n }\r\n\r\n get productList() {\r\n return this.getValue()?.productList;\r\n }\r\n\r\n selectUrlPaymentSafe(): Observable {\r\n return this.select('urlPayment').pipe(\r\n map((url) => {\r\n if (url && url !== '') {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n } else {\r\n return null;\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { PaymentWizardSettingsStore } from './payment-wizard-settings.store';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageService } from '../../../core/services/language/language.service';\r\nimport { SettingsQuery } from '../settings/settings.query';\r\nimport { CompanyQuery } from '../company/company.query';\r\nimport { ClinicDetailQuery } from '../clinic-detail/clinic-detail.query';\r\nimport { UserQuery } from '../user/user.query';\r\nimport { ServiceWizardQuery } from '../service-wizard/service-wizard.query';\r\nimport { PaymethodWizardService } from '../paymethod-wizard/paymethod-wizard.service';\r\n\r\nimport { PaymethodWizardQuery } from '../paymethod-wizard/paymethod-wizard.query';\r\nimport { PaymentWizardSettingsQuery } from './payment-wizard-settings.query';\r\nimport { ProductWizardQuery } from '../product-wizard/product-wizard.query';\r\nimport { TreatmentWizardSettingsQuery } from '../treatment-wizard-settings/treatment-wizard-settings.query';\r\nimport { ApiService } from 'src/app/core/services/api/api.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PaymentWizardSettingsService {\r\n constructor(\r\n private paymentWizardSettingsStore: PaymentWizardSettingsStore,\r\n private http: HttpClient,\r\n private languageService: LanguageService,\r\n private settingsQuery: SettingsQuery,\r\n private companyQuery: CompanyQuery,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private userQuery: UserQuery,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private paymethodWizardService: PaymethodWizardService,\r\n private paymethodWizardQuery: PaymethodWizardQuery,\r\n private paymentWizardSettingsQuery: PaymentWizardSettingsQuery,\r\n private productWizardQuery: ProductWizardQuery,\r\n private treatmentWizarSettingsQuery: TreatmentWizardSettingsQuery,\r\n private apiService: ApiService\r\n ) {}\r\n\r\n /*-----------*/\r\n /** UPDATES */\r\n /*----------*/\r\n\r\n seturlPayment(newUrlPayment: string) {\r\n this.paymentWizardSettingsStore.update({\r\n urlPayment: newUrlPayment,\r\n });\r\n }\r\n\r\n /*---------------*/\r\n /** LLAMADAS API */\r\n /*---------------*/\r\n\r\n /**\r\n * Llamada api para obtener la configuración del pago del asistente\r\n */\r\n private getPaymentWizardSettingsApi(\r\n systemKey: string,\r\n tokenId: string,\r\n clinicId: string,\r\n products: string[]\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClientToken', tokenId);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('Products', products.join(','));\r\n params = params.append('PayMethodID', undefined);\r\n params = params.append('Url', undefined);\r\n params = params.append('Cmd', 'c2002');\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n\r\n /** Llama a la API para obtener la información de pago del asistente y rellena los Stores */\r\n async getPaymentWizardSettings() {\r\n /** Los servicios seleccionados los cogemos de Akita */\r\n const servicesChekedArrayId = [];\r\n const servicesCheked = this.serviceWizardQuery\r\n .getAll({\r\n filterBy: ({ checked }) => checked === true,\r\n })\r\n .forEach((service) => {\r\n servicesChekedArrayId.push(service.id);\r\n });\r\n\r\n const paymentWizardSettingsData = await this.getPaymentWizardSettingsApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.userQuery.tokenId,\r\n this.clinicDetailQuery.id,\r\n servicesChekedArrayId\r\n ).toPromise();\r\n\r\n this.paymentWizardSettingsStore.update({\r\n clinicAppSchedAndBuy:\r\n paymentWizardSettingsData.CheckOptions.ClinicAppSchedAndBuy,\r\n productList: paymentWizardSettingsData.CheckOptions.ProductList,\r\n });\r\n this.paymethodWizardService.setPaymethodsWizardByApi(\r\n paymentWizardSettingsData.PayMethods\r\n );\r\n }\r\n\r\n createUrlPaymentByTreatment() {\r\n const paymethod = this.paymethodWizardQuery.getActive();\r\n const systemKey = this.settingsQuery.systemKeyURL;\r\n const locale = this.languageService.getLocale();\r\n const tokenId = this.userQuery.tokenId;\r\n const clinicId = this.clinicDetailQuery.id;\r\n\r\n /** Los servicios seleccionados los cogemos de Akita */\r\n const productsWithUnitsId = [];\r\n const productsWithUnitsUnits = [];\r\n this.productWizardQuery\r\n .getAll({\r\n filterBy: ({ unitsCart }) => unitsCart > 0,\r\n })\r\n .forEach((product) => {\r\n productsWithUnitsId.push(product.id);\r\n productsWithUnitsUnits.push(product.unitsCart);\r\n });\r\n\r\n const shippingChoiceUser = this.treatmentWizarSettingsQuery\r\n .cancelShippingUserChecked\r\n ? '0'\r\n : this.treatmentWizarSettingsQuery.confirmShippingUserChecked\r\n ? '-1'\r\n : '';\r\n\r\n const shippingAddress =\r\n this.treatmentWizarSettingsQuery.shippingEnabled !== 0\r\n ? encodeURIComponent(\r\n this.treatmentWizarSettingsQuery.shippingAddress\r\n )\r\n : '';\r\n const urlPayment = `${\r\n paymethod.url\r\n }?SystemKey=${systemKey}&Locale=${locale}&ClientToken=${tokenId}&ClinicID=${clinicId}&Products=${productsWithUnitsId.join(\r\n ','\r\n )}&ProductUnits=${productsWithUnitsUnits.join(',')}&PayMethodID=${\r\n paymethod.id\r\n }&Shipping=${shippingChoiceUser}&ShippingAddress=${shippingAddress}`;\r\n this.paymentWizardSettingsStore.update({\r\n urlPayment,\r\n });\r\n }\r\n\r\n createUrlPaymentByAppointment() {\r\n const paymethod = this.paymethodWizardQuery.getActive();\r\n const systemKey = this.settingsQuery.systemKeyURL;\r\n const locale = this.languageService.getLocale();\r\n const tokenId = this.userQuery.tokenId;\r\n const clinicId = this.clinicDetailQuery.id;\r\n const productList = this.paymentWizardSettingsQuery.productList;\r\n\r\n const urlPayment = `${paymethod.url}?SystemKey=${systemKey}&Locale=${locale}&ClientToken=${tokenId}&ClinicID=${clinicId}&Products=${productList}&PayMethodID=${paymethod.id}`;\r\n this.paymentWizardSettingsStore.update({\r\n urlPayment,\r\n });\r\n }\r\n\r\n resetUrlPayment() {\r\n this.paymentWizardSettingsStore.update({\r\n urlPayment: '',\r\n });\r\n }\r\n\r\n resetStore() {\r\n this.paymentWizardSettingsStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Store, StoreConfig } from '@datorama/akita';\r\n\r\nexport interface PaymentWizardSettingsState {\r\n clinicAppSchedAndBuy: string /** Determina si hay que habilita la compra desde la app: -1 opcional, -2 obligatorio, 0 Desactivado */;\r\n productList: string /** Son los bonos que tenemos que comprar para pedir cita de este servicio */;\r\n urlPayment: string;\r\n}\r\n\r\nexport function createInitialState(): PaymentWizardSettingsState {\r\n return {\r\n clinicAppSchedAndBuy: null,\r\n productList: '',\r\n urlPayment: '',\r\n };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'payment-wizard-settings', resettable: true })\r\nexport class PaymentWizardSettingsStore extends Store<\r\n PaymentWizardSettingsState\r\n> {\r\n constructor() {\r\n super(createInitialState());\r\n }\r\n}\r\n","import {\r\n PAYMETHOD_CREDIT_CARD_ICON,\r\n PAYMETHOD_CREDIT_CARD_ID,\r\n PAYMETHOD_POINTS_ICON,\r\n} from 'src/app/core/constants';\r\n\r\nexport interface PaymethodWizard {\r\n id: string /** Id del tipo de pago */;\r\n description: string /** Nombre del tipo de pago */;\r\n logo: string /** Logo del tipo de pago */;\r\n url: string /** TODO: Concretar que es */;\r\n url_ok: string /** Comprobaciones OK */;\r\n url_err: string /** Comprobaciones NO OK */;\r\n checked: boolean /** Indica si el usuario a seleccionado este servicio (lógica interna del asistente de compras UNICAMENTE) */;\r\n icon: string /** Indica el icono que tendrá en el listado. Solo para template flowwwer */;\r\n}\r\n\r\nexport interface PaymethodWizardCheckedEvent {\r\n paymethod: PaymethodWizard;\r\n checkedEvent: boolean;\r\n}\r\n\r\n/**\r\n * A factory function that creates PaymethodWizard\r\n */\r\nexport function createPaymethodWizard(params: Partial) {\r\n return {} as PaymethodWizard;\r\n}\r\n\r\n/**\r\n * Factoría que crea una Familia para el asistente de pedir cita con los datos recogidos por la API\r\n */\r\nexport function paymethodWizardFactory(params: any) {\r\n const icon =\r\n params.PayMethodID === PAYMETHOD_CREDIT_CARD_ID\r\n ? PAYMETHOD_CREDIT_CARD_ICON\r\n : PAYMETHOD_POINTS_ICON;\r\n return {\r\n id: params.PayMethodID,\r\n description: params.PayMethodName,\r\n logo: params.PayMethodLogo,\r\n url: params.PayMethodURL,\r\n url_ok: params.PayMethodURL_OK,\r\n url_err: params.PayMethodURL_ERR,\r\n checked: false,\r\n icon: icon,\r\n } as PaymethodWizard;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { QueryEntity } from '@datorama/akita';\r\nimport { PaymethodWizardStore, PaymethodWizardState } from './paymethod-wizard.store';\r\nimport { PaymethodWizard } from './paymethod-wizard.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaymethodWizardQuery extends QueryEntity {\r\n\r\n constructor(protected store: PaymethodWizardStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ID } from '@datorama/akita';\r\nimport { PaymethodWizardStore } from './paymethod-wizard.store';\r\nimport {\r\n PaymethodWizard,\r\n paymethodWizardFactory,\r\n} from './paymethod-wizard.model';\r\nimport { PaymethodWizardQuery } from './paymethod-wizard.query';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PaymethodWizardService {\r\n constructor(\r\n private paymethodWizardStore: PaymethodWizardStore,\r\n private paymethodWizardQuery: PaymethodWizardQuery\r\n ) {}\r\n\r\n add(paymethodWizard: PaymethodWizard) {\r\n this.paymethodWizardStore.add(paymethodWizard);\r\n }\r\n\r\n update(id, paymethodWizard: Partial) {\r\n this.paymethodWizardStore.update(id, paymethodWizard);\r\n }\r\n\r\n remove(id: ID) {\r\n this.paymethodWizardStore.remove(id);\r\n }\r\n\r\n setPaymethodsWizard(paymethodsWizard: PaymethodWizard[]) {\r\n this.paymethodWizardStore.set(paymethodsWizard);\r\n }\r\n\r\n setPaymethodChecked(paymethodWizardId, checked: boolean) {\r\n this.resetPaymethodChecked();\r\n this.paymethodWizardStore.update(paymethodWizardId, { checked });\r\n }\r\n\r\n togglePaymethodChecked(paymethodWizardId) {\r\n const checked = !this.paymethodWizardQuery.getEntity(paymethodWizardId)\r\n .checked;\r\n this.resetPaymethodChecked();\r\n this.paymethodWizardStore.update(paymethodWizardId, { checked });\r\n }\r\n\r\n resetPaymethodChecked() {\r\n this.paymethodWizardStore.update(({ checked }) => checked, {\r\n checked: false,\r\n });\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n\r\n /**\r\n * Crea los paymethods a partir de la información que llega de la API\r\n */\r\n setPaymethodsWizardByApi(paymethodsWizard) {\r\n if (paymethodsWizard) {\r\n const paymethodsWizardEntities = [];\r\n paymethodsWizard.forEach((paymethodWizard) => {\r\n paymethodsWizardEntities.push(\r\n paymethodWizardFactory(paymethodWizard)\r\n );\r\n });\r\n\r\n this.setPaymethodsWizard(paymethodsWizardEntities);\r\n }\r\n }\r\n\r\n setActive(paymethodId: string) {\r\n this.paymethodWizardStore.setActive(paymethodId);\r\n }\r\n\r\n resetStore() {\r\n this.paymethodWizardStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActiveState,\r\n EntityState,\r\n EntityStore,\r\n StoreConfig,\r\n} from '@datorama/akita';\r\nimport { PaymethodWizard } from './paymethod-wizard.model';\r\n\r\nexport interface PaymethodWizardState\r\n extends EntityState,\r\n ActiveState {}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'paymethod-wizard', resettable: true })\r\nexport class PaymethodWizardStore extends EntityStore<\r\n PaymethodWizardState,\r\n PaymethodWizard\r\n> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { QueryEntity } from '@datorama/akita';\r\nimport { ServicesGroupStore, ServicesGroupState } from './services-group.store';\r\nimport { ServicesGroup } from './services-group.model';\r\nimport { QueryConfig, Order } from '@datorama/akita';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\n@QueryConfig({\r\n sortBy: 'order',\r\n sortByOrder: Order.ASC,\r\n})\r\nexport class ServicesGroupQuery extends QueryEntity<\r\n ServicesGroupState,\r\n ServicesGroup\r\n> {\r\n constructor(protected store: ServicesGroupStore) {\r\n super(store);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ID } from '@datorama/akita';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { ServicesGroupStore } from './services-group.store';\r\nimport {\r\n ProfessionalServiceGroupSelected,\r\n ServicesGroup,\r\n} from './services-group.model';\r\nimport { Observable } from 'rxjs';\r\nimport { LanguageService } from 'src/app/core/services/language/language.service';\r\nimport { ApiService } from 'src/app/core/services/api/api.service';\r\nimport { ServiceWizardQuery } from '../service-wizard/service-wizard.query';\r\nimport { SettingsQuery } from '../settings/settings.query';\r\nimport { UserQuery } from '../user/user.query';\r\nimport { ClinicDetailQuery } from '../clinic-detail/clinic-detail.query';\r\nimport { ServicesGroupQuery } from './services-group.query';\r\nimport { ProfessionalWizard } from '../../models/professional-wizard.model';\r\nimport { AppointmentWizardSettingsQuery } from '../appointment-wizard-settings/appointment-wizard-settings.query';\r\nimport { ClinicWizardModel } from '../../models/clinic-wizard.model';\r\nimport { AppointmentWizardSettingsService } from '../appointment-wizard-settings/appointment-wizard-settings.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ServicesGroupService {\r\n constructor(\r\n private servicesGroupStore: ServicesGroupStore,\r\n private http: HttpClient,\r\n private languageService: LanguageService,\r\n private apiService: ApiService,\r\n private serviceWizardQuery: ServiceWizardQuery,\r\n private settingsQuery: SettingsQuery,\r\n private userQuery: UserQuery,\r\n private clinicDetailQuery: ClinicDetailQuery,\r\n private servicesGroupQuery: ServicesGroupQuery,\r\n private appointmentWizardSettingsQuery: AppointmentWizardSettingsQuery,\r\n private appointmentWizardSettingsService: AppointmentWizardSettingsService\r\n ) {}\r\n\r\n /*---------------------*/\r\n /** OPERACIONES ENTITY */\r\n /*---------------------*/\r\n\r\n add(servicesGroup: ServicesGroup) {\r\n this.servicesGroupStore.add(servicesGroup);\r\n }\r\n\r\n update(id, servicesGroup: Partial) {\r\n this.servicesGroupStore.update(id, servicesGroup);\r\n }\r\n\r\n remove(id: ID) {\r\n this.servicesGroupStore.remove(id);\r\n }\r\n\r\n setServicesGroups(servicesGroups: ServicesGroup[]) {\r\n this.servicesGroupStore.set(servicesGroups);\r\n }\r\n\r\n /**\r\n * Factoría que crea un Servicio para el asistente de pedir cita con los datos recogidos por la API\r\n */\r\n servicesGroupFactory(\r\n params: any,\r\n order: number,\r\n professionalsWizard: ProfessionalWizard[]\r\n ) {\r\n let professionals: ProfessionalWizard[] = [];\r\n if (params.ServicesProfessionals) {\r\n params.ServicesProfessionals.forEach((currentProfessionalData) => {\r\n const newProfessional: ProfessionalWizard = {\r\n id: currentProfessionalData.ProfessionalId,\r\n description: currentProfessionalData.ProfessionalName,\r\n clinic: [],\r\n disabled: currentProfessionalData.UserDropdownsDisabled === '-1',\r\n };\r\n professionals.push(newProfessional);\r\n });\r\n }\r\n if (professionals[0].id === '') {\r\n /** Tengo que filtrar de entre todos los profesionales que me envía el back en la llamada c1041, solo aquellos\r\n * que estén en la misma clínica que los servicios o un 0 en su clinica */\r\n\r\n professionals = professionalsWizard?.filter((professional) => {\r\n return (\r\n professional.clinic.includes(params.ServicesClinicID) ||\r\n professional.clinic.includes('0')\r\n );\r\n });\r\n }\r\n\r\n return {\r\n id: params.ServicesID.join('-'),\r\n ids: params.ServicesID,\r\n clinicId: params.ServicesClinicID,\r\n clinicName: params.ServicesClinicName,\r\n descriptions: params.ServicesDescription,\r\n professionals,\r\n equipmentIds: params.ServicesEquipmentID,\r\n professionalSelected: null,\r\n order,\r\n } as ServicesGroup;\r\n }\r\n\r\n /*---------------*/\r\n /** LLAMADAS API */\r\n /*---------------*/\r\n\r\n /**\r\n * Llamada api para obtener los grupos de servicios\r\n */\r\n private getServicesGroupApi(\r\n systemKey: string,\r\n clientToken: string,\r\n clinicId: string,\r\n services: string\r\n ): Observable {\r\n let params = new HttpParams();\r\n params = params.append('SystemKey', systemKey);\r\n params = params.append('ClientToken', clientToken);\r\n params = params.append('ClinicID', clinicId);\r\n params = params.append('Services', services);\r\n params = params.append('ProfessionalID', '');\r\n params = params.append('ProfessionalName', '');\r\n params = params.append('DiaryDate', '');\r\n params = params.append('TimeEnd', '');\r\n params = params.append('CabineID', '');\r\n params = params.append('TimeStart', '');\r\n params = params.append('cmd', 'c1045');\r\n params = params.append(\r\n 'CompositeApp',\r\n undefined\r\n ); /** TODO: QUE ES ESTO */\r\n params = params.append('Locale', this.languageService.getLocale());\r\n\r\n return this.apiService.callApi(params);\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n /**\r\n * Llama a la API para obtener los grupos de servicios\r\n */\r\n async getServicesGroup() {\r\n /** Los servicios seleccionados los cogemos de Akita */\r\n const servicesChekedArrayId = [];\r\n const servicesCheked = this.serviceWizardQuery\r\n .getAll({\r\n filterBy: ({ checked }) => checked === true,\r\n })\r\n .sort((a, b) => {\r\n if (a.order < b.order) {\r\n return -1;\r\n }\r\n if (a.order > b.order) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n .forEach((service) => {\r\n servicesChekedArrayId.push(service.id);\r\n });\r\n\r\n const servicesGroupData = await this.getServicesGroupApi(\r\n this.settingsQuery.systemKeyURL,\r\n this.userQuery.tokenId,\r\n this.clinicDetailQuery.id,\r\n servicesChekedArrayId.join(',')\r\n ).toPromise();\r\n\r\n /**\r\n * Cargamos las clínicas a la Store\r\n */\r\n this.setServicesGroupsByApi(servicesGroupData.ServicesGroups);\r\n }\r\n\r\n /**\r\n * Crea los grupos de servicios a partir de los datos de la API\r\n */\r\n setServicesGroupsByApi(groups: any[]) {\r\n const servicesGroups = [];\r\n const clinicWizardList: ClinicWizardModel[] = [];\r\n const professionalsWizard: ProfessionalWizard[] = this\r\n .appointmentWizardSettingsQuery.professionals;\r\n groups.forEach((group, index) => {\r\n const currentGroup = this.servicesGroupFactory(\r\n group,\r\n index,\r\n professionalsWizard\r\n );\r\n servicesGroups.push(currentGroup);\r\n\r\n /** TODO: Mirar si es necesario hacer esto, porque creo no hace falta para nada\r\n * En principio se hizo para poder mostrar las nombres de las clínicas en el resumen de cita */\r\n if (\r\n !clinicWizardList.some((clinicWizard) => {\r\n return clinicWizard.id === currentGroup.clinicId;\r\n })\r\n ) {\r\n clinicWizardList.push({\r\n id: currentGroup.clinicId,\r\n description: currentGroup.clinicName,\r\n });\r\n }\r\n });\r\n\r\n this.appointmentWizardSettingsService.updateClinics(clinicWizardList);\r\n this.setServicesGroups(servicesGroups);\r\n }\r\n\r\n setProfessionalWizardChecked(\r\n professionalServiceGroupSelected: ProfessionalServiceGroupSelected\r\n ) {\r\n this.servicesGroupStore.update(\r\n professionalServiceGroupSelected.servicesGroupId,\r\n {\r\n professionalSelected:\r\n professionalServiceGroupSelected.professional,\r\n }\r\n );\r\n }\r\n\r\n toggleProfessionalWizardChecked(\r\n professionalServiceGroupSelected: ProfessionalServiceGroupSelected\r\n ) {\r\n const currentServiceGroupStorage = this.servicesGroupQuery.getEntity(\r\n professionalServiceGroupSelected.servicesGroupId\r\n );\r\n if (\r\n currentServiceGroupStorage?.professionalSelected?.id ==\r\n professionalServiceGroupSelected.professional.id\r\n ) {\r\n this.servicesGroupStore.update(\r\n professionalServiceGroupSelected.servicesGroupId,\r\n {\r\n professionalSelected: null,\r\n }\r\n );\r\n } else {\r\n this.servicesGroupStore.update(\r\n professionalServiceGroupSelected.servicesGroupId,\r\n {\r\n professionalSelected:\r\n professionalServiceGroupSelected.professional,\r\n }\r\n );\r\n }\r\n }\r\n\r\n resetProfessionalWizardCheckedSingleGroup() {\r\n this.servicesGroupStore.update(this.servicesGroupQuery.getAll()[0].id, {\r\n professionalSelected: null,\r\n });\r\n }\r\n\r\n resetStore() {\r\n this.servicesGroupStore.reset();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EntityState, EntityStore, StoreConfig } from '@datorama/akita';\r\nimport { ServicesGroup } from './services-group.model';\r\n\r\nexport interface ServicesGroupState extends EntityState {}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'services-group', resettable: true })\r\nexport class ServicesGroupStore extends EntityStore<\r\n ServicesGroupState,\r\n ServicesGroup\r\n> {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Query } from '@datorama/akita';\r\nimport { SocialLoginStore, SocialLoginState } from './social-login.store';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SocialLoginQuery extends Query {\r\n\r\n constructor(protected store: SocialLoginStore) {\r\n super(store);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Query } from '@datorama/akita';\r\nimport {\r\n TreatmentWizardSettingsStore,\r\n TreatmentWizardSettingsState,\r\n} from './treatment-wizard-settings.store';\r\nimport { combineLatest, Observable } from 'rxjs';\r\nimport { FamilyWizardModel } from '../../models/family-wizard.model';\r\nimport { map } from 'rxjs/operators';\r\nimport { CommonWizardService } from '../../../core/services/common-wizard/common-wizard.service';\r\nimport { ServiceWizard } from '../service-wizard/service-wizard.model';\r\nimport { FamilyFolderModel } from '../../models/family-folder.model';\r\nimport { ProductWizard } from '../product-wizard/product-wizard.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TreatmentWizardSettingsQuery extends Query<\r\n TreatmentWizardSettingsState\r\n> {\r\n constructor(\r\n protected store: TreatmentWizardSettingsStore,\r\n private commonWizardService: CommonWizardService\r\n ) {\r\n super(store);\r\n }\r\n\r\n /*-----------*/\r\n /** GETTERS */\r\n /*----------*/\r\n\r\n get stepStack() {\r\n return this.getValue()?.stepStack;\r\n }\r\n\r\n get shippingEnabled() {\r\n return this.getValue()?.shippingEnabled;\r\n }\r\n\r\n get cancelShippingUserChecked() {\r\n return this.getValue()?.cancelShippingUserChecked;\r\n }\r\n\r\n get confirmShippingUserChecked() {\r\n return this.getValue()?.confirmShippingUserChecked;\r\n }\r\n\r\n get shippingAddress() {\r\n return this.getValue()?.shippingAddress;\r\n }\r\n\r\n get families() {\r\n return this.getValue()?.families;\r\n }\r\n\r\n get selectFamiliesDistinct(): Observable {\r\n return this.select('families').pipe(\r\n map((families) => {\r\n return this.commonWizardService.getFamiliesCommonFactor(\r\n families\r\n );\r\n })\r\n );\r\n }\r\n\r\n selectFamilyFolderTree(\r\n familiesWizard$: Observable,\r\n servicesWizard$: Observable,\r\n productsWizard$: Observable\r\n ) {\r\n return this.commonWizardService.selectFamilyFolderTree(\r\n familiesWizard$,\r\n servicesWizard$,\r\n productsWizard$\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Store, StoreConfig } from '@datorama/akita';\r\nimport { FamilyWizardModel } from '../../models/family-wizard.model';\r\n\r\nexport interface TreatmentWizardSettingsState {\r\n shippingEnabled: number /** Indica si la company tiene activada el módulo de shiping. 0 Deshabilitado, -1 Opcional, -2 Obligatorio */;\r\n shippingAddress: string /** La dirección de cliente (si la tiene configurada */;\r\n families: FamilyWizardModel[] /** Listado de familias disponibles para el asistente de compra */;\r\n stepStack: number[] /** Pila de pasos del asistente para volver hacia atrás */;\r\n cancelShippingUserChecked: boolean;\r\n confirmShippingUserChecked: boolean;\r\n}\r\n\r\nexport function createInitialState(): TreatmentWizardSettingsState {\r\n return {\r\n shippingEnabled: null,\r\n shippingAddress: '',\r\n families: [],\r\n stepStack: [],\r\n cancelShippingUserChecked: false,\r\n confirmShippingUserChecked: false,\r\n };\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'treatment-wizard-settings', resettable: true })\r\nexport class TreatmentWizardSettingsStore extends Store<\r\n TreatmentWizardSettingsState\r\n> {\r\n constructor() {\r\n super(createInitialState());\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { QueryEntity } from '@datorama/akita';\r\nimport { WizardStepStore, WizardStepState } from './wizard-step-store';\r\nimport { WizardStep } from './wizard-step.model';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WizardStepQuery extends QueryEntity {\r\n constructor(protected store: WizardStepStore) {\r\n super(store);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport {\r\n ActiveState,\r\n EntityState,\r\n EntityStore,\r\n StoreConfig,\r\n} from '@datorama/akita';\r\nimport { WizardStep } from './wizard-step.model';\r\n\r\nexport interface WizardStepState extends EntityState, ActiveState {}\r\n\r\n@Injectable({ providedIn: 'root' })\r\n@StoreConfig({ name: 'wizard-settings-step', resettable: true })\r\nexport class WizardStepStore extends EntityStore {\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ID } from '@datorama/akita';\r\nimport { WizardStepStore } from './wizard-step-store';\r\nimport { WizardStep } from './wizard-step.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class WizardStepService {\r\n constructor(private wizardStepStore: WizardStepStore) {}\r\n\r\n /*---------------------*/\r\n /** OPERACIONES ENTITY */\r\n /*---------------------*/\r\n\r\n add(wizardStep: WizardStep) {\r\n this.wizardStepStore.add(wizardStep);\r\n }\r\n\r\n update(id, wizardStep: Partial) {\r\n this.wizardStepStore.update(id, wizardStep);\r\n }\r\n\r\n remove(id: ID) {\r\n this.wizardStepStore.remove(id);\r\n }\r\n\r\n setWizardSteps(steps: WizardStep[]) {\r\n this.wizardStepStore.set(steps);\r\n }\r\n\r\n /*------------*/\r\n /** SERVICIOS */\r\n /*------------*/\r\n\r\n setActive(stepId: string) {\r\n this.wizardStepStore.setActive(stepId);\r\n }\r\n\r\n resetStore() {\r\n this.wizardStepStore.reset();\r\n }\r\n}\r\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* fonts */\\n/** Ionic CSS Variables **/\\n:root {\\n --ion-font-family: DM Sans;\\n --space-content-top: 15px;\\n --space-content-right: 20px;\\n --space-content-bottom: 0px;\\n --space-content-left: 20px;\\n --space-content: var(--space-content-top) var(--space-content-right) var(--space-content-bottom) var(--space-content-left);\\n --space-content-top-medium-screen: 15px;\\n --space-content-right-medium-screen: 30px;\\n --space-content-bottom-medium-screen: 30px;\\n --space-content-left-medium-screen: 30px;\\n --space-content-medium-screen: var(--space-content-top-medium-screen) var(--space-content-right-medium-screen) var(--space-content-bottom-medium-screen) var(--space-content-left-medium-screen);\\n --space-content-top-large-screen: 15px;\\n --space-content-right-large-screen: 152px;\\n --space-content-bottom-large-screen: 152px;\\n --space-content-left-large-screen: 152px;\\n --space-content-large-screen: var(--space-content-top-large-screen) var(--space-content-right-large-screen) var(--space-content-bottom-large-screen) var(--space-content-left-large-screen);\\n /** primary **/\\n --ion-color-primary: #3880ff;\\n --ion-color-primary-rgb: 56, 128, 255;\\n --ion-color-primary-contrast: #ffffff;\\n --ion-color-primary-contrast-rgb: 255, 255, 255;\\n --ion-color-primary-shade: #3171e0;\\n --ion-color-primary-tint: #4c8dff;\\n /** secondary **/\\n --ion-color-secondary: #3dc2ff;\\n --ion-color-secondary-rgb: 61, 194, 255;\\n --ion-color-secondary-contrast: #ffffff;\\n --ion-color-secondary-contrast-rgb: 255, 255, 255;\\n --ion-color-secondary-shade: #36abe0;\\n --ion-color-secondary-tint: #50c8ff;\\n /** tertiary **/\\n --ion-color-tertiary: #5260ff;\\n --ion-color-tertiary-rgb: 82, 96, 255;\\n --ion-color-tertiary-contrast: #ffffff;\\n --ion-color-tertiary-contrast-rgb: 255, 255, 255;\\n --ion-color-tertiary-shade: #4854e0;\\n --ion-color-tertiary-tint: #6370ff;\\n /** background **/\\n --ion-color-background: #F8F4F4;\\n --ion-color-background-rgb: 248,244,244;\\n --ion-color-background-contrast: #000000;\\n --ion-color-background-contrast-rgb: 0,0,0;\\n --ion-color-background-shade: hsl(0, 22.2%, 86.8%);\\n --ion-color-background-tint: hsl(0, 22.2%, 100%);\\n /** color black que se usa en varios sitios de la app **/\\n --ion-color-background-highlight: #E6E7EC;\\n /** color black que se usa en varios sitios de la app **/\\n --ion-color-black: #171725;\\n --ion-color-grey: #92929d;\\n /** font color base **/\\n --ion-color-font-base: #7F90A7;\\n --ion-color-font-base-rgb: 127,144,167;\\n --ion-color-font-base-contrast: #000000;\\n --ion-color-font-base-contrast-rgb: 0,0,0;\\n --ion-color-font-base-shade: hsl(214.5, 18.5%, 51.9%);\\n --ion-color-font-base-tint: hsl(214.5, 18.5%, 63.4%);\\n /** font color subtitules base **/\\n --ion-color-subtitules-base: #9AABC3;\\n --ion-color-subtitules-base-rgb: 154,171,195;\\n --ion-color-subtitules-base-contrast: #000000;\\n --ion-color-subtitules-base-contrast-rgb: 0,0,0;\\n --ion-color-subtitules-base-shade: hsl(215.1, 25.5%, 61.6%);\\n --ion-color-subtitules-base-tint: hsl(215.1, 25.5%, 75.3%);\\n /** font color disable base **/\\n --ion-color-disabled: #D8E0EC;\\n --ion-color-disabled-rgb: 216,224,236;\\n --ion-color-disabled-contrast: #000000;\\n --ion-color-disabled-contrast-rgb: 0,0,0;\\n --ion-color-disabled-shade: hsl(216, 34.5%, 79.8%);\\n --ion-color-disabled-tint: hsl(216, 34.5%, 97.5%);\\n /** success **/\\n --ion-color-success: #2dd36f;\\n --ion-color-success-rgb: 45, 211, 111;\\n --ion-color-success-contrast: #ffffff;\\n --ion-color-success-contrast-rgb: 255, 255, 255;\\n --ion-color-success-shade: #28ba62;\\n --ion-color-success-tint: #42d77d;\\n /** warning **/\\n --ion-color-secondary: #F8D369;\\n --ion-color-secondary-rgb: 248,211,105;\\n --ion-color-secondary-contrast: #000000;\\n --ion-color-secondary-contrast-rgb: 0,0,0;\\n --ion-color-secondary-shade: hsl(44.5, 91.1%, 62.3%);\\n --ion-color-secondary-tint: hsl(44.5, 91.1%, 76.1%);\\n /** danger **/\\n --ion-color-danger: #EE5959;\\n --ion-color-danger-rgb: 238,89,89;\\n --ion-color-danger-contrast: #000000;\\n --ion-color-danger-contrast-rgb: 0,0,0;\\n --ion-color-danger-shade: hsl(0, 81.4%, 57.7%);\\n --ion-color-danger-tint: hsl(0, 81.4%, 70.5%);\\n /** dark **/\\n --ion-color-dark: #222428;\\n --ion-color-dark-rgb: 34, 36, 40;\\n --ion-color-dark-contrast: #ffffff;\\n --ion-color-dark-contrast-rgb: 255, 255, 255;\\n --ion-color-dark-shade: #1e2023;\\n --ion-color-dark-tint: #383a3e;\\n --ion-color-medium: #989aa2;\\n --ion-color-medium-rgb: 152, 154, 162;\\n --ion-color-medium-contrast: #ffffff;\\n --ion-color-medium-contrast-rgb: 255, 255, 255;\\n --ion-color-medium-shade: #86888f;\\n --ion-color-medium-tint: #a2a4ab;\\n --ion-color-light: #ffffff;\\n --ion-color-light-rgb: 255, 255, 255;\\n --ion-color-light-contrast: #000000;\\n --ion-color-light-contrast-rgb: 0, 0, 0;\\n --ion-color-light-shade: #d7d8da;\\n --ion-color-light-tint: #f5f6f9;\\n /** twitter **/\\n --ion-color-twitter: #00acee;\\n --ion-color-twitter-rgb: 0, 172, 238;\\n --ion-color-twitter-contrast: #000000;\\n --ion-color-twitter-contrast-rgb: 0, 0, 0;\\n --ion-color-twitter-shade: #0097d1;\\n --ion-color-twitter-tint: #1ab4f0;\\n /** facebook **/\\n --ion-color-facebook: #3b5998;\\n --ion-color-facebook-rgb: 59, 89, 152;\\n --ion-color-facebook-contrast: #ffffff;\\n --ion-color-facebook-contrast-rgb: 255, 255, 255;\\n --ion-color-facebook-shade: #344e86;\\n --ion-color-facebook-tint: #4f6aa2;\\n /* error input form */\\n --highlight-color-invalid: #f04141;\\n --highlight-height: 2px;\\n --show-full-highlight: 1;\\n --show-inset-highlight: 0;\\n}\\n\\n.ion-color-twitter {\\n --ion-color-base: var(--ion-color-twitter) !important;\\n --ion-color-base-rgb: var(--ion-color-twitter-rgb) !important;\\n --ion-color-contrast: var(--ion-color-twitter-contrast) !important;\\n --ion-color-contrast-rgb: var(--ion-color-twitter-contrast-rgb) !important;\\n --ion-color-shade: var(--ion-color-twitter-shade) !important;\\n --ion-color-tint: var(--ion-color-twitter-tint) !important;\\n}\\n\\n.ion-color-facebook {\\n --ion-color-base: var(--ion-color-facebook) !important;\\n --ion-color-base-rgb: var(--ion-color-facebook-rgb) !important;\\n --ion-color-contrast: var(--ion-color-facebook-contrast) !important;\\n --ion-color-contrast-rgb: var(--ion-color-facebook-contrast-rgb) !important;\\n --ion-color-shade: var(--ion-color-facebook-shade) !important;\\n --ion-color-tint: var(--ion-color-facebook-tint) !important;\\n}\\n\\n:host ::ng-deep ngb-datepicker {\\n border: none;\\n border-bottom: 1px solid transparent;\\n width: 100%;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-content {\\n width: 100%;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-content .ngb-dp-month {\\n width: 100%;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-header {\\n padding: 15px;\\n background-color: transparent;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-header .btn-link {\\n color: var(--ion-color-primary);\\n outline: none;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-header .btn-link:active, :host ::ng-deep ngb-datepicker .ngb-dp-header .btn-link:focus {\\n outline: none;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-header .ngb-dp-month-name {\\n font-weight: 600;\\n font-size: 20px;\\n background-color: transparent;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-week {\\n padding-top: 3px;\\n padding-bottom: 3px;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-week {\\n border-bottom: none;\\n background-color: transparent;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-week .ngb-dp-weekday {\\n color: #8f9bb3;\\n font-size: 15px;\\n font-style: normal;\\n flex-grow: 1;\\n width: 3.2rem;\\n height: 3.2rem;\\n line-height: 3.2rem;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day {\\n font-size: 15px;\\n flex-grow: 1;\\n width: 3.2rem;\\n height: 3.2rem;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day [ngbDatepickerDayView] {\\n width: 3.2rem;\\n height: 3.2rem;\\n line-height: 3.2rem;\\n border-radius: 1rem !important;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day.disabled {\\n background-color: transparent !important;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day.disabled .btn-light {\\n background-color: transparent !important;\\n color: #ccc4ce !important;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day.ngb-dp-today .btn-light {\\n background-color: #dad5db;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day .btn-light {\\n border-radius: 50%;\\n color: var(--ion-color-primary);\\n font-weight: 600;\\n margin: 0 auto;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-day .btn-light.bg-primary {\\n background-color: var(--ion-color-secondary) !important;\\n color: var(--ion-color-secondary-contrast) !important;\\n font-weight: bold;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-arrow {\\n width: 3.2rem;\\n height: 3.2rem;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-arrow.right .ngb-dp-navigation-chevron {\\n left: -4px;\\n position: relative;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-arrow .ngb-dp-arrow-btn {\\n border: 1px solid #e2e4e9;\\n border-radius: 10px;\\n padding: 0 1rem;\\n width: 3.2rem;\\n height: 3.2rem;\\n}\\n:host ::ng-deep ngb-datepicker .ngb-dp-arrow .ngb-dp-arrow-btn .ngb-dp-navigation-chevron {\\n width: 1em;\\n height: 1em;\\n}\\n:host .hr {\\n height: 1px;\\n width: 100%;\\n border-top: 1px solid #DADADA;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/theme/variables.scss\",\"webpack://./src/app/modules/appointment-wizard/components/calendar/calendar.component.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"// Ionic Variables and Theming. For more info, please see:\\r\\n// http://ionicframework.com/docs/theming/\\r\\n\\r\\n/* fonts */\\r\\n$font-light: 'DM Sans';\\r\\n$font-book: 'DM Sans';\\r\\n$font-medium: 'DM Sans';\\r\\n$font-bold: 'DM Sans';\\r\\n\\r\\n/** Ionic CSS Variables **/\\r\\n:root {\\r\\n --ion-font-family: #{$font-book};\\r\\n\\r\\n\\r\\n --space-content-top: 15px;\\r\\n --space-content-right: 20px;\\r\\n --space-content-bottom: 0px;\\r\\n --space-content-left: 20px;\\r\\n --space-content: var(--space-content-top) var(--space-content-right) var(--space-content-bottom) var(--space-content-left);\\r\\n\\r\\n --space-content-top-medium-screen: 15px;\\r\\n --space-content-right-medium-screen: 30px;\\r\\n --space-content-bottom-medium-screen: 30px;\\r\\n --space-content-left-medium-screen: 30px;\\r\\n --space-content-medium-screen: var(--space-content-top-medium-screen) var(--space-content-right-medium-screen) var(--space-content-bottom-medium-screen) var(--space-content-left-medium-screen);\\r\\n\\r\\n --space-content-top-large-screen: 15px;\\r\\n --space-content-right-large-screen: 152px;\\r\\n --space-content-bottom-large-screen: 152px;\\r\\n --space-content-left-large-screen: 152px;\\r\\n --space-content-large-screen: var(--space-content-top-large-screen) var(--space-content-right-large-screen) var(--space-content-bottom-large-screen) var(--space-content-left-large-screen);\\r\\n\\r\\n \\r\\n /** primary **/\\r\\n --ion-color-primary: #3880ff;\\r\\n --ion-color-primary-rgb: 56, 128, 255;\\r\\n --ion-color-primary-contrast: #ffffff;\\r\\n --ion-color-primary-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-primary-shade: #3171e0;\\r\\n --ion-color-primary-tint: #4c8dff;\\r\\n\\r\\n /** secondary **/\\r\\n --ion-color-secondary: #3dc2ff;\\r\\n --ion-color-secondary-rgb: 61, 194, 255;\\r\\n --ion-color-secondary-contrast: #ffffff;\\r\\n --ion-color-secondary-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-secondary-shade: #36abe0;\\r\\n --ion-color-secondary-tint: #50c8ff;\\r\\n\\r\\n /** tertiary **/\\r\\n --ion-color-tertiary: #5260ff;\\r\\n --ion-color-tertiary-rgb: 82, 96, 255;\\r\\n --ion-color-tertiary-contrast: #ffffff;\\r\\n --ion-color-tertiary-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-tertiary-shade: #4854e0;\\r\\n --ion-color-tertiary-tint: #6370ff;\\r\\n\\r\\n /** background **/\\r\\n --ion-color-background: #F8F4F4;\\r\\n --ion-color-background-rgb: 248,244,244;\\r\\n --ion-color-background-contrast: #000000;\\r\\n --ion-color-background-contrast-rgb: 0,0,0;\\r\\n --ion-color-background-shade: hsl(0, 22.2%, 86.8%);\\r\\n --ion-color-background-tint: hsl(0, 22.2%, 100%);\\r\\n\\r\\n /** color black que se usa en varios sitios de la app **/\\r\\n --ion-color-background-highlight: #E6E7EC;\\r\\n\\r\\n /** color black que se usa en varios sitios de la app **/\\r\\n --ion-color-black: #171725;\\r\\n\\r\\n --ion-color-grey: #92929d;\\r\\n\\r\\n /** font color base **/\\r\\n --ion-color-font-base: #7F90A7;\\r\\n --ion-color-font-base-rgb: 127,144,167;\\r\\n --ion-color-font-base-contrast: #000000;\\r\\n --ion-color-font-base-contrast-rgb: 0,0,0;\\r\\n --ion-color-font-base-shade: hsl(214.5, 18.5%, 51.9%);\\r\\n --ion-color-font-base-tint: hsl(214.5, 18.5%, 63.4%);\\r\\n\\r\\n /** font color subtitules base **/\\r\\n --ion-color-subtitules-base: #9AABC3;\\r\\n --ion-color-subtitules-base-rgb: 154,171,195;\\r\\n --ion-color-subtitules-base-contrast: #000000;\\r\\n --ion-color-subtitules-base-contrast-rgb: 0,0,0;\\r\\n --ion-color-subtitules-base-shade: hsl(215.1, 25.5%, 61.6%);\\r\\n --ion-color-subtitules-base-tint: hsl(215.1, 25.5%, 75.3%);\\r\\n\\r\\n /** font color disable base **/\\r\\n --ion-color-disabled: #D8E0EC;\\r\\n --ion-color-disabled-rgb: 216,224,236;\\r\\n --ion-color-disabled-contrast: #000000;\\r\\n --ion-color-disabled-contrast-rgb: 0,0,0;\\r\\n --ion-color-disabled-shade: hsl(216, 34.5%, 79.8%);\\r\\n --ion-color-disabled-tint: hsl(216, 34.5%, 97.5%);\\r\\n\\r\\n /** success **/\\r\\n --ion-color-success: #2dd36f;\\r\\n --ion-color-success-rgb: 45, 211, 111;\\r\\n --ion-color-success-contrast: #ffffff;\\r\\n --ion-color-success-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-success-shade: #28ba62;\\r\\n --ion-color-success-tint: #42d77d;\\r\\n\\r\\n /** warning **/\\r\\n --ion-color-secondary: #F8D369;\\r\\n --ion-color-secondary-rgb: 248,211,105;\\r\\n --ion-color-secondary-contrast: #000000;\\r\\n --ion-color-secondary-contrast-rgb: 0,0,0;\\r\\n --ion-color-secondary-shade: hsl(44.5, 91.1%, 62.3%);\\r\\n --ion-color-secondary-tint: hsl(44.5, 91.1%, 76.1%);\\r\\n\\r\\n /** danger **/\\r\\n --ion-color-danger: #EE5959;\\r\\n --ion-color-danger-rgb: 238,89,89;\\r\\n --ion-color-danger-contrast: #000000;\\r\\n --ion-color-danger-contrast-rgb: 0,0,0;\\r\\n --ion-color-danger-shade: hsl(0, 81.4%, 57.7%);\\r\\n --ion-color-danger-tint: hsl(0, 81.4%, 70.5%);\\r\\n\\r\\n /** dark **/\\r\\n --ion-color-dark: #222428;\\r\\n --ion-color-dark-rgb: 34, 36, 40;\\r\\n --ion-color-dark-contrast: #ffffff;\\r\\n --ion-color-dark-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-dark-shade: #1e2023;\\r\\n --ion-color-dark-tint: #383a3e;\\r\\n\\r\\n --ion-color-medium: #989aa2;\\r\\n --ion-color-medium-rgb: 152, 154, 162;\\r\\n --ion-color-medium-contrast: #ffffff;\\r\\n --ion-color-medium-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-medium-shade: #86888f;\\r\\n --ion-color-medium-tint: #a2a4ab;\\r\\n\\r\\n --ion-color-light: #ffffff;\\r\\n --ion-color-light-rgb: 255, 255, 255;\\r\\n --ion-color-light-contrast: #000000;\\r\\n --ion-color-light-contrast-rgb: 0, 0, 0;\\r\\n --ion-color-light-shade: #d7d8da;\\r\\n --ion-color-light-tint: #f5f6f9;\\r\\n\\r\\n /** twitter **/\\r\\n --ion-color-twitter: #00acee;\\r\\n --ion-color-twitter-rgb: 0, 172, 238;\\r\\n --ion-color-twitter-contrast: #000000;\\r\\n --ion-color-twitter-contrast-rgb: 0, 0, 0;\\r\\n --ion-color-twitter-shade: #0097d1;\\r\\n --ion-color-twitter-tint: #1ab4f0;\\r\\n\\r\\n /** facebook **/\\r\\n --ion-color-facebook: #3b5998;\\r\\n --ion-color-facebook-rgb: 59, 89, 152;\\r\\n --ion-color-facebook-contrast: #ffffff;\\r\\n --ion-color-facebook-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-facebook-shade: #344e86;\\r\\n --ion-color-facebook-tint: #4f6aa2;\\r\\n\\r\\n /* error input form */\\r\\n --highlight-color-invalid: #f04141;\\r\\n --highlight-height: 2px;\\r\\n --show-full-highlight: 1;\\r\\n --show-inset-highlight: 0;\\r\\n}\\r\\n\\r\\n.ion-color-twitter {\\r\\n --ion-color-base: var(--ion-color-twitter) !important;\\r\\n --ion-color-base-rgb: var(--ion-color-twitter-rgb) !important;\\r\\n --ion-color-contrast: var(--ion-color-twitter-contrast) !important;\\r\\n --ion-color-contrast-rgb: var(--ion-color-twitter-contrast-rgb) !important;\\r\\n --ion-color-shade: var(--ion-color-twitter-shade) !important;\\r\\n --ion-color-tint: var(--ion-color-twitter-tint) !important;\\r\\n}\\r\\n\\r\\n.ion-color-facebook {\\r\\n --ion-color-base: var(--ion-color-facebook) !important;\\r\\n --ion-color-base-rgb: var(--ion-color-facebook-rgb) !important;\\r\\n --ion-color-contrast: var(--ion-color-facebook-contrast) !important;\\r\\n --ion-color-contrast-rgb: var(--ion-color-facebook-contrast-rgb) !important;\\r\\n --ion-color-shade: var(--ion-color-facebook-shade) !important;\\r\\n --ion-color-tint: var(--ion-color-facebook-tint) !important;\\r\\n}\\r\\n\\r\\n\",\"@import '../../../../../theme/variables';\\r\\n\\r\\n:host {\\r\\n ::ng-deep ngb-datepicker {\\r\\n border: none;\\r\\n border-bottom: 1px solid transparent;\\r\\n width: 100%;\\r\\n\\r\\n .ngb-dp-content {\\r\\n width: 100%;\\r\\n\\r\\n .ngb-dp-month {\\r\\n width: 100%;\\r\\n }\\r\\n }\\r\\n\\r\\n .ngb-dp-header {\\r\\n padding: 15px;\\r\\n background-color: transparent;\\r\\n\\r\\n .btn-link {\\r\\n color: var(--ion-color-primary);\\r\\n outline: none;\\r\\n\\r\\n &:active,\\r\\n &:focus {\\r\\n outline: none;\\r\\n }\\r\\n }\\r\\n\\r\\n .ngb-dp-month-name {\\r\\n font-weight: 600;\\r\\n font-size: 20px;\\r\\n background-color: transparent;\\r\\n }\\r\\n }\\r\\n\\r\\n .ngb-dp-week {\\r\\n padding-top: 3px;\\r\\n padding-bottom: 3px;\\r\\n }\\r\\n\\r\\n .ngb-dp-week {\\r\\n border-bottom: none;\\r\\n background-color: transparent;\\r\\n\\r\\n .ngb-dp-weekday {\\r\\n color: #8f9bb3;\\r\\n font-size: 15px;\\r\\n font-style: normal;\\r\\n flex-grow: 1;\\r\\n width: 3.2rem;\\r\\n height: 3.2rem;\\r\\n line-height: 3.2rem;\\r\\n }\\r\\n }\\r\\n\\r\\n .ngb-dp-day {\\r\\n font-size: 15px;\\r\\n flex-grow: 1;\\r\\n width: 3.2rem;\\r\\n height: 3.2rem;\\r\\n\\r\\n [ngbDatepickerDayView] {\\r\\n width: 3.2rem;\\r\\n height: 3.2rem;\\r\\n line-height: 3.2rem;\\r\\n border-radius: 1rem !important;\\r\\n }\\r\\n\\r\\n &.disabled {\\r\\n background-color: transparent !important;\\r\\n\\r\\n .btn-light {\\r\\n background-color: transparent !important;\\r\\n color: #ccc4ce !important;\\r\\n }\\r\\n }\\r\\n\\r\\n &.ngb-dp-today {\\r\\n .btn-light {\\r\\n background-color: #dad5db;\\r\\n }\\r\\n }\\r\\n\\r\\n .btn-light {\\r\\n border-radius: 50%;\\r\\n color: var(--ion-color-primary);\\r\\n font-weight: 600;\\r\\n margin: 0 auto;\\r\\n\\r\\n &.bg-primary {\\r\\n background-color: var(--ion-color-secondary) !important;\\r\\n //COLORTODOcolor: var(--ion-color-primary) !important;\\r\\n color: var(--ion-color-secondary-contrast) !important;\\r\\n font-weight: bold;\\r\\n }\\r\\n }\\r\\n }\\r\\n .ngb-dp-arrow{\\r\\n width: 3.2rem;\\r\\n height: 3.2rem;\\r\\n\\r\\n &.right{\\r\\n .ngb-dp-navigation-chevron {\\r\\n left: -4px;\\r\\n position: relative;\\r\\n }\\r\\n }\\r\\n\\r\\n .ngb-dp-arrow-btn {\\r\\n border: 1px solid #e2e4e9;\\r\\n border-radius: 10px;\\r\\n padding: 0 1rem;\\r\\n width: 3.2rem;\\r\\n height: 3.2rem;\\r\\n \\r\\n .ngb-dp-navigation-chevron {\\r\\n width: 1em;\\r\\n height: 1em;\\r\\n }\\r\\n }\\r\\n }\\r\\n \\r\\n }\\r\\n\\r\\n .hr{\\r\\n height: 1px;\\r\\n width: 100%;\\r\\n border-top: 1px solid #DADADA;\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* fonts */\\n/** Ionic CSS Variables **/\\n:root {\\n --ion-font-family: DM Sans;\\n --space-content-top: 15px;\\n --space-content-right: 20px;\\n --space-content-bottom: 0px;\\n --space-content-left: 20px;\\n --space-content: var(--space-content-top) var(--space-content-right) var(--space-content-bottom) var(--space-content-left);\\n --space-content-top-medium-screen: 15px;\\n --space-content-right-medium-screen: 30px;\\n --space-content-bottom-medium-screen: 30px;\\n --space-content-left-medium-screen: 30px;\\n --space-content-medium-screen: var(--space-content-top-medium-screen) var(--space-content-right-medium-screen) var(--space-content-bottom-medium-screen) var(--space-content-left-medium-screen);\\n --space-content-top-large-screen: 15px;\\n --space-content-right-large-screen: 152px;\\n --space-content-bottom-large-screen: 152px;\\n --space-content-left-large-screen: 152px;\\n --space-content-large-screen: var(--space-content-top-large-screen) var(--space-content-right-large-screen) var(--space-content-bottom-large-screen) var(--space-content-left-large-screen);\\n /** primary **/\\n --ion-color-primary: #3880ff;\\n --ion-color-primary-rgb: 56, 128, 255;\\n --ion-color-primary-contrast: #ffffff;\\n --ion-color-primary-contrast-rgb: 255, 255, 255;\\n --ion-color-primary-shade: #3171e0;\\n --ion-color-primary-tint: #4c8dff;\\n /** secondary **/\\n --ion-color-secondary: #3dc2ff;\\n --ion-color-secondary-rgb: 61, 194, 255;\\n --ion-color-secondary-contrast: #ffffff;\\n --ion-color-secondary-contrast-rgb: 255, 255, 255;\\n --ion-color-secondary-shade: #36abe0;\\n --ion-color-secondary-tint: #50c8ff;\\n /** tertiary **/\\n --ion-color-tertiary: #5260ff;\\n --ion-color-tertiary-rgb: 82, 96, 255;\\n --ion-color-tertiary-contrast: #ffffff;\\n --ion-color-tertiary-contrast-rgb: 255, 255, 255;\\n --ion-color-tertiary-shade: #4854e0;\\n --ion-color-tertiary-tint: #6370ff;\\n /** background **/\\n --ion-color-background: #F8F4F4;\\n --ion-color-background-rgb: 248,244,244;\\n --ion-color-background-contrast: #000000;\\n --ion-color-background-contrast-rgb: 0,0,0;\\n --ion-color-background-shade: hsl(0, 22.2%, 86.8%);\\n --ion-color-background-tint: hsl(0, 22.2%, 100%);\\n /** color black que se usa en varios sitios de la app **/\\n --ion-color-background-highlight: #E6E7EC;\\n /** color black que se usa en varios sitios de la app **/\\n --ion-color-black: #171725;\\n --ion-color-grey: #92929d;\\n /** font color base **/\\n --ion-color-font-base: #7F90A7;\\n --ion-color-font-base-rgb: 127,144,167;\\n --ion-color-font-base-contrast: #000000;\\n --ion-color-font-base-contrast-rgb: 0,0,0;\\n --ion-color-font-base-shade: hsl(214.5, 18.5%, 51.9%);\\n --ion-color-font-base-tint: hsl(214.5, 18.5%, 63.4%);\\n /** font color subtitules base **/\\n --ion-color-subtitules-base: #9AABC3;\\n --ion-color-subtitules-base-rgb: 154,171,195;\\n --ion-color-subtitules-base-contrast: #000000;\\n --ion-color-subtitules-base-contrast-rgb: 0,0,0;\\n --ion-color-subtitules-base-shade: hsl(215.1, 25.5%, 61.6%);\\n --ion-color-subtitules-base-tint: hsl(215.1, 25.5%, 75.3%);\\n /** font color disable base **/\\n --ion-color-disabled: #D8E0EC;\\n --ion-color-disabled-rgb: 216,224,236;\\n --ion-color-disabled-contrast: #000000;\\n --ion-color-disabled-contrast-rgb: 0,0,0;\\n --ion-color-disabled-shade: hsl(216, 34.5%, 79.8%);\\n --ion-color-disabled-tint: hsl(216, 34.5%, 97.5%);\\n /** success **/\\n --ion-color-success: #2dd36f;\\n --ion-color-success-rgb: 45, 211, 111;\\n --ion-color-success-contrast: #ffffff;\\n --ion-color-success-contrast-rgb: 255, 255, 255;\\n --ion-color-success-shade: #28ba62;\\n --ion-color-success-tint: #42d77d;\\n /** warning **/\\n --ion-color-secondary: #F8D369;\\n --ion-color-secondary-rgb: 248,211,105;\\n --ion-color-secondary-contrast: #000000;\\n --ion-color-secondary-contrast-rgb: 0,0,0;\\n --ion-color-secondary-shade: hsl(44.5, 91.1%, 62.3%);\\n --ion-color-secondary-tint: hsl(44.5, 91.1%, 76.1%);\\n /** danger **/\\n --ion-color-danger: #EE5959;\\n --ion-color-danger-rgb: 238,89,89;\\n --ion-color-danger-contrast: #000000;\\n --ion-color-danger-contrast-rgb: 0,0,0;\\n --ion-color-danger-shade: hsl(0, 81.4%, 57.7%);\\n --ion-color-danger-tint: hsl(0, 81.4%, 70.5%);\\n /** dark **/\\n --ion-color-dark: #222428;\\n --ion-color-dark-rgb: 34, 36, 40;\\n --ion-color-dark-contrast: #ffffff;\\n --ion-color-dark-contrast-rgb: 255, 255, 255;\\n --ion-color-dark-shade: #1e2023;\\n --ion-color-dark-tint: #383a3e;\\n --ion-color-medium: #989aa2;\\n --ion-color-medium-rgb: 152, 154, 162;\\n --ion-color-medium-contrast: #ffffff;\\n --ion-color-medium-contrast-rgb: 255, 255, 255;\\n --ion-color-medium-shade: #86888f;\\n --ion-color-medium-tint: #a2a4ab;\\n --ion-color-light: #ffffff;\\n --ion-color-light-rgb: 255, 255, 255;\\n --ion-color-light-contrast: #000000;\\n --ion-color-light-contrast-rgb: 0, 0, 0;\\n --ion-color-light-shade: #d7d8da;\\n --ion-color-light-tint: #f5f6f9;\\n /** twitter **/\\n --ion-color-twitter: #00acee;\\n --ion-color-twitter-rgb: 0, 172, 238;\\n --ion-color-twitter-contrast: #000000;\\n --ion-color-twitter-contrast-rgb: 0, 0, 0;\\n --ion-color-twitter-shade: #0097d1;\\n --ion-color-twitter-tint: #1ab4f0;\\n /** facebook **/\\n --ion-color-facebook: #3b5998;\\n --ion-color-facebook-rgb: 59, 89, 152;\\n --ion-color-facebook-contrast: #ffffff;\\n --ion-color-facebook-contrast-rgb: 255, 255, 255;\\n --ion-color-facebook-shade: #344e86;\\n --ion-color-facebook-tint: #4f6aa2;\\n /* error input form */\\n --highlight-color-invalid: #f04141;\\n --highlight-height: 2px;\\n --show-full-highlight: 1;\\n --show-inset-highlight: 0;\\n}\\n\\n.ion-color-twitter {\\n --ion-color-base: var(--ion-color-twitter) !important;\\n --ion-color-base-rgb: var(--ion-color-twitter-rgb) !important;\\n --ion-color-contrast: var(--ion-color-twitter-contrast) !important;\\n --ion-color-contrast-rgb: var(--ion-color-twitter-contrast-rgb) !important;\\n --ion-color-shade: var(--ion-color-twitter-shade) !important;\\n --ion-color-tint: var(--ion-color-twitter-tint) !important;\\n}\\n\\n.ion-color-facebook {\\n --ion-color-base: var(--ion-color-facebook) !important;\\n --ion-color-base-rgb: var(--ion-color-facebook-rgb) !important;\\n --ion-color-contrast: var(--ion-color-facebook-contrast) !important;\\n --ion-color-contrast-rgb: var(--ion-color-facebook-contrast-rgb) !important;\\n --ion-color-shade: var(--ion-color-facebook-shade) !important;\\n --ion-color-tint: var(--ion-color-facebook-tint) !important;\\n}\\n\\n:host .calendar {\\n background-color: var(--ion-color-background) !important;\\n}\\n:host .search-bar-container {\\n display: flex;\\n align-items: center;\\n padding-top: 25px;\\n padding-bottom: 15px;\\n padding-right: var(--space-content-right);\\n padding-left: var(--space-content-left);\\n background: var(--ion-color-background);\\n}\\n:host .search-bar-container app-input-search {\\n width: 100%;\\n}\\n:host swiper-container {\\n height: 100%;\\n background: var(--ion-color-background);\\n}\\n:host swiper-container swiper-slide {\\n background: var(--ion-color-background);\\n overflow-y: auto;\\n display: block;\\n visibility: hidden;\\n}\\n:host swiper-container swiper-slide.swiper-slide-active {\\n visibility: visible;\\n}\\n:host swiper-container swiper-slide.slide-professional app-professional-list {\\n height: 100%;\\n}\\n:host swiper-container swiper-slide.slide-confirm app-confirm {\\n height: 100%;\\n}\\n:host swiper-container swiper-slide.slide-result app-result-wizard {\\n height: 100%;\\n}\\n:host ion-footer .button-next-step {\\n --background: var(--ion-color-secondary);\\n --color: var(--ion-color-secondary-contrast);\\n}\\n:host ion-footer .button-next-step[disabled] {\\n --background: var(--ion-color-disabled);\\n --color: #FFFFFF;\\n opacity: unset !important;\\n}\\n:host .invisible {\\n display: none;\\n}\\n:host .content-register-form {\\n text-align: left;\\n padding: 16px;\\n padding-bottom: 0px;\\n height: 100%;\\n}\\n:host .content-result {\\n height: 100%;\\n}\\n:host .toolbar-title .subtitle {\\n margin: 0;\\n color: var(--ion-color-subtitules-base);\\n font-weight: 400;\\n font-size: 14px;\\n line-height: 18px;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/theme/variables.scss\",\"webpack://./src/app/modules/appointment-wizard/pages/appointment-wizard/appointment-wizard.component.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"// Ionic Variables and Theming. For more info, please see:\\r\\n// http://ionicframework.com/docs/theming/\\r\\n\\r\\n/* fonts */\\r\\n$font-light: 'DM Sans';\\r\\n$font-book: 'DM Sans';\\r\\n$font-medium: 'DM Sans';\\r\\n$font-bold: 'DM Sans';\\r\\n\\r\\n/** Ionic CSS Variables **/\\r\\n:root {\\r\\n --ion-font-family: #{$font-book};\\r\\n\\r\\n\\r\\n --space-content-top: 15px;\\r\\n --space-content-right: 20px;\\r\\n --space-content-bottom: 0px;\\r\\n --space-content-left: 20px;\\r\\n --space-content: var(--space-content-top) var(--space-content-right) var(--space-content-bottom) var(--space-content-left);\\r\\n\\r\\n --space-content-top-medium-screen: 15px;\\r\\n --space-content-right-medium-screen: 30px;\\r\\n --space-content-bottom-medium-screen: 30px;\\r\\n --space-content-left-medium-screen: 30px;\\r\\n --space-content-medium-screen: var(--space-content-top-medium-screen) var(--space-content-right-medium-screen) var(--space-content-bottom-medium-screen) var(--space-content-left-medium-screen);\\r\\n\\r\\n --space-content-top-large-screen: 15px;\\r\\n --space-content-right-large-screen: 152px;\\r\\n --space-content-bottom-large-screen: 152px;\\r\\n --space-content-left-large-screen: 152px;\\r\\n --space-content-large-screen: var(--space-content-top-large-screen) var(--space-content-right-large-screen) var(--space-content-bottom-large-screen) var(--space-content-left-large-screen);\\r\\n\\r\\n \\r\\n /** primary **/\\r\\n --ion-color-primary: #3880ff;\\r\\n --ion-color-primary-rgb: 56, 128, 255;\\r\\n --ion-color-primary-contrast: #ffffff;\\r\\n --ion-color-primary-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-primary-shade: #3171e0;\\r\\n --ion-color-primary-tint: #4c8dff;\\r\\n\\r\\n /** secondary **/\\r\\n --ion-color-secondary: #3dc2ff;\\r\\n --ion-color-secondary-rgb: 61, 194, 255;\\r\\n --ion-color-secondary-contrast: #ffffff;\\r\\n --ion-color-secondary-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-secondary-shade: #36abe0;\\r\\n --ion-color-secondary-tint: #50c8ff;\\r\\n\\r\\n /** tertiary **/\\r\\n --ion-color-tertiary: #5260ff;\\r\\n --ion-color-tertiary-rgb: 82, 96, 255;\\r\\n --ion-color-tertiary-contrast: #ffffff;\\r\\n --ion-color-tertiary-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-tertiary-shade: #4854e0;\\r\\n --ion-color-tertiary-tint: #6370ff;\\r\\n\\r\\n /** background **/\\r\\n --ion-color-background: #F8F4F4;\\r\\n --ion-color-background-rgb: 248,244,244;\\r\\n --ion-color-background-contrast: #000000;\\r\\n --ion-color-background-contrast-rgb: 0,0,0;\\r\\n --ion-color-background-shade: hsl(0, 22.2%, 86.8%);\\r\\n --ion-color-background-tint: hsl(0, 22.2%, 100%);\\r\\n\\r\\n /** color black que se usa en varios sitios de la app **/\\r\\n --ion-color-background-highlight: #E6E7EC;\\r\\n\\r\\n /** color black que se usa en varios sitios de la app **/\\r\\n --ion-color-black: #171725;\\r\\n\\r\\n --ion-color-grey: #92929d;\\r\\n\\r\\n /** font color base **/\\r\\n --ion-color-font-base: #7F90A7;\\r\\n --ion-color-font-base-rgb: 127,144,167;\\r\\n --ion-color-font-base-contrast: #000000;\\r\\n --ion-color-font-base-contrast-rgb: 0,0,0;\\r\\n --ion-color-font-base-shade: hsl(214.5, 18.5%, 51.9%);\\r\\n --ion-color-font-base-tint: hsl(214.5, 18.5%, 63.4%);\\r\\n\\r\\n /** font color subtitules base **/\\r\\n --ion-color-subtitules-base: #9AABC3;\\r\\n --ion-color-subtitules-base-rgb: 154,171,195;\\r\\n --ion-color-subtitules-base-contrast: #000000;\\r\\n --ion-color-subtitules-base-contrast-rgb: 0,0,0;\\r\\n --ion-color-subtitules-base-shade: hsl(215.1, 25.5%, 61.6%);\\r\\n --ion-color-subtitules-base-tint: hsl(215.1, 25.5%, 75.3%);\\r\\n\\r\\n /** font color disable base **/\\r\\n --ion-color-disabled: #D8E0EC;\\r\\n --ion-color-disabled-rgb: 216,224,236;\\r\\n --ion-color-disabled-contrast: #000000;\\r\\n --ion-color-disabled-contrast-rgb: 0,0,0;\\r\\n --ion-color-disabled-shade: hsl(216, 34.5%, 79.8%);\\r\\n --ion-color-disabled-tint: hsl(216, 34.5%, 97.5%);\\r\\n\\r\\n /** success **/\\r\\n --ion-color-success: #2dd36f;\\r\\n --ion-color-success-rgb: 45, 211, 111;\\r\\n --ion-color-success-contrast: #ffffff;\\r\\n --ion-color-success-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-success-shade: #28ba62;\\r\\n --ion-color-success-tint: #42d77d;\\r\\n\\r\\n /** warning **/\\r\\n --ion-color-secondary: #F8D369;\\r\\n --ion-color-secondary-rgb: 248,211,105;\\r\\n --ion-color-secondary-contrast: #000000;\\r\\n --ion-color-secondary-contrast-rgb: 0,0,0;\\r\\n --ion-color-secondary-shade: hsl(44.5, 91.1%, 62.3%);\\r\\n --ion-color-secondary-tint: hsl(44.5, 91.1%, 76.1%);\\r\\n\\r\\n /** danger **/\\r\\n --ion-color-danger: #EE5959;\\r\\n --ion-color-danger-rgb: 238,89,89;\\r\\n --ion-color-danger-contrast: #000000;\\r\\n --ion-color-danger-contrast-rgb: 0,0,0;\\r\\n --ion-color-danger-shade: hsl(0, 81.4%, 57.7%);\\r\\n --ion-color-danger-tint: hsl(0, 81.4%, 70.5%);\\r\\n\\r\\n /** dark **/\\r\\n --ion-color-dark: #222428;\\r\\n --ion-color-dark-rgb: 34, 36, 40;\\r\\n --ion-color-dark-contrast: #ffffff;\\r\\n --ion-color-dark-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-dark-shade: #1e2023;\\r\\n --ion-color-dark-tint: #383a3e;\\r\\n\\r\\n --ion-color-medium: #989aa2;\\r\\n --ion-color-medium-rgb: 152, 154, 162;\\r\\n --ion-color-medium-contrast: #ffffff;\\r\\n --ion-color-medium-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-medium-shade: #86888f;\\r\\n --ion-color-medium-tint: #a2a4ab;\\r\\n\\r\\n --ion-color-light: #ffffff;\\r\\n --ion-color-light-rgb: 255, 255, 255;\\r\\n --ion-color-light-contrast: #000000;\\r\\n --ion-color-light-contrast-rgb: 0, 0, 0;\\r\\n --ion-color-light-shade: #d7d8da;\\r\\n --ion-color-light-tint: #f5f6f9;\\r\\n\\r\\n /** twitter **/\\r\\n --ion-color-twitter: #00acee;\\r\\n --ion-color-twitter-rgb: 0, 172, 238;\\r\\n --ion-color-twitter-contrast: #000000;\\r\\n --ion-color-twitter-contrast-rgb: 0, 0, 0;\\r\\n --ion-color-twitter-shade: #0097d1;\\r\\n --ion-color-twitter-tint: #1ab4f0;\\r\\n\\r\\n /** facebook **/\\r\\n --ion-color-facebook: #3b5998;\\r\\n --ion-color-facebook-rgb: 59, 89, 152;\\r\\n --ion-color-facebook-contrast: #ffffff;\\r\\n --ion-color-facebook-contrast-rgb: 255, 255, 255;\\r\\n --ion-color-facebook-shade: #344e86;\\r\\n --ion-color-facebook-tint: #4f6aa2;\\r\\n\\r\\n /* error input form */\\r\\n --highlight-color-invalid: #f04141;\\r\\n --highlight-height: 2px;\\r\\n --show-full-highlight: 1;\\r\\n --show-inset-highlight: 0;\\r\\n}\\r\\n\\r\\n.ion-color-twitter {\\r\\n --ion-color-base: var(--ion-color-twitter) !important;\\r\\n --ion-color-base-rgb: var(--ion-color-twitter-rgb) !important;\\r\\n --ion-color-contrast: var(--ion-color-twitter-contrast) !important;\\r\\n --ion-color-contrast-rgb: var(--ion-color-twitter-contrast-rgb) !important;\\r\\n --ion-color-shade: var(--ion-color-twitter-shade) !important;\\r\\n --ion-color-tint: var(--ion-color-twitter-tint) !important;\\r\\n}\\r\\n\\r\\n.ion-color-facebook {\\r\\n --ion-color-base: var(--ion-color-facebook) !important;\\r\\n --ion-color-base-rgb: var(--ion-color-facebook-rgb) !important;\\r\\n --ion-color-contrast: var(--ion-color-facebook-contrast) !important;\\r\\n --ion-color-contrast-rgb: var(--ion-color-facebook-contrast-rgb) !important;\\r\\n --ion-color-shade: var(--ion-color-facebook-shade) !important;\\r\\n --ion-color-tint: var(--ion-color-facebook-tint) !important;\\r\\n}\\r\\n\\r\\n\",\"@import '../../../../../theme/variables';\\r\\n\\r\\n:host {\\r\\n .calendar {\\r\\n background-color: var(--ion-color-background) !important;\\r\\n }\\r\\n\\r\\n .search-bar-container {\\r\\n display: flex;\\r\\n align-items: center;\\r\\n padding-top: 25px;\\r\\n padding-bottom:15px;\\r\\n padding-right: var(--space-content-right);\\r\\n padding-left: var(--space-content-left);\\r\\n background: var(--ion-color-background);\\r\\n\\r\\n app-input-search {\\r\\n width: 100%;\\r\\n }\\r\\n }\\r\\n\\r\\n swiper-container {\\r\\n height: 100%;\\r\\n background: var(--ion-color-background);\\r\\n swiper-slide {\\r\\n background: var(--ion-color-background);\\r\\n overflow-y: auto;\\r\\n display: block;\\r\\n visibility: hidden;\\r\\n &.swiper-slide-active {\\r\\n visibility: visible;\\r\\n }\\r\\n &.slide-professional {\\r\\n app-professional-list {\\r\\n height: 100%;\\r\\n }\\r\\n }\\r\\n\\r\\n &.slide-confirm {\\r\\n app-confirm {\\r\\n height: 100%;\\r\\n }\\r\\n }\\r\\n\\r\\n &.slide-result {\\r\\n app-result-wizard {\\r\\n height: 100%;\\r\\n }\\r\\n }\\r\\n }\\r\\n }\\r\\n ion-footer {\\r\\n .button-next-step {\\r\\n --background: var(--ion-color-secondary);\\r\\n //COLORTODO--color: var(--ion-color-primary);\\r\\n --color: var(--ion-color-secondary-contrast);\\r\\n\\r\\n &[disabled] {\\r\\n --background: var(--ion-color-disabled);\\r\\n --color: #FFFFFF;\\r\\n opacity: unset !important;\\r\\n }\\r\\n }\\r\\n \\r\\n }\\r\\n .invisible {\\r\\n display: none;\\r\\n }\\r\\n\\r\\n .content-register-form {\\r\\n text-align: left;\\r\\n padding: 16px;\\r\\n padding-bottom: 0px;\\r\\n height: 100%;\\r\\n }\\r\\n\\r\\n .content-result {\\r\\n height: 100%;\\r\\n }\\r\\n\\r\\n .toolbar-title {\\r\\n .subtitle {\\r\\n margin: 0;\\r\\n color: var(--ion-color-subtitules-base);\\r\\n font-weight: 400;\\r\\n font-size: 14px;\\r\\n line-height: 18px;\\r\\n }\\r\\n }\\r\\n}\\r\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n"],"names":["Injectable","Calendar","ClinicDetailQuery","ClinicQuery","Platform","ServicesGroupQuery","AppointmentWizardTimeQuery","ServiceWizardQuery","AppointmentQuery","Capacitor","CalendarDeviceService","constructor","calendar","clinicDetailQuery","clinicQuery","platform","servicesGroupQuery","appointmentWizardTimeQuery","serviceWizardQuery","appointmentQuery","addAppointmentToCalendarDevice","appointmentId","isNativePlatform","appointments","createObjectAppointment","appointment","title","comercialName","id","location","city","notes","serviceDescription","servicesDescription","startDate","endDate","is","parsedIOSStartDate","parsedIOSEndDate","CalendarDeviceService_1","getIosDates","Date","date","timeStart","timeEnd","createEvent","deleteAppointmentToCalendarDevice","getEntity","_appointment","split","deleteEvent","e","getAll","length","createAppointmentsSingleGroup","createAppointmentsMultipleGroup","timeActive","getActive","servicesChekedArrayDescription","filterBy","checked","forEach","service","push","description","singleAppointment","clinicID","appointmentsArray","servicesGroup","serviceGroup","index","servicesMultipleGroupDescription","ServicesID","servicesId","TimeStart","TimeEnd","iosDateSplitted","year","month","day","iosStartDate","iosEndDate","parseIOSDate","dateSplitted","toISOString","Number","providedIn","combineLatest","map","CommonWizardService","getFamiliesCommonFactor","families","sourceFamilies","filter","family","sourceId","existSourceFamily","sourceFamily","folderSourceId","familiesCommonFactor","selectFamilyFolderTree","familiesWizard$","servicesWizard$","productsWizard$","pipe","services","products","familyFolders","familyFolderRoot","parentId","parentSourceId","newFamilyFolder","folderId","familySourceID","familyFolder","some","familyCombineFactorId","familyId","product","familySourceId","familyFolderGroup","Object","entries","currentFamilyFolder","indexGroup","sort","a","b","deleteEmptyFamily","isFamilyEmpty","currentFamilyFolderToDelete","Component","Output","EventEmitter","Input","ViewChild","NgbCalendar","NgbDatepicker","NgbDatepickerI18n","LanguageService","I18N_VALUES","es","weekdays","months","ca","en","pt","br","it","I18n","languageService","getLocale","CustomDatepickerI18n","_i18n","setI18NValues","shortLocale","language","substring","toLowerCase","keys","findIndex","lang","I18NValues","getWeekdayLabel","weekday","getMonthShortName","getMonthFullName","getDayAriaLabel","CalendarComponent","ngOnInit","getToday","todayDate","onNavigate","event","current","selected","next","onCalendarChange","onDateSelect","dateSelectEvent","emit","calendarChangeEvent","resetCalendar","datepicker","navigateTo","isDisabled","args","selector","template","providers","provide","useClass","NgZone","ModalController","ActionSheetController","AlertController","AppointmentWizardSettingsService","AppointmentWizardSettingsQuery","BehaviorSubject","of","Subject","LibraryService","ServiceWizardService","take","takeUntil","IdsStepsAppointmentWizardModel","WizardStepService","WizardStepQuery","NgbDate","AppointmentWizardTimeService","AppointmentWizardDateService","AppointmentWizardDateQuery","PaymentWizardSettingsService","PaymentWizardSettingsQuery","Router","UserQuery","RegisterFormComponent","UserService","ToastService","SettingsQuery","AppointmentService","PaymethodWizardQuery","PaymethodWizardService","TreatmentService","ServicesGroupService","CompanyQuery","ServiceSearchbarComponent","LoadingService","KeyboardQuery","RouterService","GenericHeaderComponent","OtpModalComponent","OTPModalDismissActions","SocialLoginQuery","SocialLoginService","InputSearchComponent","templateProfessionalsActionButtonDisabled","templateProfessionalsStepCheckShowActionButton","templateProfessionalsNextStep","templateGoBackSlideProfessional","templateProfessionalUndoNextStep","templateDatetimeStepCheckShowActionButton","templateDatetimeActionButtonDisabled","templatePaymethodsStepCheckShowActionButton","templatePaymethodsActionButtonDisabled","templatePaymethodUndoNextStep","templateResultStepCheckShowActionButton","stepsLabels","HeaderPictureQuery","PackWizardQuery","PacksWizardService","AppointmentWizardComponent","servicesDescription$","servicesChecked$","modalController","appointmentWizardSettingsService","appointmentWizardSettingsQuery","libraryService","serviceWizardService","wizardStepService","wizardStepQuery","appointmentWizardTimeService","appointmentWizardDateService","appointmentWizardDateQuery","paymentWizardSettingsService","paymentWizardSettingsQuery","actionSheetController","router","userQuery","userService","toastService","settingsQuery","appointmentService","paymethodWizardQuery","paymethodWizardService","treatmentService","alertCtrl","servicesGroupService","companyQuery","ngZone","loadingService","calendarDeviceService","keyboardQuery","routerService","socialLoginQuery","socialLoginService","headerPicturesQuery","packWizardQuery","packWizardService","RESULT","FAMILIES","titleLabel","actionLabel","showActionButton","PROFESSIONALS","DATETIME","SOCIAL_LOGIN","REGISTER","PAYMETHODS","CONFIRM","PAYMENT","goToNextStep","servicesGroups","slideActiveProfessionalIndex","updateSlideActiveProfessionalIndex","swiperContainer","nativeElement","swiper","slideTo","slideMainStepProfessional","popSlideProfessional","resetProfessionalWizardCheckedSingleGroup","servicesGroup$","valid","professionalSelected","slideActiveProfessionalIndexSubject","selectActive","setActive","paymethodActive","clinicName$","select","appDelegate$","keyboardIsShowing","isLoadingContent","ngAfterViewInit","initWizardConfig","error","updateShowSpinner","stepActive$","subscribe","step","headerCurrentStep","homeCompany","logoHeader","goBack","stepStack","getValue","currentStep","dismissModal","slideActiveIndex","popFamilyFolder","checkGoToPrevStep","goBackSlideProfessional","goToPrevStep","ionViewDidEnter","update","dismiss","dismissed","navigate","systemKeyURL","goToInitStep","initStep","initNextStep","goToStep","destroyCurrentStep","prevStep","undoNextStep","popStepStack","destroyFamilyStep","destroyProfessionalsStep","destroyDateTimeStep","destroySocialLoginStep","destroyRegisterStep","destroyConfirmStep","destroyPaymethodStep","destroyPaymentStep","destroyResultStep","nextStepId","addCurrentStepToStak","pushStepStack","nextStep","initFamilyStep","initProfessionalStep","initDatetimeStep","initSocialLoginStep","initRegisterStep","initConfirmStep","initPaymethodStep","initPaymentStep","initResultStep","toString","checkShowActionButton","getLabelActionButton","checkDisabledButtonAction","actionNextStep","familyNextStep","professionalsNextStep","dateTimeNextStep","socialLoginNextStep","registerNextStep","confirmNextStep","paymethodNextStep","paymentNextStep","resultNextStep","familyUndoNextStep","professionalUndoNextStep","datetimeUndoNextStep","socialLoginUndoNextStep","registerUndoNextStep","paymethodUndoNextStep","paymentUndoNextStep","resultUndoNextStep","disabledButtonAction$","familyActionButtonDisabled","professionalsActionButtonDisabled","datetimeActionButtonDisabled","confirmActionButtonDisabled","paymethodsActionButtonDisabled","labelButtonAction$","getActionLabelConfirmStep","showActionButton$","professionalsStepCheckShowActionButton","datetimeStepCheckShowActionButton","paymethodsStepCheckShowActionButton","resultStepCheckShowActionButton","slideOpts","speed","allowTouchMove","assign","setWizardSteps","appointmentWizardSteps","appointmentWizardSettings$","selectFamiliesDistinct","selectAll","packsWizard$","familyFolderUserAction$","familyFolderTree","familyFolderSlide","familyFolderSlideFiltered","serviceSearchBar","onChangeFamilySearchbar","searchBar","value","getAppointmentWizardSettings","stepInitial","initialSlide","initialize","noMoreServices$","parseInt","maxServices","onFamilyClicked","resetFamilySearchbar","clearInput","genericHeader","inputSearch","getServicesGroup","professionals","searchText","familiesFiltered","normalize","replace","includes","servicesFiltered","clinicName","onServiceClicked","serviceAndCheckedEvent","setServiceChecked","checkedEvent","onServiceToggle","toggleServiceChecked","onPackToggle","pack","serviceIDs","isChecked","joinCitation","toggleChecked","servicesChecked","countFamiliesAndServices","onProfessionalClickedSingleGroup","professionalServiceGroupSelected","setProfessionalWizardChecked","onProfessionalClickedMultipleGroup","onProfessionalToggle","toggleProfessionalWizardChecked","defaultTemplate","flowwwerTemplate","pushSlideProfessional","goBackProfessionalDefault","goBackProfessionalFlowwwer","professionalUndoNextStepDefault","professionalUndoNextStepFlowwwer","professionalsActionButtonDisabledDefault","professionalsActionButtonDisabledFlowwwer","professionalsStepCheckShowActionButtonDefault","professionalsStepCheckShowActionButtonFlowwwer","resetStore","configIsDisabledDate","times$","dateActive$","timeActive$","timeLoading$","selectLoading","getDatesDisabled","getTimesSingleGroup","clinicId","getTimesMultipleGroup","onTimeClicked","time","onTimeSelected","formatDateDisabled","dateString","splitDate","availability","dates","datesArray","datesDisabled","isDisabledDateCalendar","find","x","from","equals","tokenId","datetimeStepCheckShowActionButtonDefault","datetimeStepCheckShowActionButtonFlowwwer","templateDatetimeActionButtonDisabledDefault","templateDatetimeActionButtonDisabledFlowwwer","socialLoginListener","registerDefault","clientDataSocialLogin","socialLoginResponse$","unsubscribe","socialLogin","socialLoginSuccess","socialLoginFail","__awaiter","checkUserAndLoad","clientAdvisor","getReferrerData","goToMainTabWithoutLogin","clientData","clinicDetailRgpdDisable$","submitRegisterForm","registerFormComponent","registerForm","invalid","values","controls","control","markAsTouched","userEnableGeneralConditions","presentErrorToast","getLabel","userRegister","name","userName","surname1","nameSplit","userSurname1","surname2","userSurname2","phone","userPhone","email","userEmail","referrerCode","userReferrerCode","enableGeneralConditions","enableRgpd","RGPDDisable","userEnableRgpd","clientToken","hashCode","registerUser","otpModal","create","component","componentProps","present","data","onDidDismiss","action","NONE","removeStepFromStepStack","getPaymentWizardSettings","appDisabled","appSchedAndBuy","clinicAppSchedAndBuy","confirmAppointment","optionalPaymentWizard","actionSheet","mode","header","cssClass","buttons","text","role","handler","r","makeAppointmentSingleGroup","makeAppointmentMultipleGroup","getAppointments","getTreatments","paymethodsWizard$","onPaymethodClicked","paymethod","undefined","onPaymethodTogle","togglePaymethodChecked","createUrlPaymentByAppointment","templatePaymethodUndoNextStepDefault","templatePaymethodUndoNextStepFlowwwer","paymethodsStepCheckShowActionButtonDefault","paymethodsStepCheckShowActionButtonFlowwwer","templatepaymethodsActionButtonDisabledDefault","templatepaymethodsActionButtonDisabledFlowwwer","urlPaymentSafe$","selectUrlPaymentSafe","window","addEventListener","listenerEventsPayment","url_ok","run","removeEventListener","url_err","showAlertErrorPay","message","alert","resetUrlPayment","resultStepCheckShowActionButtonDefault","resultStepCheckShowActionButtonFlowwwer","ngOnDestroy","createAppointmentWizardDate","params","appointmentWizardDateFactory","DiaryDate","Availability","QueryEntity","AppointmentWizardDateStore","store","HttpClient","HttpParams","ApiService","appointmentWizardDateStore","http","apiService","add","appointmentWizardDate","remove","setAppointmentWizardDates","set","getDatesApi","systemKey","append","callApi","currentClinicId","servicesChekedArrayId","servicesCheked","join","toPromise","setAppointmentWizardDatesByApi","MonthlyAvailability","appointmentWizardDates","reset","EntityStore","StoreConfig","idKey","resettable","Query","AppointmentWizardSettingsStore","commonWizardService","familyWizardFactory","professionalWizardFactory","appointmentWizardSettingsStore","packsWizardService","updateFamilies","newFamilies","updateClinics","newClinics","clinics","updateProfessionals","newProfessionals","currentStepStack","cloneStepStack","pop","item","clearStepStack","getAppointmentWizardSettingsApi","makeAppointmentSinlgeGroupApi","professional","cabinetId","makeAppointmentMultipleGroupApi","appointmentWizardSettingsData","servicesMultiSelect","ServicesMultiSelect","professionalsEnabled","ServiceProfessionalsEnabled","setServicesWizardByApi","Services","setFamiliesWizardByApi","Families","setProfessionalsByApi","Professionals","setPacksByApi","PackList","familiesWizardEntities","familyWizard","professionalsEntities","professionalChecked","appointmentData","AppID","JsonTimeActive","CompositeApp","ClinicID","TotalWait","totalWait","ServicesGroups","JSON","stringify","Store","createInitialState","FamilyId","FamilySourceID","FamilySourceId","FamilyFolderID","FamilyFolderSourceID","FamilyName","ProfessionalId","ProfessionalName","clinic","ProfessionalClinicID","disabled","createAppointmentWizardTime","appointmentWizardTimeFactory","CabineID","AppointmentWizardTimeStore","appointmentWizardTimeStore","appointmentWizardTime","setAppointmentWizardTimes","times","getTimesSingleGroupApi","getTimesMultipleGroupApi","setAppointmentWizardTimesByApi","DiaryOptions","ids","ServicesProfessionalID","ServicesClinicID","servicesGroupJson","appointmentWizardTimes","appointmentWizardTimeId","AppointmentStore","HeaderIconStore","HeaderIconQuery","packWizardFactory","param","Description","ZoneList","ProductJoinCitation","PackWizardStore","packsWizardStore","packs","showServices","flatMap","hiddeServices","indexOf","hiddeService","PaymentWizardSettingsStore","DomSanitizer","sanitizer","productList","url","bypassSecurityTrustResourceUrl","ProductWizardQuery","TreatmentWizardSettingsQuery","paymentWizardSettingsStore","productWizardQuery","treatmentWizarSettingsQuery","seturlPayment","newUrlPayment","urlPayment","getPaymentWizardSettingsApi","paymentWizardSettingsData","CheckOptions","ClinicAppSchedAndBuy","ProductList","setPaymethodsWizardByApi","PayMethods","createUrlPaymentByTreatment","locale","productsWithUnitsId","productsWithUnitsUnits","unitsCart","shippingChoiceUser","cancelShippingUserChecked","confirmShippingUserChecked","shippingAddress","shippingEnabled","encodeURIComponent","PAYMETHOD_CREDIT_CARD_ICON","PAYMETHOD_CREDIT_CARD_ID","PAYMETHOD_POINTS_ICON","createPaymethodWizard","paymethodWizardFactory","icon","PayMethodID","PayMethodName","logo","PayMethodLogo","PayMethodURL","PayMethodURL_OK","PayMethodURL_ERR","PaymethodWizardStore","paymethodWizardStore","paymethodWizard","setPaymethodsWizard","paymethodsWizard","setPaymethodChecked","paymethodWizardId","resetPaymethodChecked","paymethodsWizardEntities","paymethodId","ServicesGroupStore","QueryConfig","Order","sortBy","sortByOrder","ASC","servicesGroupStore","setServicesGroups","servicesGroupFactory","order","professionalsWizard","ServicesProfessionals","currentProfessionalData","newProfessional","UserDropdownsDisabled","ServicesClinicName","descriptions","ServicesDescription","equipmentIds","ServicesEquipmentID","getServicesGroupApi","servicesGroupData","setServicesGroupsByApi","groups","clinicWizardList","group","currentGroup","clinicWizard","servicesGroupId","currentServiceGroupStorage","SocialLoginStore","TreatmentWizardSettingsStore","WizardStepStore","wizardStepStore","wizardStep","steps","stepId"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}