{"version":3,"file":"main.js","mappings":"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","sources":["./Guards/auth-permissions-ecommerce.guard.ts","./src/app-admin/_appCommon/base/AppInterfaceAndBaseClasses.ts","./src/app-admin/_appCommon/util/ArrayExtensions.ts","./src/app-client/_appCommon/base/ApiServiceBase.ts","./src/app-client/_appCommon/base/AppClientContext.ts","./src/app-client/_appCommon/base/AppInterfaceAndBaseClasses.ts","./src/app-client/_appCommon/base/Case.ts","./src/app-client/_appCommon/base/EntityConfig.ts","./src/app-client/_appCommon/base/EntityDataServiceBase.ts","./src/app-client/_appCommon/base/Setup.ts","./src/app-client/_appCommon/base/UrlQueryDef.ts","./src/app-client/_appCommon/base/User.ts","./src/app-client/_appCommon/util/ArrayExtensions.ts","./src/app-client/_appCommon/util/Guard.ts","./src/app-client/_appCommon/util/StringTools.ts","./src/app-client/_appCommon/util/Tools.ts","./src/app-client/_dataservices/ClinicDataService.ts","./src/app-client/_dataservices/CustomerDataService.ts","./src/app-client/_dataservices/IncompleteUsersDataService.ts","./src/app/_appCommon/animations/animations.ts","./src/app/_appCommon/base/Alert.ts","./src/app/_appCommon/base/ApiServiceBase.ts","./src/app/_appCommon/base/AppClientContext.ts","./src/app/_appCommon/base/AppInterfaceAndBaseClasses.ts","./src/app/_appCommon/base/BroadcastManager.ts","./src/app/_appCommon/base/Constants.ts","./src/app/_appCommon/base/ControllerBase.ts","./src/app/_appCommon/base/EntityConfig.ts","./src/app/_appCommon/base/EntityDataServiceBase.ts","./src/app/_appCommon/base/UrlQueryDef.ts","./src/app/_appCommon/base/User.ts","./src/app/_appCommon/components/accordion/accordion.component.ts","./src/app/_appCommon/components/accordion/accordion.component.html","./src/app/_appCommon/components/accordion/panel/panel.component.ts","./src/app/_appCommon/components/accordion/panel/panel.component.html","./src/app/_appCommon/components/background/background.component.ts","./src/app/_appCommon/components/background/faq-background.component.ts","./src/app/_appCommon/components/file-selector/file-selector.component.ts","./src/app/_appCommon/components/file-selector/file-selector.component.html","./src/app/_appCommon/components/slider-compare/slider-compare.component.ts","./src/app/_appCommon/components/slider-compare/slider-compare.component.html","./src/app/_appCommon/components/slider/before-after-slider.component.ts","./src/app/_appCommon/components/slider/before-after-slider.component.html","./src/app/_appCommon/components/whatsapp-float-icon/whatsapp-float-icon.component.ts","./src/app/_appCommon/components/whatsapp-float-icon/whatsapp-float-icon.component.html","./src/app/_appCommon/interceptors/authentication.interceptor.ts","./src/app/_appCommon/pipes/safe.pipe .ts","./src/app/_appCommon/pipes/translate.pipe.ts","./src/app/_appCommon/services/translate.service.ts","./src/app/_appCommon/share.module.ts","./src/app/_appCommon/util/ArrayExtensions.ts","./src/app/_appCommon/util/Guard.ts","./src/app/_appCommon/util/StringTools.ts","./src/app/_appCommon/util/Tools.ts","./src/app/_dataservices/UserDataRequestDataService.ts","./src/app/_dataservices/security/AuthenticationService.ts","./src/app/_dataservices/security/CustomerAccessDataService.ts","./src/app/_dataservices/security/SystemServicesDataService.ts","./src/app/_directives/baseInputValidatorDirective.ts","./src/app/_directives/calendar-validation.directive.ts","./src/app/_directives/drag-and-drop-files.directive.ts","./src/app/_directives/only-numbers.directive.ts","./src/app/_directives/phone-number-validator.directive.ts","./src/app/_directives/scroll-animation.directive.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/home/home.component.ts","./src/app/home/home.module.ts","./src/app/layouts/main/main.component.ts","./src/app/layouts/main/main.component.html","./src/app/layouts/material/app.material.module.ts","./src/app/layouts/navbar/navbar.component.ts","./src/app/layouts/navbar/navbar.component.html","./src/app/layouts/pages/faq/faq.component.ts","./src/app/layouts/pages/faq/faq.component.html","./src/app/layouts/pages/found-orthodontist/found-orthodontist.component.ts","./src/app/layouts/pages/found-orthodontist/found-orthodontist.component.html","./src/app/layouts/pages/im-orthodontist/im-orthodontist.component.ts","./src/app/layouts/pages/im-orthodontist/im-orthodontist.component.html","./src/app/layouts/pages/image/image.component.ts","./src/app/layouts/pages/image/image.component.html","./src/app/layouts/pages/index/index.component.ts","./src/app/layouts/pages/index/index.component.html","./src/app/layouts/pages/privacy-notices/privacy-notices.component.ts","./src/app/layouts/pages/privacy-notices/privacy-notices.component.html","./src/app/layouts/pages/reset-password/reset-password.component.ts","./src/app/layouts/pages/reset-password/reset-password.component.html","./src/app/user-access/login/login.component.ts","./src/app/user-access/login/login.component.html","./src/app/user-access/onboarding/dataCRUD/onboardingCRUD.component.ts","./src/app/user-access/onboarding/dataCRUD/onboardingCRUD.component.html","./src/app/user-access/onboarding/emailPasswordReset/emailPasswordReset.component.ts","./src/app/user-access/onboarding/emailPasswordReset/emailPasswordReset.component.html","./src/app/user-access/onboarding/passwordReset/passwordReset.component.ts","./src/app/user-access/onboarding/passwordReset/passwordReset.component.html","./src/app/user-access/onboarding/user-onboarding.component.ts","./src/app/user-access/onboarding/user-onboarding.component.html","./src/app/user-access/register/register.component.ts","./src/app/user-access/register/register.component.html","./src/app/user-access/user-access.component.ts","./src/app/user-access/user-access.component.html","./src/app/user-access/user-access.module.ts","./src/environments/environment.ts","./src/main.ts","./src/shared/app.module.ts","./src/shared/components/custom-input-number/custom-input-number.component.ts","./src/shared/components/custom-input-number/custom-input-number.component.html","./src/shared/components/dialog/dialog.component.ts","./src/shared/components/drag-and-drop/drag-and-drop.component.ts","./src/shared/components/drag-and-drop/drag-and-drop.component.html","./src/shared/components/footer/footer.component.ts","./src/shared/components/footer/footer.component.html","./src/shared/components/integer-spinner/integer-spinner.component.ts","./src/shared/components/integer-spinner/integer-spinner.component.html","./src/shared/components/loading-general/loading-general.component.ts","./src/shared/components/loading-general/loading-general.module.ts","./src/shared/components/loading/loading.component.ts","./src/shared/components/loading/loading.component.html","./src/shared/components/pieces-container/pieces-container.component.ts","./src/shared/components/pieces-container/pieces-container.component.html","./src/shared/constants.ts","./src/shared/directives/debounce-click.directive.ts","./src/shared/directives/drag-and-drop-files.directive.ts","./src/shared/directives/equal-validator.directive.ts","./src/shared/directives/inner-links.directive.ts","./src/shared/directives/piece-checkbox.directive.ts","./src/shared/interceptors/loading.interceptor.ts","./src/shared/services/loading.service.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AppClientContext } from 'src/app-client/_appCommon/base/AppClientContext';\r\nimport { ECOMMERCE_USER_TOKEN } from 'src/app/_appCommon/base/Constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthPermissionsGuardEcommerce implements CanActivate {\r\n constructor(private router: Router) {\r\n\r\n }\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean | UrlTree {\r\n return this.customerIsLogged();\r\n }\r\n\r\nprivate getUserLoginFromCache(): boolean\r\n{\r\n let user = JSON.parse(localStorage.getItem('currentUser'));\r\n return this.setSecurityToken(user);\r\n}\r\n\r\nprivate setSecurityToken(user: any): boolean\r\n{\r\n if (user && user.cacheToken)\r\n {\r\n // Remove Token\r\n AppClientContext.Instance.headerValues.delete(ECOMMERCE_USER_TOKEN);\r\n\r\n // Append Token\r\n AppClientContext.Instance.headerValues.set(ECOMMERCE_USER_TOKEN, user.cacheToken);\r\n\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\n private customerIsLogged(): boolean\r\n {\r\n const isUserLogged = AppClientContext.Instance.user;\r\n if(isUserLogged || this.getUserLoginFromCache())\r\n {\r\n return true;\r\n }\r\n this.router.navigate(['']);\r\n return false;\r\n }\r\n \r\n}\r\n","import { SafeUrl } from \"@angular/platform-browser\";\r\nimport \"./../util/ArrayExtensions\";\r\n\r\n// ********************************************************************************\r\n// #region Classes\r\n// ********************************************************************************\r\n\r\nexport interface IEntity\r\n{\r\n id: number;\r\n}\r\n\r\n\r\nexport class LocalStorage implements Storage\r\n{\r\n [name: string]: any;\r\n readonly length: number;\r\n clear(): void { }\r\n getItem(key: string): string | null { return undefined; }\r\n key(index: number): string | null { return undefined; }\r\n removeItem(key: string): void { }\r\n setItem(key: string, value: string): void { }\r\n}\r\n\r\nexport class UserDto\r\n{\r\n\r\n}\r\n\r\nexport class LoginDto\r\n{\r\n id: string = \"\";\r\n password: string = \"\";\r\n cartId: string = \"\";\r\n language: string = \"\";\r\n}\r\n\r\nexport interface FileInfo\r\n{\r\n name: string,\r\n url: SafeUrl\r\n}\r\n\r\nexport class UpdateFileDto\r\n{\r\n id: number = 0;\r\n fileType: FileType = 0;\r\n fileBlobId: number = 0;\r\n}\r\n\r\nexport class RefreshTokenDto\r\n{\r\n language: string = \"\";\r\n refreshToken: string = \"\";\r\n}\r\n\r\nexport class ValidateSessionDto\r\n{\r\n language: string = \"\";\r\n token: string = \"\";\r\n}\r\n\r\nexport class DynamicPipeType\r\n{\r\n //NOTE: Must have same methods name that is inside \"dynamic.pipe.ts\"\r\n public static OrderStatus = \"orderStatus\";\r\n public static DateTime = \"dateTime\";\r\n public static Date = \"date\";\r\n public static UTCDateTime = \"UTCDateTime\";\r\n public static Currency = \"currency\";\r\n public static ToUpperCase = \"toUpper\";\r\n public static OrderPayment = \"orderPayment\";\r\n}\r\n\r\nexport class Product\r\n{\r\n id: number;\r\n name: string;\r\n description: string;\r\n isActive: boolean;\r\n isDeleted: boolean;\r\n productType: ProductType;\r\n alignersQuantity: number;\r\n quantityStock?: number;\r\n isCase: boolean;\r\n hasDentalMonitoring: boolean;\r\n hasUnlimitedAligners: boolean;\r\n category: Category;\r\n additionalServices?: ProductAdditionalServices;\r\n specList: ProductSpec[];\r\n principalImage?: string;\r\n images: ProductImage[];\r\n priceList: ProductPriceList[];\r\n itemPrices: ItemPrices;\r\n baseTax: number;\r\n basePriceProduct: number;\r\n basePriceExtraAligner: number;\r\n basePriceDentalMonitoring: number;\r\n basePriceComplexCase:number;\r\n specialProductPrice?:number;\r\n specialProductPriceComments?:string;\r\n expirationTime: number;\r\n setupIncluded: boolean;\r\n sort: number;\r\n}\r\nexport class ItemPrices\r\n{\r\n priceExtraAligner?: number;\r\n subtotal: number;\r\n price: number;\r\n priceExtraDentalMonitoring?: number;\r\n priceComplexCase?: number;\r\n tax?: number;\r\n totalTax?: number;\r\n shoppingDiscount?: number;\r\n priceWithDiscount?: number;\r\n}\r\nexport class Category\r\n{\r\n id: number;\r\n parentId: number;\r\n name: string;\r\n description: string;\r\n subcategories: Category[];\r\n}\r\n\r\nexport class ProductImage\r\n{\r\n id: number;\r\n order: number;\r\n productId: number;\r\n url: string;\r\n}\r\n\r\nexport class ServiceImage\r\n{\r\n order?: number;\r\n url: string;\r\n}\r\n\r\nexport class ProductSpec\r\n{\r\n id: number;\r\n name: string;\r\n value: string;\r\n productId: number;\r\n}\r\n\r\nexport class ProductPriceList\r\n{\r\n id: number;\r\n priceProduct: number;\r\n priceExtraAligner: number;\r\n priceExtraDentalMonitoring: number;\r\n priceComplexCase: number;\r\n tax: number;\r\n isDeleted: boolean;\r\n productId: number;\r\n customerTypeId: number;\r\n}\r\n\r\nexport class ProductAdditionalServices\r\n{\r\n addDentalMonitoring: boolean;\r\n addIsComplexCase: boolean;\r\n hasUnlimitedAligners?: boolean;\r\n extraAlignersQuantity: number;\r\n}\r\n\r\nexport class CaseStage\r\n{\r\n stageNumber: number;\r\n upperAligners: number;\r\n lowerAligners: number;\r\n comments: string;\r\n frecuencyDays: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n isManufactured: boolean;\r\n isPendingToReviewAlignersQuantity?: boolean;\r\n totalAlignersQuantity: number;\r\n caseId: number;\r\n setupId: number;\r\n statusId?: number;\r\n isDeleted: boolean;\r\n}\r\n\r\nexport class Status\r\n{\r\n id: number;\r\n name: string;\r\n backofficeDescription: string;\r\n ecommerceDescription: string;\r\n caseDescription: string;\r\n maxDays: number;\r\n colorOnTime: string;\r\n colorOffTime: string;\r\n order: number;\r\n isDeleted: boolean;\r\n isFinal: boolean;\r\n isCancelable: boolean;\r\n requiresSetupPayment: boolean;\r\n requiresSufficientAlignersAvailable: boolean;\r\n isSpecial: boolean;\r\n escapeStatusId: number;\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// ********************************************************************************\r\n// #region Interfaces\r\n// ********************************************************************************\r\n\r\nexport interface IEntity\r\n{\r\n id: number;\r\n}\r\n\r\nexport interface IBaseRequest\r\n{\r\n token: string;\r\n}\r\n\r\nexport interface ICustomerLevel\r\n{\r\n name: string;\r\n description: string;\r\n code: string;\r\n minNumberCases: number;\r\n maxNumberCases: number;\r\n shoppingDiscount: number;\r\n customerTypeId: number;\r\n}\r\n\r\nexport interface IRolePermission\r\n{\r\n id?: number;\r\n roleId: number;\r\n permissionId: number;\r\n}\r\n\r\nexport interface IPermission\r\n{\r\n code: string;\r\n name: string;\r\n description: string;\r\n order: number;\r\n isActive: boolean;\r\n isDeleted: boolean;\r\n}\r\n//Add base interfaces\r\n\r\n\r\n\r\n// #endregion Interfaces\r\n\r\n//Currency Type\r\nexport enum CurrencyTypeInt\r\n{\r\n MXN = 0,\r\n USD = 1,\r\n CAD = 2,\r\n EUR = 3,\r\n GBP = 4,\r\n JPY = 5,\r\n}\r\n\r\nexport enum ProductType\r\n{\r\n Plan = 1,\r\n Setup = 2,\r\n Service = 3,\r\n Accessory = 4,\r\n}\r\n\r\n//check ISO 4217 before add new one\r\nexport const CurrencyTypeCode = new Map([\r\n [CurrencyTypeInt.MXN, 'MXN'],\r\n [CurrencyTypeInt.USD, 'USD$'],\r\n [CurrencyTypeInt.CAD, 'CAD'],\r\n [CurrencyTypeInt.EUR, 'EUR'],\r\n [CurrencyTypeInt.GBP, 'GBP'],\r\n [CurrencyTypeInt.JPY, 'JPY'],\r\n]);\r\n\r\nexport enum FileWeirExtension\r\n{\r\n STL = '.stl',\r\n}\r\n\r\nexport enum FileApplicationType\r\n{\r\n PDF = 'application/pdf',\r\n STL = 'application/octet-stream',\r\n TXT = 'application/plain',\r\n ZIP7 = 'application/x-7z-compressed',\r\n ZIP = 'application/zip',\r\n RAR = 'application/x-rar-compressed',\r\n WORD = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n POWERPOINT = 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n}\r\n\r\nexport enum FileExtension//Agregar nuevos formatos de archivo\r\n{\r\n PDF = '.pdf',\r\n TXT = '.txt',\r\n ZIP = '.zip',\r\n ZIP7 = '.7z',\r\n RAR = '.rar',\r\n WORD = '.docx',//\r\n POWERPOINT = '.pptx',//\r\n EXCEL = '.xlsx',//\r\n}\r\n\r\nexport enum ImageExtension\r\n{\r\n JPG = '.jpg',\r\n JPEG = '.jpg',\r\n PNG = '.png',\r\n GIF = '.gif',\r\n TIF = '.tif',\r\n BMP = '.bmp'\r\n}\r\n\r\nexport enum ImageType\r\n{\r\n JPG = 'image/jpg',\r\n JPEG = 'image/jpeg',\r\n PNG = 'image/png',\r\n GIF = 'image/gif',\r\n TIF = 'image/tiff',\r\n BMP = 'image/bmp'\r\n}\r\n\r\nexport enum FileType\r\n{\r\n LateralExtraoralId = 0,\r\n FrontalExtraoralId = 1,\r\n SmileExtraoralId = 2,\r\n UpperOcclusalId = 3,\r\n LowerOcclusalId = 4,\r\n LeftLateralIntraoralId = 5,\r\n FrontalIntraoralId = 6,\r\n RightLateralIntraoralId = 7,\r\n CompositeId = 8,\r\n PanoramicRadiographyId = 9,\r\n LateralRadiographyId = 10,\r\n AdditionalRadiographyId = 11,\r\n BiteSTLId = 12,\r\n UpperSTLId = 13,\r\n LowerSTLId = 14,\r\n AdditionalCaseFileId = 15,\r\n TaxInformation = 16,\r\n RightsAgreement = 17,\r\n PromiseLetter = 18,\r\n FiscalDocument = 19\r\n}\r\n\r\nexport enum OrderStatus\r\n{\r\n Pending = 0,\r\n Approved = 1,\r\n Canceled = 2,\r\n}\r\n\r\nexport enum PorCobrarOrderSyncStatus\r\n{\r\n Pending = 0,\r\n Sent = 1,\r\n Canceled = 2,\r\n}\r\n\r\nexport enum CustomerStatus\r\n{\r\n Inactivo=0,\r\n Activo=1,\r\n Pending=2\r\n}\r\n\r\nexport enum OrderPaymentStatus {\r\n InProcess = 0,\r\n Completed = 1,\r\n}\r\n\r\nexport enum PaymentTypeStatus\r\n{\r\n OpenPay = 1,\r\n PayNet = 2,\r\n SPEI = 3,\r\n Paypal = 4,\r\n InPerson = 5,\r\n PayLink = 6,\r\n Courtesy = 7,\r\n CardPay = 8\r\n}\r\n\r\nexport enum ServiceType\r\n{\r\n ComplexCase = 0,\r\n DentalMonitoring = 1,\r\n AditionalAligners = 2,\r\n Upgrade = 3\r\n}\r\n\r\nexport const ProductTypeLabel = new Map([\r\n [ProductType.Plan, \"Plan\"],\r\n [ProductType.Setup, \"Setup\"],\r\n [ProductType.Service, \"Servicio\"],\r\n [ProductType.Accessory, \"Accesorio\"],\r\n]);\r\n\r\nexport const FileTypeLabel = new Map([\r\n [FileType.LateralExtraoralId, \"Extraoral Lateral\"],\r\n [FileType.FrontalExtraoralId, \"Extraoral Frontal\"],\r\n [FileType.SmileExtraoralId, \"Extraoral Sonrisa\"],\r\n [FileType.UpperOcclusalId, \"Oclusal Superior\"],\r\n [FileType.LowerOcclusalId, \"Oclusal Inferior\"],\r\n [FileType.LeftLateralIntraoralId, \"Intraoral Lateral Izquierda\"],\r\n [FileType.FrontalIntraoralId, \"Intraoral Frontal\"],\r\n [FileType.RightLateralIntraoralId, \"Intraoral Lateral Derecha\"],\r\n [FileType.CompositeId, \"Composite\"],\r\n [FileType.PanoramicRadiographyId, \"Radiografía Panorámica\"],\r\n [FileType.LateralRadiographyId, \"Radiografía Lateral\"],\r\n [FileType.AdditionalRadiographyId, \"Radiografía Adicional\"],\r\n [FileType.BiteSTLId, \"Mordida STL\"],\r\n [FileType.UpperSTLId, \"Superior STL\"],\r\n [FileType.LowerSTLId, \"Inferior STL\"],\r\n [FileType.AdditionalCaseFileId, \"Nuevo archivo adicional\"],\r\n [FileType.TaxInformation, \"Constancia Fiscal\"],\r\n [FileType.RightsAgreement, \"Cesión de derechos\"],\r\n [FileType.PromiseLetter, \"Carta compromiso\"],\r\n [FileType.FiscalDocument, \"Constancia de situación fiscal\"]\r\n]);\r\n\r\nexport const FileTypeName = new Map([\r\n [FileType.LateralExtraoralId, \"LateralExtraoral\"],\r\n [FileType.FrontalExtraoralId, \"FrontalExtraoral\"],\r\n [FileType.SmileExtraoralId, \"SmileExtraoral\"],\r\n [FileType.UpperOcclusalId, \"UpperOcclusal\"],\r\n [FileType.LowerOcclusalId, \"LowerOcclusal\"],\r\n [FileType.LeftLateralIntraoralId, \"LeftLateralIntraoral\"],\r\n [FileType.FrontalIntraoralId, \"FrontalIntraoral\"],\r\n [FileType.RightLateralIntraoralId, \"RightLateralIntraoral\"],\r\n [FileType.CompositeId, \"Composite\"],\r\n [FileType.PanoramicRadiographyId, \"PanoramicRadiography\"],\r\n [FileType.LateralRadiographyId, \"LateralRadiography\"],\r\n [FileType.AdditionalRadiographyId, \"AditionalRadiography\"],\r\n [FileType.BiteSTLId, \"BiteSTL\"],\r\n [FileType.UpperSTLId, \"UpperSTL\"],\r\n [FileType.LowerSTLId, \"LowerSTL\"],\r\n [FileType.AdditionalCaseFileId, \"AdditionalFile0\"],\r\n [FileType.TaxInformation, \"TaxInformation\"],\r\n [FileType.RightsAgreement, \"RightsAgreement\"],\r\n [FileType.PromiseLetter, \"PromiseLetter\"],\r\n [FileType.FiscalDocument, \"FiscalDocument\"]\r\n]);\r\n\r\nexport const FileTypeNamePath = new Map([\r\n [FileType.LateralExtraoralId, \"lateralExtraoralPath\"],\r\n [FileType.FrontalExtraoralId, \"frontalExtraoralPath\"],\r\n [FileType.SmileExtraoralId, \"smileExtraoralPath\"],\r\n [FileType.UpperOcclusalId, \"upperOcclusalPath\"],\r\n [FileType.LowerOcclusalId, \"lowerOcclusalPath\"],\r\n [FileType.LeftLateralIntraoralId, \"leftLateralIntraoralPath\"],\r\n [FileType.FrontalIntraoralId, \"frontalIntraoralPath\"],\r\n [FileType.RightLateralIntraoralId, \"rightLateralIntraoralPath\"],\r\n [FileType.CompositeId, \"compositePath\"],\r\n [FileType.PanoramicRadiographyId, \"panoramicRadiographyPath\"],\r\n [FileType.LateralRadiographyId, \"lateralRadiographyPath\"],\r\n [FileType.AdditionalRadiographyId, \"additionalRadiographyPath\"],\r\n [FileType.BiteSTLId, \"biteSTLPath\"],\r\n [FileType.UpperSTLId, \"upperSTLPath\"],\r\n [FileType.LowerSTLId, \"lowerSTLPath\"],\r\n]);\r\n\r\nexport const ProductTypeArray: any[] = [\r\n { key: ProductType.Plan, value: ProductTypeLabel.get(ProductType.Plan) },\r\n { key: ProductType.Setup, value: ProductTypeLabel.get(ProductType.Setup) },\r\n { key: ProductType.Accessory, value: ProductTypeLabel.get(ProductType.Accessory) },\r\n];\r\n\r\nexport const FileCompositeArray: any[] = [\r\n {\r\n type: FileType.LateralExtraoralId,\r\n label: FileTypeLabel.get(FileType.LateralExtraoralId),\r\n name: FileTypeName.get(FileType.LateralExtraoralId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.FrontalExtraoralId,\r\n label: FileTypeLabel.get(FileType.FrontalExtraoralId),\r\n name: FileTypeName.get(FileType.FrontalExtraoralId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.SmileExtraoralId,\r\n label: FileTypeLabel.get(FileType.SmileExtraoralId),\r\n name: FileTypeName.get(FileType.SmileExtraoralId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.UpperOcclusalId,\r\n label: FileTypeLabel.get(FileType.UpperOcclusalId),\r\n name: FileTypeName.get(FileType.UpperOcclusalId),\r\n fileInfo: null,\r\n isRequired: true\r\n },\r\n {\r\n type: FileType.CompositeId,\r\n label: FileTypeLabel.get(FileType.CompositeId),\r\n name: FileTypeName.get(FileType.CompositeId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.LowerOcclusalId,\r\n label: FileTypeLabel.get(FileType.LowerOcclusalId),\r\n name: FileTypeName.get(FileType.LowerOcclusalId),\r\n fileInfo: null,\r\n isRequired: true\r\n },\r\n {\r\n type: FileType.LeftLateralIntraoralId,\r\n label: FileTypeLabel.get(FileType.LeftLateralIntraoralId),\r\n name: FileTypeName.get(FileType.LeftLateralIntraoralId),\r\n fileInfo: null,\r\n isRequired: true\r\n },\r\n {\r\n type: FileType.FrontalIntraoralId,\r\n label: FileTypeLabel.get(FileType.FrontalIntraoralId),\r\n name: FileTypeName.get(FileType.FrontalIntraoralId),\r\n fileInfo: null,\r\n isRequired: true\r\n },\r\n {\r\n type: FileType.RightLateralIntraoralId,\r\n label: FileTypeLabel.get(FileType.RightLateralIntraoralId),\r\n name: FileTypeName.get(FileType.RightLateralIntraoralId),\r\n fileInfo: null,\r\n isRequired: true\r\n },\r\n];\r\n\r\nexport const FileSingleCompositeArray: any[] = [\r\n {\r\n type: FileType.CompositeId,\r\n label: FileTypeLabel.get(FileType.CompositeId),\r\n name: FileTypeName.get(FileType.CompositeId),\r\n fileInfo: null\r\n },\r\n];\r\n\r\nexport const FileRadiographyArray: any[] = [\r\n {\r\n type: FileType.LateralRadiographyId,\r\n label: FileTypeLabel.get(FileType.LateralRadiographyId),\r\n name: FileTypeName.get(FileType.LateralRadiographyId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.PanoramicRadiographyId,\r\n label: FileTypeLabel.get(FileType.PanoramicRadiographyId),\r\n name: FileTypeName.get(FileType.PanoramicRadiographyId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.AdditionalRadiographyId,\r\n label: FileTypeLabel.get(FileType.AdditionalRadiographyId),\r\n name: FileTypeName.get(FileType.AdditionalRadiographyId),\r\n fileInfo: null\r\n },\r\n];\r\n\r\nexport const FileSTLArray: any[] = [\r\n {\r\n type: FileType.LowerSTLId,\r\n label: FileTypeLabel.get(FileType.LowerSTLId),\r\n name: FileTypeName.get(FileType.LowerSTLId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.UpperSTLId,\r\n label: FileTypeLabel.get(FileType.UpperSTLId),\r\n name: FileTypeName.get(FileType.UpperSTLId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.BiteSTLId,\r\n label: FileTypeLabel.get(FileType.BiteSTLId),\r\n name: FileTypeName.get(FileType.BiteSTLId),\r\n fileInfo: null\r\n },\r\n];\r\n\r\nexport const FileAdditionalArray =\r\n{\r\n Id: 0,\r\n type: FileType.AdditionalCaseFileId,\r\n label: FileTypeLabel.get(FileType.AdditionalCaseFileId),\r\n name: FileTypeName.get(FileType.AdditionalCaseFileId),\r\n fileInfo: null\r\n};\r\n\r\nexport const AdditionalCustomerFilesArray: any[] = [\r\n {\r\n type: FileType.RightsAgreement,\r\n label: FileTypeLabel.get(FileType.RightsAgreement),\r\n name: FileTypeName.get(FileType.RightsAgreement),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.PromiseLetter,\r\n label: FileTypeLabel.get(FileType.PromiseLetter),\r\n name: FileTypeName.get(FileType.PromiseLetter),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.FiscalDocument,\r\n label: FileTypeLabel.get(FileType.FiscalDocument),\r\n name: FileTypeName.get(FileType.FiscalDocument),\r\n fileInfo: null\r\n }\r\n];\r\n\r\nexport const OrderStatusLabel = new Map([\r\n [OrderStatus.Pending, \"Recibido\"],\r\n [OrderStatus.Approved, \"Aceptado\"],\r\n [OrderStatus.Canceled, \"Cancelado\"],\r\n]);\r\n\r\nexport const CustomerStatusLabel = new Map([\r\n [CustomerStatus.Inactivo, \"Inactivo\"],\r\n [CustomerStatus.Activo, \"Activo\"],\r\n [CustomerStatus.Pending, \"Pendiente\"],\r\n]);\r\n\r\nexport const OrderPaymentStatusLabel = new Map([\r\n [OrderPaymentStatus.InProcess, \"En Proceso\"],\r\n [OrderPaymentStatus.Completed, \"Completado\"],\r\n]);\r\n\r\nexport const OrderPaymentTypeStatusLabel = new Map([\r\n [PaymentTypeStatus.OpenPay, \"OpenPay\"],\r\n [PaymentTypeStatus.PayNet, \"Paynet\"],\r\n [PaymentTypeStatus.SPEI, \"SPEI\"],\r\n [PaymentTypeStatus.Paypal, \"Paypal\"],\r\n [PaymentTypeStatus.InPerson, \"Pago presencial\"],\r\n [PaymentTypeStatus.PayLink, \"Link de pago\"],\r\n [PaymentTypeStatus.Courtesy, \"Cortesía\"],\r\n [PaymentTypeStatus.CardPay, \"Pago con terminal\"]\r\n]);\r\n\r\nexport const OrderStatusArray: any[] = [\r\n { value: \"\", name: \"Todos los estatus\" },\r\n { value: OrderStatus.Pending, name: OrderStatusLabel.get(OrderStatus.Pending) },\r\n { value: OrderStatus.Approved, name: OrderStatusLabel.get(OrderStatus.Approved) },\r\n { value: OrderStatus.Canceled, name: OrderStatusLabel.get(OrderStatus.Canceled) },\r\n];\r\n\r\nexport const CustomerStatusArray: any[] = [\r\n { value: \"\", name: \"Todos los estatus\" },\r\n { value: CustomerStatus.Inactivo, name: CustomerStatusLabel.get(CustomerStatus.Inactivo) },\r\n { value: CustomerStatus.Activo, name: CustomerStatusLabel.get(CustomerStatus.Activo) },\r\n { value: CustomerStatus.Pending, name: CustomerStatusLabel.get(CustomerStatus.Pending) },\r\n];\r\n\r\nexport const OrderPaymentStatusArray: any[] = [\r\n { value: \"\", name: \"Todos las formas de pago\" },\r\n { value: OrderPaymentStatus.InProcess, name: OrderPaymentStatusLabel.get(OrderPaymentStatus.InProcess) },\r\n { value: OrderPaymentStatus.Completed, name: OrderPaymentStatusLabel.get(OrderPaymentStatus.Completed) },\r\n];\r\n\r\nexport const OrderPaymentTypeStatusArray: any[] = [\r\n { value: PaymentTypeStatus.OpenPay, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.OpenPay) },\r\n { value: PaymentTypeStatus.PayNet, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.PayNet) },\r\n { value: PaymentTypeStatus.SPEI, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.SPEI) },\r\n { value: PaymentTypeStatus.InPerson, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.InPerson) },\r\n { value: PaymentTypeStatus.PayLink, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.PayLink) },\r\n { value: PaymentTypeStatus.Courtesy, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.Courtesy) },\r\n { value: PaymentTypeStatus.CardPay, name: OrderPaymentTypeStatusLabel.get(PaymentTypeStatus.CardPay) }\r\n];\r\n\r\nexport const PorCobrarOrderSyncStatusLabel = new Map([\r\n [PorCobrarOrderSyncStatus.Pending, \"Pendiente\"],\r\n [PorCobrarOrderSyncStatus.Sent, \"Enviada\"],\r\n [PorCobrarOrderSyncStatus.Canceled, \"Cancelada\"],\r\n]);\r\n\r\n//Product\r\n\r\nexport enum FileTypeProduct {\r\n principal = 0,\r\n secundaria = 1,\r\n terciaria = 2,\r\n}\r\nexport const FileTypeProductLabel = new Map([\r\n [FileTypeProduct.principal, \"Fotografí­a Principal\"],\r\n [FileTypeProduct.secundaria, \"Fotografí­a Secundaria\"],\r\n [FileTypeProduct.terciaria, \"Fotografí­a Terciaria\"],\r\n]);\r\nexport const FileTypeProductName = new Map([\r\n [FileTypeProduct.principal, \"Principal\"],\r\n [FileTypeProduct.secundaria, \"Secundaria\"],\r\n [FileTypeProduct.terciaria, \"Terciaria\"],\r\n]);\r\nexport const FileTypeProductNamePath = new Map([\r\n [FileTypeProduct.principal, \"PrincipalPath\"],\r\n [FileTypeProduct.secundaria, \"SecundariaPath\"],\r\n [FileTypeProduct.terciaria, \"TerciariaPath\"],\r\n]);\r\nexport const FileProductArray: any[] = [\r\n {\r\n type: FileTypeProduct.principal,\r\n label: FileTypeProductLabel.get(FileTypeProduct.principal),\r\n name: FileTypeProductName.get(FileTypeProduct.principal),\r\n fileInfo: null,\r\n blobId: null,\r\n productImageId: null\r\n },\r\n {\r\n type: FileTypeProduct.secundaria,\r\n label: FileTypeProductLabel.get(FileTypeProduct.secundaria),\r\n name: FileTypeProductName.get(FileTypeProduct.secundaria),\r\n fileInfo: null,\r\n blobId: null,\r\n productImageId: null\r\n },\r\n {\r\n type: FileTypeProduct.terciaria,\r\n label: FileTypeProductLabel.get(FileTypeProduct.terciaria),\r\n name: FileTypeProductName.get(FileTypeProduct.terciaria),\r\n fileInfo: null,\r\n blobId: null,\r\n productImageId: null\r\n },\r\n];\r\nexport class UpdateFileProductImage\r\n{\r\n id: number = 0;\r\n order: FileType = 0;\r\n productId: number = 0;\r\n blobId: number = 0;\r\n}\r\n\r\nexport class ShoppingCartItem\r\n{\r\n public item: Product;\r\n public quantity: number;\r\n public customerId?:number;\r\n public userId?:number;\r\n public total?:number;\r\n public totalBeforeEdit?:number;\r\n}\r\n\r\nexport enum SetupType\r\n{\r\n Both = 0,\r\n Upper = 1,\r\n Lower = 2\r\n}\r\n\r\nexport enum FileUploadType {\r\n CSV = 'text/csv',\r\n}","// OUTSIDE of a Module, thus, global\r\ninterface Array\r\n{\r\n /**\r\n * Clears the contents of an array\r\n * NOTE: This one I wrote (jtp)\r\n */\r\n clear(): void;\r\n\r\n /**\r\n * Returns true if this list contains no mappings.\r\n * @return {boolean} true if this list contains no mappings.\r\n */\r\n isEmpty(): boolean;\r\n\r\n add(value: T): void\r\n addRange(array: Array): void\r\n\r\n /** Determines whether any element of the array satisfies a condition. */\r\n any(predicate?: (element: T) => boolean): boolean;\r\n\r\n /** Determines whether the array contains a specified element by using the default equality comparer. */\r\n contains(value: T): boolean;\r\n\r\n select(selector: (element: T, index: number) => TResult): Array;\r\n\r\n /** Filters a sequence of values based on a predicate. */\r\n where(predicate: (element: T, index: number) => boolean): Array;\r\n\r\n /** Returns the first value if present, or null if not. */\r\n firstOrNull(): T;\r\n\r\n /** Shuffles the array in random order. */\r\n shuffle(): void;\r\n\r\n // ************************************************************\r\n // The following are from MDN - polyfills of future Array stuff\r\n // ************************************************************\r\n\r\n /**\r\n * The includes() method determines whether an array includes a certain element, returning true or false as appropriate.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\r\n *\r\n * Syntax: var boolean = array.includes(searchElement[, fromIndex])\r\n *\r\n * Parameters:\r\n * searchElement: The element to search for.\r\n * fromIndex: Optional.The position in this array at which to begin searching for searchElement.A negative value searches from the end of the array.Defaults to 0.\r\n *\r\n * Return value: A Boolean.\r\n */\r\n includes(searchElement: any): boolean;\r\n\r\n /**\r\n * The find() method returns a value in the array, if an element in the array satisfies the provided testing function. Otherwise undefined is returned.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\r\n *\r\n * Syntax: arr.find(callback[, thisArg])\r\n *\r\n * Parameters:\r\n * callback: Function to execute on each value in the array, taking three arguments:\r\n * element: The current element being processed in the array.\r\n * index: The index of the current element being processed in the array.\r\n * array: The array find was called upon.\r\n *\r\n * thisArg: Optional.Object to use as this when executing callback.\r\n */\r\n find(predicate: (element: T, index: number, array: Array) => boolean): T;\r\n\r\n /**\r\n * The findIndex() method returns an index in the array, if an element in the array satisfies the provided testing function. Otherwise - 1 is returned.\r\n * See also the find() method, which returns the value of a found element in the array instead of its index.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\r\n *\r\n * Syntax: arr.findIndex(callback[, thisArg])\r\n *\r\n * Parameters:\r\n * callback: Function to execute on each value in the array, taking three arguments:\r\n * element: The current element being processed in the array.\r\n * index: The index of the current element being processed in the array.\r\n * array: The array findIndex was called upon.\r\n *\r\n * thisArg: Optional.Object to use as this when executing callback.\r\n */\r\n findIndex(predicate: (element: T, index: number, array: Array) => boolean): number;\r\n}\r\n\r\n// ************************************************************\r\n// These are our extensions to Array\r\n// ************************************************************\r\n\r\n\r\nif (!Array.prototype.clear)\r\n{\r\n Array.prototype.clear = function ()\r\n {\r\n this.length = 0;\r\n };\r\n}\r\n\r\nif (!Array.prototype.isEmpty)\r\n{\r\n Array.prototype.isEmpty = function ()\r\n {\r\n return this.length === 0;\r\n };\r\n}\r\n\r\nif (!Array.prototype.add)\r\n{\r\n Array.prototype.add = function (value)\r\n {\r\n this.push(value);\r\n };\r\n}\r\n\r\nif (!Array.prototype.addRange)\r\n{\r\n Array.prototype.addRange = function (array)\r\n {\r\n array.forEach(a => this.push(a));\r\n };\r\n}\r\n\r\nif (!Array.prototype.any)\r\n{\r\n Array.prototype.any = function (predicate: any)\r\n {\r\n if (this.find(predicate))\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n };\r\n}\r\n\r\nif (!Array.prototype.contains)\r\n{\r\n Array.prototype.contains = function (value)\r\n {\r\n let match: boolean = false;\r\n\r\n this.forEach((item: any) =>\r\n {\r\n if (item == value)\r\n {\r\n match = true;\r\n }\r\n });\r\n\r\n return match;\r\n };\r\n}\r\n\r\nif (!Array.prototype.select)\r\n{\r\n Array.prototype.select = function (selector: any)\r\n {\r\n if (typeof selector !== 'function') { throw new TypeError('selector must be a function'); }\r\n\r\n let results: any[] = [];\r\n\r\n let thisArg = arguments[1];\r\n\r\n this.forEach((value: any, index: number) =>\r\n {\r\n results.push(\r\n selector.call(thisArg, value, index)\r\n );\r\n });\r\n\r\n return results;\r\n };\r\n}\r\n\r\nif (!Array.prototype.where)\r\n{\r\n Array.prototype.where = function (predicate)\r\n {\r\n if (typeof predicate !== 'function') { throw new TypeError('predicate must be a function'); }\r\n\r\n let results: any[] = [];\r\n\r\n let thisArg = arguments[1];\r\n\r\n this.forEach((item: any) =>\r\n {\r\n if (predicate.call(thisArg, item))\r\n {\r\n results.push(item);\r\n }\r\n });\r\n\r\n return results;\r\n };\r\n}\r\n\r\nif (!Array.prototype.firstOrNull)\r\n{\r\n Array.prototype.firstOrNull = function ()\r\n {\r\n if (this.length == 0) { return null; }\r\n else { return this[0]; }\r\n };\r\n}\r\n\r\n// ************************************************************\r\n// The following are from MDN - polyfills of future Array stuff\r\n// ************************************************************\r\n\r\nif (!Array.prototype.includes)\r\n{\r\n Array.prototype.includes = function (searchElement: any /*, fromIndex*/)\r\n {\r\n 'use strict';\r\n let O = Object(this);\r\n let len = parseInt(O.length) || 0;\r\n if (len === 0)\r\n {\r\n return false;\r\n }\r\n let n = parseInt(arguments[1]) || 0;\r\n let k;\r\n if (n >= 0)\r\n {\r\n k = n;\r\n }\r\n else\r\n {\r\n k = len + n;\r\n if (k < 0) { k = 0; }\r\n }\r\n let currentElement;\r\n while (k < len)\r\n {\r\n currentElement = O[k];\r\n if (searchElement === currentElement ||\r\n (searchElement !== searchElement && currentElement !== currentElement))\r\n { // NaN !== NaN\r\n return true;\r\n }\r\n k++;\r\n }\r\n return false;\r\n };\r\n}\r\n\r\nif (!Array.prototype.find)\r\n{\r\n Array.prototype.find = function (predicate: any)\r\n {\r\n if (this === null)\r\n {\r\n throw new TypeError('Array.prototype.find called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function')\r\n {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n let list = Object(this);\r\n let length = list.length >>> 0;\r\n let thisArg = arguments[1];\r\n let value;\r\n\r\n for (let i = 0; i < length; i++)\r\n {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list))\r\n {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n };\r\n}\r\n\r\nif (!Array.prototype.findIndex)\r\n{\r\n Array.prototype.findIndex = function (predicate: any)\r\n {\r\n if (this === null)\r\n {\r\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function')\r\n {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n let list = Object(this);\r\n let length = list.length >>> 0;\r\n let thisArg = arguments[1];\r\n let value;\r\n\r\n for (let i = 0; i < length; i++)\r\n {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list))\r\n {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\nif (!Array.prototype.shuffle)\r\n{\r\n Array.prototype.shuffle = function ()\r\n {\r\n for (let i = this.length - 1; i > 0; i--)\r\n {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [this[i], this[j]] = [this[j], this[i]];\r\n }\r\n };\r\n}\r\n","\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError as observableThrowError } from 'rxjs';\r\nimport { AppClientContext } from './AppClientContext';\r\n\r\nexport class ApiServiceBase\r\n{\r\n protected apiUrl: string;\r\n\r\n constructor(\r\n protected http: HttpClient\r\n )\r\n { }\r\n\r\n // ***********************************************************\r\n // Support Methods\r\n // ***********************************************************\r\n\r\n /**\r\n * Creates the relative url for the service call. Creates a url like: /api/myResource/myMethod/1/2/3\r\n *\r\n * @param method - examples: get, getById\r\n * @param identifiers (optional) - examples: 1, Mary. Can supply multiple\r\n */\r\n\r\n protected createUrl(method: string, ...identifiers: any[]): string\r\n {\r\n var returnValue = this.apiUrl;\r\n\r\n if (method)\r\n {\r\n returnValue = `${this.apiUrl}/` + method;\r\n }\r\n\r\n identifiers.forEach(identifier =>\r\n {\r\n if (identifier != null)\r\n {\r\n returnValue += \"/\" + identifier;\r\n }\r\n });\r\n\r\n return returnValue;\r\n }\r\n\r\n /**\r\n * Takes an Observable - and handles the success and fail conditions - including logging the results.\r\n */\r\n protected _handleObservableResponse(subject: Observable<{}>)\r\n {\r\n // Get random value - chop off the leading 0.\r\n let random = Math.random().toString().substring(2);\r\n\r\n let dataServiceTokenName = (this.constructor).name + \"_\" + random;\r\n\r\n AppClientContext.Instance.setDataServiceBusy(dataServiceTokenName);\r\n\r\n subject\r\n .subscribe(\r\n function (response)\r\n {\r\n try\r\n {\r\n\r\n }\r\n finally\r\n {\r\n AppClientContext.Instance.setDataServiceDone(dataServiceTokenName);\r\n }\r\n },\r\n function (errorData: any)\r\n {\r\n try\r\n {\r\n if (errorData && errorData.status)\r\n {\r\n\r\n }\r\n\r\n // Not Found\r\n if (errorData && errorData.status == 404)\r\n {\r\n\r\n return;\r\n }\r\n\r\n // Unauthorized\r\n if (errorData && errorData.status == 401)\r\n {\r\n if (errorData.statusText = \"Unauthorized\")\r\n {\r\n\r\n }\r\n else\r\n {\r\n window.location.href = \"/\";\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (errorData && errorData.status == 500)\r\n {\r\n // Not in cache\r\n if (errorData.error && errorData.error.message == \"User not in Cache... possibly timed out.\")\r\n {\r\n window.location.href = \"/\";\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Outage\r\n if (errorData && errorData.status == 503)\r\n {\r\n return;\r\n }\r\n }\r\n finally\r\n {\r\n AppClientContext.Instance.setDataServiceDone(dataServiceTokenName);\r\n }\r\n });\r\n }\r\n\r\n // handle errors\r\n protected handleError(response: Response, request: Request): Observable\r\n {\r\n if (response.status === 401)\r\n {\r\n\r\n }\r\n\r\n // handle server error\r\n if (response.status === 500)\r\n {\r\n\r\n }\r\n\r\n return observableThrowError(response);\r\n }\r\n}\r\n","import { InjectionToken, Injector, Type } from '@angular/core';\r\nimport { EntityConfig } from './EntityConfig';\r\nimport { Tools } from '../util/Tools';\r\nimport { User } from './User';\r\nimport { Case } from './Case';\r\nimport { Setup } from './Setup';\r\n\r\nexport class AppClientContext\r\n{\r\n public user: User;\r\n\r\n public case: Case;\r\n\r\n public setup: Setup;\r\n\r\n public customerId: number = null;\r\n public customerCaseId: number = null;\r\n\r\n public customerStatus: number=null;\r\n\r\n public applicationName: string = \"\";\r\n public appEnvironment: string = \"\";\r\n public isProductionEnvironment: boolean = false;\r\n\r\n public propertyBag: Map;\r\n public headerValues: Map = new Map();\r\n\r\n public entityConfigDict: Map;\r\n\r\n protected static instance: AppClientContext;\r\n\r\n static get Instance(): AppClientContext\r\n {\r\n if (this.instance === null || this.instance === undefined)\r\n {\r\n this.instance = new AppClientContext();\r\n }\r\n return this.instance;\r\n }\r\n\r\n /**\r\n * This is the angular Injector - used for dependency injection. Used by the getServiceInstance method.\r\n */\r\n private injector: Injector;\r\n\r\n public setInjector(injector: Injector)\r\n {\r\n this.injector = injector;\r\n }\r\n\r\n constructor() { }\r\n\r\n // ********************************************************\r\n // #region General Methods\r\n // ********************************************************\r\n\r\n public initialize(startupInfo: any)\r\n {\r\n let user = new User(); \r\n // Copy properties from the json values into \"real\" user object\r\n Tools.extend(true, user, startupInfo.user);\r\n this.user = user;\r\n this.customerStatus=startupInfo.status;\r\n }\r\n\r\n public initializeCase(createdCase: any)\r\n {\r\n let newCase = new Case();\r\n\r\n // Copy properties from the json values into \"real\" user object\r\n Tools.extend(true, newCase, createdCase);\r\n this.case = newCase;\r\n }\r\n\r\n public initializeSetup(createdSetup: any)\r\n {\r\n let newBlankSetup = new Setup();\r\n\r\n // Copy properties from the json values into \"real\" user object\r\n Tools.extend(true, newBlankSetup, createdSetup);\r\n this.setup = newBlankSetup;\r\n }\r\n\r\n public getServiceInstance(token: Type | InjectionToken, notFoundValue?: T): T\r\n {\r\n try\r\n {\r\n return this.injector.get(token, notFoundValue);\r\n }\r\n catch (e)\r\n {\r\n Tools.throwException(\"Error occurred getting service instance:\" + token);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // *****************************************\r\n // Busy related properties\r\n // *****************************************\r\n\r\n private busyDataServices: Map = new Map();\r\n\r\n private __isBusy: boolean = false;\r\n public get isBusy(): boolean\r\n {\r\n if (this.__isBusy || this.busyDataServices.size > 0) { return true; }\r\n else { return false; }\r\n }\r\n public set isBusy(value: boolean)\r\n {\r\n this.__isBusy = value;\r\n }\r\n\r\n public maxBusySeconds: number = 10;\r\n\r\n private _akkyRedirectUrl: string = \"https://extranet.rar.devl2.akky.proyectos.dvl.nic.com.mx\";\r\n\r\n public get akkyRedirectUrl(): string\r\n {\r\n return this._akkyRedirectUrl;\r\n }\r\n public set akkyRedirectUrl(value: string)\r\n {\r\n this._akkyRedirectUrl = value;\r\n }\r\n\r\n // #endregion\r\n\r\n // ********************************************************\r\n // #region Busy Related Methods\r\n // ********************************************************\r\n\r\n /**\r\n *\r\n * Notifies Client context that the data service is busy.\r\n This is used by the isBusy logic - to determine if the busy animation should show.\r\n */\r\n public setDataServiceBusy(dataServiceTokenName: string): void\r\n {\r\n if (!this.busyDataServices.has(dataServiceTokenName))\r\n {\r\n this.busyDataServices.set(dataServiceTokenName, dataServiceTokenName);\r\n }\r\n this.clearIsBusyIfStuck(true);\r\n }\r\n\r\n /**\r\n *\r\n * Notifies Client context that the data service is no longer busy.\r\n This is used by the isBusy logic - to determine if the busy animation should show.\r\n */\r\n public setDataServiceDone(dataServiceTokenName: string): void\r\n {\r\n if (this.busyDataServices.has(dataServiceTokenName))\r\n {\r\n this.busyDataServices.delete(dataServiceTokenName);\r\n }\r\n }\r\n\r\n private clearIsBusyIfStuck(isFirstPass?: boolean)\r\n {\r\n // If there aren't any busy data services, then we're not stuck - so no need to keep testing.\r\n if (this.busyDataServices.size == 0)\r\n {\r\n return;\r\n }\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { SafeUrl } from \"@angular/platform-browser\";\r\nimport \"../util/ArrayExtensions\";\r\n\r\n// ********************************************************************************\r\n// #region Classes\r\n// ********************************************************************************\r\n\r\nexport interface IEntity\r\n{\r\n id: number;\r\n}\r\n\r\nexport interface FileInfo {\r\n name: string,\r\n url: SafeUrl\r\n}\r\n\r\n\r\nexport class LocalStorage implements Storage\r\n{\r\n [name: string]: any;\r\n readonly length: number;\r\n clear(): void { }\r\n getItem(key: string): string | null { return undefined; }\r\n key(index: number): string | null { return undefined; }\r\n removeItem(key: string): void { }\r\n setItem(key: string, value: string): void { }\r\n}\r\n\r\nexport class UserDto\r\n{\r\n\r\n}\r\n\r\nexport class LoginDto\r\n{\r\n id: string = \"\";\r\n password: string = \"\";\r\n cartId: string = \"\";\r\n language: string = \"\";\r\n}\r\n\r\nexport class UpdateFileDto\r\n{\r\n id: number = 0;\r\n fileType: FileType = 0;\r\n fileBlobId: number = 0;\r\n}\r\n\r\nexport class RefreshTokenDto\r\n{\r\n language: string = \"\";\r\n refreshToken: string = \"\";\r\n}\r\n\r\nexport class ValidateSessionDto\r\n{\r\n language: string = \"\";\r\n token: string = \"\";\r\n}\r\n\r\nexport class Product\r\n{\r\n id: number;\r\n name: string;\r\n description: string;\r\n isActive: boolean;\r\n isDeleted: boolean;\r\n productType: ProductType;\r\n alignersQuantity: number;\r\n quantityStock?: number;\r\n isCase: boolean;\r\n hasDentalMonitoring: boolean;\r\n hasUnlimitedAligners: boolean;\r\n category: Category;\r\n additionalServices?: ProductAdditionalServices;\r\n itemPrices?: ItemPrices;\r\n specList: ProductSpec[];\r\n principalImage?: string;\r\n images: ProductImage[];\r\n priceList: ProductPriceList[];\r\n customerTypeList: any;\r\n baseTax: number;\r\n basePriceProduct: number;\r\n basePriceExtraAligner: number;\r\n basePriceDentalMonitoring: number;\r\n basePriceComplexCase: number;\r\n expirationTime: number;\r\n setupIncluded: boolean;\r\n sort: number;\r\n}\r\n\r\nexport class Category\r\n{\r\n id: number;\r\n parentId: number;\r\n name: string;\r\n description: string;\r\n subcategories: Category[];\r\n}\r\n\r\nexport class ProductImage\r\n{\r\n id: number;\r\n order: number;\r\n productId: number;\r\n url: string;\r\n}\r\n\r\nexport class ServiceImage\r\n{\r\n order?: number;\r\n url: string;\r\n}\r\n\r\nexport class ProductSpec\r\n{\r\n id: number;\r\n name: string;\r\n value: string;\r\n productId: number;\r\n}\r\n\r\nexport class ProductPriceList\r\n{\r\n id: number;\r\n priceProduct: number;\r\n priceExtraAligner: number;\r\n priceExtraDentalMonitoring: number;\r\n priceComplexCase: number;\r\n tax: number;\r\n isDeleted: boolean;\r\n productId: number;\r\n customerTypeId: number;\r\n}\r\n\r\nexport class ItemPrices\r\n{\r\n priceExtraAligner?: number;\r\n subtotal: number;\r\n price: number;\r\n priceExtraDentalMonitoring?: number;\r\n priceComplexCase?: number;\r\n tax?: number;\r\n totalTax?: number;\r\n shoppingDiscount?: number;\r\n priceWithDiscount?: number;\r\n}\r\n\r\n\r\nexport class ProductAdditionalServices\r\n{\r\n addDentalMonitoring: boolean;\r\n addIsComplexCase: boolean;\r\n hasUnlimitedAligners?: boolean;\r\n extraAlignersQuantity: number;\r\n}\r\n\r\nexport class Service\r\n{\r\n id: number;\r\n name: string;\r\n itemPrices: ItemPrices;\r\n additionalServices?: ProductAdditionalServices;\r\n images: ServiceImage;\r\n idSetup: number;\r\n serviceProductUpgrade: any;\r\n serviceType: ServiceType;\r\n}\r\n\r\nexport class ShoppingCartItem\r\n{\r\n public item: Product | Service;\r\n public quantity: number;\r\n}\r\n\r\nexport class ProductDetail\r\n{\r\n productId: number;\r\n quantity: number;\r\n quantityExtraAligners?: number;\r\n addDentalMonitoring: boolean;\r\n addIsComplexCase: boolean;\r\n caseId?: number;\r\n isService: boolean;\r\n serviceType?: number;\r\n newProductUpgradeId?: number;\r\n}\r\n\r\nexport class CaseStage\r\n{\r\n StageNumber: number;\r\n UpperAligners: number;\r\n LowerAligners: number;\r\n Comments: string;\r\n FrecuencyDays: number;\r\n StartDate?: Date;\r\n EndDate?: Date;\r\n IsManufactured: boolean;\r\n IsPendingToReviewAlignersQuantity?: boolean;\r\n totalAlignersQuantity: number;\r\n CaseId: number;\r\n SetupId: number;\r\n StatusId?: number;\r\n IsDeleted: boolean;\r\n}\r\n\r\nexport class Status\r\n{\r\n id: number;\r\n name: string;\r\n backofficeDescription: string;\r\n ecommerceDescription: string;\r\n caseDescription: string;\r\n maxDays: number;\r\n colorOnTime: string;\r\n colorOffTime: string;\r\n order: number;\r\n isDeleted: boolean;\r\n isFinal: boolean;\r\n isCancelable: boolean;\r\n requiresSetupPayment: boolean;\r\n requiresSufficientAlignersAvailable: boolean;\r\n}\r\n\r\nexport class OpenPayCardObject\r\n{\r\n public holderName: string;\r\n public holderEmail?: string;\r\n public cardNumber: string;\r\n public cvv2: number;\r\n public expirationMonth: number;\r\n public expirationYear: number;\r\n public deviceSessionId?: string;\r\n}\r\n\r\nexport class DynamicPipeType\r\n{\r\n //NOTE: Must have same methods name that is inside \"dynamic.pipe.ts\"\r\n public static OrderStatus = \"orderStatus\";\r\n public static DateTime = \"dateTime\";\r\n public static UTCDateTime = \"UTCDateTime\";\r\n public static Currency = \"currency\";\r\n public static ToUpperCase = \"toUpper\";\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// ********************************************************************************\r\n// #region Interfaces\r\n// ********************************************************************************\r\n\r\nexport interface IEntity\r\n{\r\n id: number;\r\n}\r\n\r\nexport interface IBaseRequest\r\n{\r\n token: string;\r\n}\r\n\r\nexport interface IPatient\r\n{\r\n id?: number;\r\n fullName: string;\r\n lastName: string;\r\n birthday: Date;\r\n email: string;\r\n phone: string;\r\n customerId: number;\r\n}\r\n\r\nexport interface ICaseStage\r\n{\r\n id?: number;\r\n stageNumber: number;\r\n upperAligners: number;\r\n lowerAligners: number;\r\n comments: string;\r\n frecuencyDays: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n setupId: number;\r\n statusId: number;\r\n isManufactured: boolean;\r\n caseId: number;\r\n updateStageReceivedDateRequired?:boolean;\r\n createdFromCaseDetail?: boolean;\r\n preSetupUsed: boolean;\r\n generalComments?: string;\r\n importantChangesComments?: string;\r\n}\r\n\r\nexport interface ICreateBlankCommandSetup\r\n{\r\n customerId: number;\r\n}\r\n\r\nexport interface ICreateBlankCommandCaseStage\r\n{\r\n caseId: number;\r\n stageNumber: number;\r\n frecuencyDays: number;\r\n upperAligners: number;\r\n lowerAligners: number;\r\n setupId: number;\r\n statusId: number;\r\n comments: string;\r\n}\r\n\r\n//Add base interfaces\r\n\r\n\r\n\r\n// #endregion Interfaces\r\n//Currency Type\r\nexport enum CurrencyTypeInt\r\n{\r\n MXN = 0,\r\n USD = 1,\r\n CAD = 2,\r\n EUR = 3,\r\n GBP = 4,\r\n JPY = 5,\r\n}\r\n\r\n//check ISO 4217 before add new one\r\nexport const CurrencyTypeCode = new Map([\r\n [CurrencyTypeInt.MXN, 'MXN'],\r\n [CurrencyTypeInt.USD, 'USD$'],\r\n [CurrencyTypeInt.CAD, 'CAD'],\r\n [CurrencyTypeInt.EUR, 'EUR'],\r\n [CurrencyTypeInt.GBP, 'GBP'],\r\n [CurrencyTypeInt.JPY, 'JPY'],\r\n]);\r\n\r\nexport enum FileApplicationType\r\n{\r\n PDF = 'application/pdf',\r\n STL = 'application/octet-stream',\r\n TXT = 'application/plain',\r\n ZIP7 = 'application/x-7z-compressed',\r\n ZIP = 'application/zip',\r\n RAR = 'application/x-rar-compressed',\r\n WORD = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n POWERPOINT = 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n}\r\n\r\nexport enum ImageType\r\n{\r\n JPG = 'image/jpg',\r\n JPEG = 'image/jpeg',\r\n PNG = 'image/png',\r\n GIF = 'image/gif',\r\n TIF = 'image/tiff',\r\n BMP = 'image/bmp'\r\n}\r\n\r\nexport enum VideoType\r\n{\r\n MP4 = 'video/mp4',\r\n QUICKTIME = 'video/quicktime',\r\n MOV = 'video/mov',\r\n MPG = 'video/mpg',\r\n MPEG = 'video/mpeg',\r\n MPEG4 = 'video/mpeg4',\r\n}\r\n\r\n\r\nexport enum FileExtension//Agregar nuevos formatos de archivo\r\n{\r\n PDF = '.pdf',\r\n TXT = '.txt',\r\n ZIP = '.zip',\r\n ZIP7 = '.7z',\r\n RAR = '.rar',\r\n WORD = '.docx',//\r\n POWERPOINT = '.pptx',//\r\n EXCEL = '.xlsx',//\r\n}\r\n\r\nexport enum FileWeirExtension\r\n{\r\n STL = '.stl',\r\n}\r\n\r\nexport enum ImageExtension\r\n{\r\n JPG = '.jpg',\r\n JPEG = '.jpg',\r\n PNG = '.png',\r\n GIF = '.gif',\r\n TIF = '.tif',\r\n BMP = '.bmp'\r\n}\r\n\r\nexport const ValidImageExtensions: string[] =\r\n[\r\n ImageExtension.JPG.toString(),\r\n ImageExtension.JPEG.toString(),\r\n ImageExtension.PNG.toString(),\r\n ImageExtension.GIF.toString(),\r\n ImageExtension.TIF.toString(),\r\n ImageExtension.BMP.toString()\r\n]\r\n\r\nexport enum ProductType\r\n{\r\n Plan = 1,\r\n Setup = 2,\r\n Service = 3,\r\n Accessory = 4,\r\n}\r\n\r\nexport enum OrderPaymentStatus {\r\n InProcess = 0,\r\n Completed = 1,\r\n}\r\n\r\nexport enum PaymentTypeStatus {\r\n OpenPay = 1,\r\n PayNet = 2,\r\n SPEI = 3,\r\n Paypal = 4,\r\n InPerson = 5,\r\n PayLink = 6,\r\n Courtesy = 7,\r\n CardPay=8\r\n}\r\n\r\nexport enum FileType\r\n{\r\n LateralExtraoralId = 0,\r\n FrontalExtraoralId = 1,\r\n SmileExtraoralId = 2,\r\n UpperOcclusalId = 3,\r\n LowerOcclusalId = 4,\r\n LeftLateralIntraoralId = 5,\r\n FrontalIntraoralId = 6,\r\n RightLateralIntraoralId = 7,\r\n CompositeId = 8,\r\n PanoramicRadiographyId = 9,\r\n LateralRadiographyId = 10,\r\n AditionalRadiographyId = 11,\r\n BiteSTLId = 12,\r\n UpperSTLId = 13,\r\n LowerSTLId = 14,\r\n AdditionalCaseFileId = 15,\r\n TaxInformation = 16,\r\n RightsAgreement = 17,\r\n PromiseLetter = 18,\r\n FiscalDocument = 19\r\n}\r\n\r\nexport enum ServiceType\r\n{\r\n ComplexCase = 0,\r\n DentalMonitoring = 1,\r\n AditionalAligners = 2,\r\n Upgrade = 3\r\n}\r\n\r\nexport enum SetupType\r\n{\r\n Both = 0,\r\n Upper = 1,\r\n Lower = 2\r\n}\r\n\r\nexport enum SetupAlignmentType\r\n{\r\n AllTeth = 0,\r\n Alignment3 = 1,\r\n Alignment5 = 2\r\n}\r\n\r\nexport enum ThirdMolarsType\r\n{\r\n NoErupted = 0,\r\n AlignAndIncorporate = 1,\r\n NoMoveAndKeep = 2,\r\n DigitalExtraction = 3,\r\n NotPresentOrAbsent=4\r\n}\r\n\r\nexport enum InterproximalPolishingType\r\n{\r\n AsNecesary = 0,\r\n PreviouslyOnly = 1,\r\n IndicateAmount = 2\r\n}\r\n\r\nexport enum MidLineType\r\n{\r\n Keep = 0,\r\n MoveRight = 1,\r\n MoveLeft = 2\r\n}\r\n\r\nexport enum PositionType {\r\n Keep = 0,\r\n Protrude = 1,\r\n Retract = 2,\r\n}\r\n\r\nexport enum PositionTypeExtractions {\r\n Keep = 0,\r\n MoveToMesial = 1,\r\n Retract = 2,\r\n}\r\n\r\nexport enum TorqueLowerType\r\n{\r\n Keep = 0,\r\n ProIncline = 1,\r\n RetroIncline = 2,\r\n}\r\n\r\nexport enum TorqueUpperType\r\n{\r\n Keep = 0,\r\n Move = 1,\r\n Overcorrect = 2,\r\n}\r\n\r\nexport enum HorizontalOverbiteType\r\n{\r\n Contacts = 0,\r\n NoContacts = 1,\r\n SpaceBetween = 2\r\n}\r\n\r\nexport enum ClassType\r\n{\r\n ClassOne = 0,\r\n ClassTwo = 1,\r\n ClassThree = 2,\r\n}\r\n\r\nexport enum Class2TypeOptions\r\n{\r\n SuperiorCanineTrimming = 0,\r\n SuperiorPreMolarTrimming = 1,\r\n InferiorMolarTrimming = 2,\r\n}\r\n\r\nexport enum Class3TypeOptions\r\n{\r\n SuperiorMolarTrimming = 0,\r\n CanineTrimming = 1,\r\n PreMolarTrimming = 2,\r\n}\r\n\r\nexport enum AditionalMechanicsType\r\n{\r\n Elastics = 0,\r\n CrossedElastics = 1,\r\n UpperDistalization = 2,\r\n LowerDistalization = 3,\r\n UpperMesialization = 4,\r\n LowerMesialization = 5,\r\n SurgicalTreatment = 6,\r\n SkeletalAnchor = 7,\r\n ElasticsType2 = 8,\r\n ElasticsType3 = 9\r\n}\r\n\r\nexport enum AditionalMechanicsToUse\r\n{\r\n SkeletalAnchor = 0,\r\n BiteStops = 1,\r\n BuildUps = 2,\r\n PowerArms = 3,\r\n LingualSpikes = 4,\r\n PalatineSpikes = 5\r\n}\r\n\r\nexport enum CrossedElasticsType\r\n{\r\n BothSides = 0,\r\n RightSideOnly = 1,\r\n LeftSideOnly = 2,\r\n}\r\n\r\nexport enum CrossedElasticsTypeNew\r\n{\r\n MolarTrimming = 0,\r\n}\r\n\r\nexport enum ManufacturingType\r\n{\r\n Group = 0,\r\n Sequential = 1\r\n}\r\n\r\nexport enum VerticalOverbiteType\r\n{\r\n Keep = 0,\r\n Ideal = 1,\r\n ConcludeIn = 2\r\n}\r\n\r\nexport enum VerticalMovementType\r\n{\r\n Keep = 0,\r\n Extrude = 1,\r\n Intrude = 2\r\n}\r\n\r\nexport enum LevelingType\r\n{\r\n GingivalMargins = 0,\r\n IncisalEdges = 1\r\n}\r\n\r\nexport enum CoordinateNumberAlignersType\r\n{\r\n Independent = 0,\r\n Coordinated = 1\r\n}\r\n\r\nexport enum ProductType\r\n{\r\n Nano = 1,\r\n Social = 2,\r\n Simple = 3,\r\n}\r\n// #endregion Enums\r\n\r\n// ********************************************************************************\r\n// #region Constants\r\n// ********************************************************************************\r\nexport const OrderPaymentStatusLabel = new Map([\r\n [OrderPaymentStatus.InProcess, \"En Proceso\"],\r\n [OrderPaymentStatus.Completed, \"Completado\"],\r\n]);\r\n\r\nexport const OrderPaymentTypeStatusLabel = new Map([\r\n [PaymentTypeStatus.OpenPay, \"OpenPay\"],\r\n [PaymentTypeStatus.PayNet, \"Paynet\"],\r\n [PaymentTypeStatus.SPEI, \"SPEI\"],\r\n [PaymentTypeStatus.Paypal, \"Paypal\"],\r\n [PaymentTypeStatus.PayLink,\"Link de pago\"],\r\n [PaymentTypeStatus.CardPay,\"Pago con terminal\"]\r\n]);\r\n\r\nexport const FileTypeLabel = new Map([\r\n [FileType.LateralExtraoralId, \"Extraoral Lateral\"],\r\n [FileType.FrontalExtraoralId, \"Extraoral Frontal\"],\r\n [FileType.SmileExtraoralId, \"Extraoral Sonrisa\"],\r\n [FileType.UpperOcclusalId, \"Oclusal Superior\"],\r\n [FileType.LowerOcclusalId, \"Oclusal Inferior\"],\r\n [FileType.LeftLateralIntraoralId, \"Intraoral Lateral Izquierda\"],\r\n [FileType.FrontalIntraoralId, \"Intraoral Frontal\"],\r\n [FileType.RightLateralIntraoralId, \"Intraoral Lateral Derecha\"],\r\n [FileType.CompositeId, \"Composite\"],\r\n [FileType.PanoramicRadiographyId, \"Radiografía Panorámica\"],\r\n [FileType.LateralRadiographyId, \"Radiografía Lateral\"],\r\n [FileType.AditionalRadiographyId, \"Radiografía Adicional\"],\r\n [FileType.BiteSTLId, \"Mordida STL\"],\r\n [FileType.UpperSTLId, \"Superior STL\"],\r\n [FileType.LowerSTLId, \"Inferior STL\"],\r\n [FileType.AdditionalCaseFileId, \"Nuevo archivo adicional\"],\r\n [FileType.TaxInformation, \"Constancia Fiscal\"],\r\n [FileType.RightsAgreement, \"Cesión de derechos\"],\r\n [FileType.PromiseLetter, \"Carta compromiso\"],\r\n [FileType.FiscalDocument, \"Constancia de situación fiscal\"]\r\n]);\r\n\r\nexport const FileTypeName = new Map([\r\n [FileType.LateralExtraoralId, \"LateralExtraoral\"],\r\n [FileType.FrontalExtraoralId, \"FrontalExtraoral\"],\r\n [FileType.SmileExtraoralId, \"SmileExtraoral\"],\r\n [FileType.UpperOcclusalId, \"UpperOcclusal\"],\r\n [FileType.LowerOcclusalId, \"LowerOcclusal\"],\r\n [FileType.LeftLateralIntraoralId, \"LeftLateralIntraoral\"],\r\n [FileType.FrontalIntraoralId, \"FrontalIntraoral\"],\r\n [FileType.RightLateralIntraoralId, \"RightLateralIntraoral\"],\r\n [FileType.CompositeId, \"Composite\"],\r\n [FileType.PanoramicRadiographyId, \"PanoramicRadiography\"],\r\n [FileType.LateralRadiographyId, \"LateralRadiography\"],\r\n [FileType.AditionalRadiographyId, \"AditionalRadiography\"],\r\n [FileType.BiteSTLId, \"BiteSTL\"],\r\n [FileType.UpperSTLId, \"UpperSTL\"],\r\n [FileType.LowerSTLId, \"LowerSTL\"],\r\n [FileType.AdditionalCaseFileId, \"AdditionalFile0\"],\r\n [FileType.TaxInformation, \"TaxInformation\"],\r\n [FileType.RightsAgreement, \"RightsAgreement\"],\r\n [FileType.PromiseLetter, \"PromiseLetter\"],\r\n [FileType.FiscalDocument, \"FiscalDocument\"]\r\n]);\r\n\r\nexport const FileTypeNamePath = new Map([\r\n [FileType.LateralExtraoralId, \"lateralExtraoralPath\"],\r\n [FileType.FrontalExtraoralId, \"frontalExtraoralPath\"],\r\n [FileType.SmileExtraoralId, \"smileExtraoralPath\"],\r\n [FileType.UpperOcclusalId, \"upperOcclusalPath\"],\r\n [FileType.LowerOcclusalId, \"lowerOcclusalPath\"],\r\n [FileType.LeftLateralIntraoralId, \"leftLateralIntraoralPath\"],\r\n [FileType.FrontalIntraoralId, \"frontalIntraoralPath\"],\r\n [FileType.RightLateralIntraoralId, \"rightLateralIntraoralPath\"],\r\n [FileType.CompositeId, \"compositePath\"],\r\n [FileType.PanoramicRadiographyId, \"panoramicRadiographyPath\"],\r\n [FileType.LateralRadiographyId, \"lateralRadiographyPath\"],\r\n [FileType.AditionalRadiographyId, \"additionalRadiographyPath\"],\r\n [FileType.BiteSTLId, \"biteSTLPath\"],\r\n [FileType.UpperSTLId, \"upperSTLPath\"],\r\n [FileType.LowerSTLId, \"lowerSTLPath\"],\r\n]);\r\n\r\nexport const ProductTypeTooltipText = new Map([\r\n [ProductType.Nano, \"Este producto es ideal para casos como:\\n\"\r\n + \"Clase I - Buena oclusión\\n\"\r\n + \"Recidivas ligeras\\n\"\r\n + \"Apiñamiento 2-3mm\\n\"\r\n + \"Ideal 1 arcada\\n\"\r\n + \"No movimiento posterior (4-7)\\n\"\r\n + \"Movimiento solo 2-2\\n\"\r\n + \"IPR - Espacio\"],\r\n [ProductType.Social, \"Este producto es ideal para casos como:\\n\"\r\n + \"Clase I - Buena oclusión\\n\"\r\n + \"Recidivas ligeras/moderadas\\n\"\r\n + \"Apiñamiento 4mm\\n\"\r\n + \"Ideal 1 arcada\\n\"\r\n + \"No movimiento posterior (4-7)\\n\"\r\n + \"Movimiento solo 2-2\\n\"\r\n + \"Movimiento 3s (solo rotación ligera)\\n\"\r\n + \"IPR - Espacios\\n\"],\r\n [ProductType.Simple, \"Este producto es ideal para casos como:\\n\"\r\n + \"Clase I - Buena oclusión\\n\"\r\n + \"Mejorar formas de arco\\n\"\r\n + \"Ampliar para espacios\\n\"\r\n + \"Bueno para 2 arcadas\\n\"\r\n + \"CII/CIII menor a 2mm - ligeros elásticos\\n\"\r\n + \"Apiñamientos moderados 6mm\\n\"\r\n + \"No cambios esqueléticos\"],\r\n]);\r\n\r\nexport const FileCompositeArray: any[] = [\r\n {\r\n type: FileType.CompositeId,\r\n label: FileTypeLabel.get(FileType.CompositeId),\r\n name: FileTypeName.get(FileType.CompositeId),\r\n fileInfo: null\r\n },\r\n];\r\n\r\nexport const FileTypeArray: any[] = [\r\n {\r\n type: FileType.LateralExtraoralId,\r\n label: FileTypeLabel.get(FileType.LateralExtraoralId),\r\n name: FileTypeName.get(FileType.LateralExtraoralId),\r\n fileInfo: null,\r\n isRequired: false,\r\n },\r\n {\r\n type: FileType.FrontalExtraoralId,\r\n label: FileTypeLabel.get(FileType.FrontalExtraoralId),\r\n name: FileTypeName.get(FileType.FrontalExtraoralId),\r\n fileInfo: null,\r\n isRequired: false,\r\n },\r\n {\r\n type: FileType.SmileExtraoralId,\r\n label: FileTypeLabel.get(FileType.SmileExtraoralId),\r\n name: FileTypeName.get(FileType.SmileExtraoralId),\r\n fileInfo: null,\r\n isRequired: false,\r\n },\r\n {\r\n type: FileType.UpperOcclusalId,\r\n label: FileTypeLabel.get(FileType.UpperOcclusalId),\r\n name: FileTypeName.get(FileType.UpperOcclusalId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {},\r\n {\r\n type: FileType.LowerOcclusalId,\r\n label: FileTypeLabel.get(FileType.LowerOcclusalId),\r\n name: FileTypeName.get(FileType.LowerOcclusalId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.LeftLateralIntraoralId,\r\n label: FileTypeLabel.get(FileType.LeftLateralIntraoralId),\r\n name: FileTypeName.get(FileType.LeftLateralIntraoralId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.FrontalIntraoralId,\r\n label: FileTypeLabel.get(FileType.FrontalIntraoralId),\r\n name: FileTypeName.get(FileType.FrontalIntraoralId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.RightLateralIntraoralId,\r\n label: FileTypeLabel.get(FileType.RightLateralIntraoralId),\r\n name: FileTypeName.get(FileType.RightLateralIntraoralId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n];\r\n\r\n\r\nexport const FileTypeArrayWOSpace: any[] = [\r\n {\r\n type: FileType.LateralExtraoralId,\r\n label: FileTypeLabel.get(FileType.LateralExtraoralId),\r\n name: FileTypeName.get(FileType.LateralExtraoralId),\r\n fileInfo: null,\r\n isRequired: false,\r\n },\r\n {\r\n type: FileType.FrontalExtraoralId,\r\n label: FileTypeLabel.get(FileType.FrontalExtraoralId),\r\n name: FileTypeName.get(FileType.FrontalExtraoralId),\r\n fileInfo: null,\r\n isRequired: false,\r\n },\r\n {\r\n type: FileType.SmileExtraoralId,\r\n label: FileTypeLabel.get(FileType.SmileExtraoralId),\r\n name: FileTypeName.get(FileType.SmileExtraoralId),\r\n fileInfo: null,\r\n isRequired: false,\r\n },\r\n {\r\n type: FileType.UpperOcclusalId,\r\n label: FileTypeLabel.get(FileType.UpperOcclusalId),\r\n name: FileTypeName.get(FileType.UpperOcclusalId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.LowerOcclusalId,\r\n label: FileTypeLabel.get(FileType.LowerOcclusalId),\r\n name: FileTypeName.get(FileType.LowerOcclusalId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.LeftLateralIntraoralId,\r\n label: FileTypeLabel.get(FileType.LeftLateralIntraoralId),\r\n name: FileTypeName.get(FileType.LeftLateralIntraoralId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.FrontalIntraoralId,\r\n label: FileTypeLabel.get(FileType.FrontalIntraoralId),\r\n name: FileTypeName.get(FileType.FrontalIntraoralId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n {\r\n type: FileType.RightLateralIntraoralId,\r\n label: FileTypeLabel.get(FileType.RightLateralIntraoralId),\r\n name: FileTypeName.get(FileType.RightLateralIntraoralId),\r\n fileInfo: null,\r\n isRequired: true,\r\n },\r\n];\r\n\r\n\r\nexport const FileRadiographyArray: any[] = [\r\n {\r\n type: FileType.LateralRadiographyId,\r\n label: FileTypeLabel.get(FileType.LateralRadiographyId),\r\n name: FileTypeName.get(FileType.LateralRadiographyId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.PanoramicRadiographyId,\r\n label: FileTypeLabel.get(FileType.PanoramicRadiographyId),\r\n name: FileTypeName.get(FileType.PanoramicRadiographyId),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.AditionalRadiographyId,\r\n label: FileTypeLabel.get(FileType.AditionalRadiographyId),\r\n name: FileTypeName.get(FileType.AditionalRadiographyId),\r\n fileInfo: null\r\n },\r\n];\r\n\r\nexport const FileAdditionalArray =\r\n{\r\n Id:0,\r\n type: FileType.AdditionalCaseFileId,\r\n label: FileTypeLabel.get(FileType.AdditionalCaseFileId),\r\n name: FileTypeName.get(FileType.AdditionalCaseFileId),\r\n fileInfo: null\r\n};\r\n\r\nexport const AdditionalCustomerFilesArray: any[] = [\r\n {\r\n type: FileType.RightsAgreement,\r\n label: FileTypeLabel.get(FileType.RightsAgreement),\r\n name: FileTypeName.get(FileType.RightsAgreement),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.PromiseLetter,\r\n label: FileTypeLabel.get(FileType.PromiseLetter),\r\n name: FileTypeName.get(FileType.PromiseLetter),\r\n fileInfo: null\r\n },\r\n {\r\n type: FileType.FiscalDocument,\r\n label: FileTypeLabel.get(FileType.FiscalDocument),\r\n name: FileTypeName.get(FileType.FiscalDocument),\r\n fileInfo: null\r\n }\r\n];\r\n\r\nexport const TaxInformationFIle =\r\n{\r\n type: FileType.TaxInformation,\r\n label: FileTypeLabel.get(FileType.TaxInformation),\r\n name: FileTypeName.get(FileType.TaxInformation),\r\n fileInfo: null\r\n};\r\n\r\nexport const FileSTLArray: any[] = [\r\n {\r\n type: FileType.LowerSTLId,\r\n label: FileTypeLabel.get(FileType.LowerSTLId),\r\n name: FileTypeName.get(FileType.LowerSTLId),\r\n fileInfo: null},\r\n {\r\n type: FileType.UpperSTLId,\r\n label: FileTypeLabel.get(FileType.UpperSTLId),\r\n name: FileTypeName.get(FileType.UpperSTLId),\r\n fileInfo: null},\r\n {\r\n type: FileType.BiteSTLId,\r\n label: FileTypeLabel.get(FileType.BiteSTLId),\r\n name: FileTypeName.get(FileType.BiteSTLId),\r\n fileInfo: null},\r\n];\r\n\r\nexport const ServiceTypeLabel = new Map([\r\n [ServiceType.ComplexCase, \"Cambiar a Caso Complejo\"],\r\n [ServiceType.DentalMonitoring, \"DentalMonitoring\"],\r\n [ServiceType.AditionalAligners, \"Alineadores Adicionales\"],\r\n [ServiceType.Upgrade, \"Upgrade de producto\"]\r\n]);\r\n\r\nexport const SetupTypeLabel = new Map([\r\n [SetupType.Both, \"Ambas Arcadas\"],\r\n [SetupType.Upper, \"Superior Únicamente\"],\r\n [SetupType.Lower, \"Inferior Únicamente\"],\r\n]);\r\n\r\nexport const SetupAlignmentTypeLabel = new Map([\r\n [SetupAlignmentType.AllTeth, \"Alineación de todos los dientes\"],\r\n [SetupAlignmentType.Alignment3, \"Alineación de 3-3\"],\r\n [SetupAlignmentType.Alignment5, \"Alineación de 5-5\"],\r\n]);\r\n\r\nexport const DescriptionBySetupAlignmentType = new Map([\r\n [SetupAlignmentType.AllTeth, \"Mover sin restricciones todas las piezas dentales incluyendo anteriores, premolares y molares\"],\r\n [SetupAlignmentType.Alignment3, \"Solo mover piezas anteirores (de canino a canino) y mantener oclusión de premolares y molares como se encuentra actualmente\"],\r\n [SetupAlignmentType.Alignment5, \"Solo mover anteriores y premolares y mantener oclusion de molares como se encuentra actualmente\"],\r\n]);\r\n\r\nexport const ThirdMolarsTypeLabel = new Map([\r\n [ThirdMolarsType.NoErupted, \"No se encuentran erupcionados\"],\r\n [ThirdMolarsType.AlignAndIncorporate, \"Alinear e incorporarlos al tratamiento\"],\r\n [ThirdMolarsType.NoMoveAndKeep, \"No mover y mantenerlos en tratamiento\"],\r\n [ThirdMolarsType.DigitalExtraction, \"Realizar la extracción digital de las piezas seleccionadas\"],\r\n [ThirdMolarsType.NotPresentOrAbsent, \"No están presentes / Están ausentes\"]\r\n]);\r\n\r\nexport const InterproximalPolishingTypeLabel = new Map([\r\n [InterproximalPolishingType.AsNecesary, \"Como sea necesario (arcada completa en premolares y anteriores)\"],\r\n [InterproximalPolishingType.PreviouslyOnly, \"Anterior únicamente (canino a canino solamente)\"],\r\n [InterproximalPolishingType.IndicateAmount, \"Indicar cantidad máxima de Pulido Interproximal por contacto en mm\"],\r\n]);\r\n\r\nexport const MidLineTypeLabel = new Map([\r\n [MidLineType.Keep, \"Mantener\"],\r\n [MidLineType.MoveRight, \"Mover a la derecha\"],\r\n [MidLineType.MoveLeft, \"Mover a la izquierda\"],\r\n]);\r\n\r\nexport const PositionTypeLabel = new Map([\r\n [PositionType.Keep, \"Mantener\"],\r\n [PositionType.Protrude, \"Protruir\"],\r\n [PositionType.Retract, \"Retraer\"],\r\n]);\r\n\r\nexport const PositionTypeExtractionsLabel = new Map([\r\n [PositionTypeExtractions.Keep, \"Mantener\"],\r\n [PositionTypeExtractions.MoveToMesial, \"Mover a mesial\"],\r\n [PositionTypeExtractions.Retract, \"Retraer\"],\r\n]);\r\n\r\nexport const TorqueLowerTypeLabel = new Map([\r\n [TorqueLowerType.Keep, \"Mantener\"],\r\n [TorqueLowerType.ProIncline, \"Proinclinar\"],\r\n [TorqueLowerType.RetroIncline, \"Retroinclinar\"],\r\n]);\r\n\r\nexport const TorqueUpperTypeLabel = new Map([\r\n [TorqueUpperType.Keep, \"Mantener\"],\r\n [TorqueUpperType.Move, \"Mover cara labial a ideal en +7\"],\r\n [TorqueUpperType.Overcorrect, \"Sobrecorregir Torque\"],\r\n]);\r\n\r\nexport const HorizontalOverbiteTypeLabel = new Map([\r\n [HorizontalOverbiteType.Contacts, \"Con contactos ligeros en anteriores\"],\r\n [HorizontalOverbiteType.NoContacts, \"Sin contactos en anteriores (menos de 0.2mm de espacio)\"],\r\n [HorizontalOverbiteType.SpaceBetween, \"Dejar espacio entre bordes incisales\"],\r\n]);\r\n\r\nexport const ClassTypeLabel = new Map([\r\n [ClassType.ClassOne, \"Clase I\"],\r\n [ClassType.ClassTwo, \"Clase II\"],\r\n [ClassType.ClassThree, \"Clase III\"],\r\n]);\r\n\r\nexport const Class2TypeOptionLabel = new Map([\r\n [Class2TypeOptions.SuperiorCanineTrimming, \"Recortes en caninos\"],\r\n [Class2TypeOptions.SuperiorPreMolarTrimming, \"Recortes en premolares\"],\r\n [Class2TypeOptions.InferiorMolarTrimming, \"Recortes para botón en molares\"],\r\n]);\r\n\r\nexport const Class3TypeOptionLabel = new Map([\r\n [Class3TypeOptions.SuperiorMolarTrimming, \"Recortes para botón en molares\"],\r\n [Class3TypeOptions.CanineTrimming, \"Recortes en caninos\"],\r\n [Class3TypeOptions.PreMolarTrimming, \"Recortes en premolares\"],\r\n]);\r\n\r\nexport const AditionalMechanicsTypeLabel = new Map([\r\n [AditionalMechanicsType.Elastics, \"Elásticos AP\"],\r\n [AditionalMechanicsType.ElasticsType2, \"Elásticos clase II\"],\r\n [AditionalMechanicsType.ElasticsType3, \"Elásticos clase III\"],\r\n [AditionalMechanicsType.CrossedElastics, \"Elásticos Cruzados\"],\r\n [AditionalMechanicsType.SkeletalAnchor, \"Anclaje Esquelético\"],\r\n [AditionalMechanicsType.UpperDistalization, \"Distalización Superior\"],\r\n [AditionalMechanicsType.LowerDistalization, \"Distalización Inferior\"],\r\n [AditionalMechanicsType.UpperMesialization, \"Mesialización Superior\"],\r\n [AditionalMechanicsType.LowerMesialization, \"Mesialización Inferior\"],\r\n [AditionalMechanicsType.SurgicalTreatment, \"Tratamiento Quirúrgico\"],\r\n]);\r\n\r\nexport const AditionalMechanicsToUseLabel = new Map([\r\n [AditionalMechanicsToUse.SkeletalAnchor, \"Anclaje esquelético (mini implantes, mini palcas de titanio)\"],\r\n [AditionalMechanicsToUse.BiteStops, \"Bite Stops (Rampas de mordida en piezas anteriores para abrir mordida)\"],\r\n [AditionalMechanicsToUse.BuildUps, \"Build ups (Agregar en oclusal de molares para abrir mordida)\"],\r\n [AditionalMechanicsToUse.PowerArms, \"Power arms (asistencia en movimientos radiculares y cierre de espacios)\"],\r\n [AditionalMechanicsToUse.LingualSpikes, \"Spikes en lingual de 2-2 Inferior\"],\r\n [AditionalMechanicsToUse.PalatineSpikes, \"Spikes en palatino de 2-2 Superior\"],\r\n\r\n]);\r\n\r\nexport const CrossedElasticsTypeLabel = new Map([\r\n [CrossedElasticsType.BothSides, \"Ambos lados\"],\r\n [CrossedElasticsType.RightSideOnly, \"Solo lado derecho\"],\r\n [CrossedElasticsType.LeftSideOnly, \"Solo lado izquierdo\"],\r\n]);\r\n\r\nexport const CrossedElasticsTypeNewLabel = new Map([\r\n [CrossedElasticsTypeNew.MolarTrimming, \"Recortes para botón en molares\"],\r\n]);\r\n\r\nexport const ManufacturingTypeLabel = new Map([\r\n [ManufacturingType.Group, \"En grupo\"],\r\n [ManufacturingType.Sequential, \"Secuencial\"],\r\n]);\r\n\r\nexport const VerticalOverbiteTypeLabel = new Map([\r\n [VerticalOverbiteType.Keep, \"Mantener\"],\r\n [VerticalOverbiteType.Ideal, \"Ideal\"],\r\n [VerticalOverbiteType.ConcludeIn, \"Finalizar en\"],\r\n]);\r\n\r\nexport const VerticalMovementTypeLabel = new Map([\r\n [VerticalMovementType.Keep, \"Mantener\"],\r\n [VerticalMovementType.Extrude, \"Extruir\"],\r\n [VerticalMovementType.Intrude, \"Intruir\"],\r\n]);\r\n\r\nexport const LevelingTypeLabel = new Map([\r\n [LevelingType.GingivalMargins, \"Márgenes gingivales\"],\r\n [LevelingType.IncisalEdges, \"Bordes incisales\"],\r\n]);\r\n\r\nexport const CoordinateNumberAlignersTypeLabel = new Map([\r\n [CoordinateNumberAlignersType.Independent, \"Alineadores independientes por arcada\"],\r\n [CoordinateNumberAlignersType.Coordinated, \"Mismo número de alineadores en arcada superior e inferior\"],\r\n]);\r\n\r\nexport const DescriptionByCoordinateNumberAlignersType = new Map([\r\n [CoordinateNumberAlignersType.Independent, \"No hay alineadores pasivos, solo se usan alineadores activos a la necesidad de cada arcada, dando cantidades diferentes de alineadores en superior e inferior\"],\r\n [CoordinateNumberAlignersType.Coordinated, \"Se iguala la cantidad de alineadores en las arcadas a la arcada de mayor cantidad, para terminar en el mismo número de alineador\"],\r\n]);\r\n\r\nexport enum StatusesID{\r\n InProcessOfDischarge = 1,\r\n StageReceived = 2,\r\n Digitization = 3,\r\n SetUp1 = 4,\r\n SetUp2 = 5,\r\n SetUp3 = 6,\r\n ToBeApprovedByDr = 7,\r\n ApprovedForManufacturingWithAvailableAligners = 8,\r\n Printing3D = 9,\r\n AcetateFabrication = 10,\r\n ApprovalForPolishingAndTrimming = 11,\r\n Packaging = 12,\r\n PackedAndToBeShipped = 13,\r\n Shipped = 14,\r\n StageClosed = 15,\r\n StageCancelled = 16,\r\n SetupChanges = 17,\r\n RejectedFiles = 18\r\n}\r\n","export interface ICase\r\n{\r\n id: number;\r\n\r\n clinicId: number;\r\n customerId: number;\r\n customerAddress: string;\r\n\r\n patientId: number;\r\n patientName: string;\r\n patientLastName: string;\r\n patientFullName: string;\r\n patientEmail: string;\r\n patientPhone: string;\r\n\r\n caseProductId: number;\r\n productId?: number;\r\n orderDetailId?: number;\r\n\r\n statusId: number;\r\n\r\n expirationDate?: Date;\r\n isPartialSave: boolean;\r\n purchasedAligners: number;\r\n totalAligners: number;\r\n usedAligners: number;\r\n remainingAligners: number;\r\n upperAligners?: number;\r\n lowerAligners?: number;\r\n hasDentalMonitoring: boolean;\r\n isComplexCase: boolean;\r\n isDeleted: boolean;\r\n setupCount: number;\r\n stageCount: number;\r\n}\r\n\r\nexport class Case\r\n{\r\n public id: number;\r\n\r\n public clinicId: number;\r\n public customerId: number;\r\n public customerAddress: string;\r\n\r\n public patientId: number;\r\n public patientName: string;\r\n public patientLastName: string;\r\n public patientFullName: string;\r\n public patientEmail: string;\r\n public patientPhone: string;\r\n\r\n public caseProductId: number;\r\n public productId?: number;\r\n public orderDetailId?: number;\r\n public productAlignersQuantity?: number; \r\n\r\n public statusId: number;\r\n\r\n public expirationDate?: Date;\r\n public isPartialSave: boolean;\r\n public purchasedAligners: number;\r\n public totalAligners: number;\r\n public usedUpperAligners:number;\r\n public usedLowerAligners:number;\r\n public usedAligners: number;\r\n public remainingAligners: number;\r\n public upperAligners?: number;\r\n public lowerAligners?: number;\r\n public hasDentalMonitoring: boolean;\r\n public isComplexCase: boolean;\r\n public isDeleted: boolean;\r\n public setupCount: number;\r\n public stageCount: number;\r\n\r\n constructor() { }\r\n}\r\n","import { StringTools } from '../util/StringTools';\r\n\r\n\r\nexport class CRUDEvents\r\n{\r\n public get Add() { return \"{0}:Add\".format(this.entityConfig.entityName); }\r\n public get Saved() { return \"{0}:Saved\".format(this.entityConfig.entityName); }\r\n public get GetById() { return \"{0}:GetById\".format(this.entityConfig.entityName); }\r\n public get Cancelled() { return \"{0}:Cancelled\".format(this.entityConfig.entityName); }\r\n public get Deleted() { return \"{0}:Deleted\".format(this.entityConfig.entityName); }\r\n public get Selected() { return \"{0}:Selected\".format(this.entityConfig.entityName); }\r\n\r\n constructor(private entityConfig: EntityConfig) { }\r\n}\r\n\r\nexport class EntityConfig\r\n{\r\n public entityName: string;\r\n public entityPluralName: string;\r\n private _entityDisplayName: string;\r\n private _entityPluralDisplayName: string;\r\n\r\n public apiUrl: string;\r\n\r\n public canRead: boolean;\r\n public canEdit: boolean;\r\n public readRoles: Array;\r\n public editRoles: Array;\r\n\r\n // Properties for Domain Specific Entities\r\n public domainName: string;\r\n public domainContextPropertyName: string;\r\n public domainContextId: number;\r\n\r\n public supportsSoftDeletes: boolean;\r\n public isDomainSpecificEntity: boolean;\r\n public isVersionableEntity: boolean;\r\n public isDraftableEntity: boolean;\r\n\r\n public get entityDisplayName(): string\r\n {\r\n return StringTools.getHeadingFromFieldName(this.entityName);\r\n }\r\n\r\n public set entityDisplayName(entityDisplayName: string)\r\n {\r\n this._entityDisplayName = entityDisplayName;\r\n }\r\n\r\n public get entityPluralDisplayName(): string\r\n {\r\n return StringTools.getHeadingFromFieldName(this.entityPluralName);\r\n }\r\n\r\n public set entityPluralDisplayName(entityPluralDisplayName: string)\r\n {\r\n this._entityPluralDisplayName = entityPluralDisplayName;\r\n }\r\n}\r\n","import { HttpClient, HttpEvent, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map, share } from 'rxjs/operators';\r\nimport { AppClientContext } from './AppClientContext';\r\nimport { Guard } from '../util/Guard';\r\nimport { Tools } from '../util/Tools';\r\nimport { ApiServiceBase } from './ApiServiceBase';\r\nimport { EntityConfig } from './EntityConfig';\r\nimport { IPage, PageResult } from './Pagination';\r\nimport { UrlQueryDef } from './UrlQueryDef';\r\n\r\nexport class EntityDataServiceBase extends ApiServiceBase\r\n{\r\n public entityConfig: EntityConfig;\r\n\r\n public get_WebApiMethod: string;\r\n public getById_WebApiMethod: string;\r\n public insert_WebApiMethod: string;\r\n public update_WebApiMethod: string;\r\n public delete_WebApiMethod: string;\r\n public undelete_WebApiMethod: string;\r\n\r\n // Properties for Domain Specific Entities\r\n public canRead: boolean;\r\n public canEdit: boolean;\r\n\r\n public entityDisplayName: string;\r\n\r\n constructor(protected http: HttpClient,\r\n // MUST specify the entity name in the implementing class - this drives the lookup\r\n // of the entity config - which drives the behavior of this service\r\n public entityName: string)\r\n {\r\n super(http);\r\n\r\n Guard.argumentNotBlankOrNull(entityName, \"entityName\");\r\n\r\n // Get the Entity Config (this allows implementing classes to override this)\r\n this.loadEntityConfig();\r\n\r\n this.apiUrl = this.entityConfig.apiUrl;\r\n this.canRead = this.entityConfig.canRead;\r\n this.canEdit = this.entityConfig.canEdit;\r\n\r\n this.entityDisplayName = this.entityConfig.entityDisplayName;\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n Guard.failIfTrue(!AppClientContext.Instance.entityConfigDict, `${this.entityName} entity config dict has not been loaded yet`);\r\n\r\n // Get the Entity Config\r\n if (!AppClientContext.Instance.entityConfigDict.has(this.entityName))\r\n {\r\n Tools.throwException(\"Missing EntityConfig in ClientContext.entityConfigDict for entity: {0}\".format(this.entityName));\r\n }\r\n\r\n this.entityConfig = AppClientContext.Instance.entityConfigDict.get(this.entityName);\r\n }\r\n\r\n // Used to temporarily use a different ApiUrl for the entity\r\n protected useCustomApiUrl(customApiUrlString: string): void\r\n {\r\n this.apiUrl = customApiUrlString;\r\n }\r\n\r\n //Used to to restore the entity's ApiUrl\r\n protected restoreApiUrl(): void\r\n {\r\n this.apiUrl = this.entityConfig.apiUrl;\r\n }\r\n\r\n public get(queryDef: UrlQueryDef = null, pageSize: number = 100, pageNumber: number = 0): Observable>\r\n {\r\n //Required for pagination\r\n queryDef = this._getQueryDef(queryDef);\r\n\r\n if (queryDef.pagingActive)\r\n {\r\n queryDef.top = pageSize;\r\n queryDef.skip = pageSize * pageNumber;\r\n queryDef.params = {\r\n pageSize,\r\n pageNumber,\r\n $count: 'true'\r\n };\r\n }\r\n else { queryDef.params = {}; }\r\n\r\n var subject = this.http.get>(this.createUrl(this.get_WebApiMethod), queryDef.getRequestConfig())\r\n .pipe(\r\n map((pageResult: any) => ({\r\n total: pageResult.totalCount,\r\n rows: pageResult.items,\r\n pageSize: queryDef.params.pageSize,\r\n pageNumber: queryDef.params.pageNumber\r\n } as IPage)),\r\n share());\r\n\r\n this._handleObservableResponse(subject);\r\n\r\n return subject;\r\n }\r\n\r\n public getById(id: number, queryDef: UrlQueryDef = new UrlQueryDef()): Observable<{}>\r\n {\r\n let observable = this.http.get(this.createUrl(this.getById_WebApiMethod, id), queryDef.getRequestConfig()).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n public update(entity: any, config?: any): Observable<{}>\r\n {\r\n\r\n let observable = this.http.put(this.createUrl(this.update_WebApiMethod), entity, this.getStandardConfig(config)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n public insert(entity: any, config?: any): Observable<{}>\r\n {\r\n\r\n let observable = this.http.post(this.createUrl(this.insert_WebApiMethod), entity, this.getStandardConfig(config)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n public delete(id: number, config?: any): Observable<{}>\r\n {\r\n var observable = this.http.delete(this.createUrl(this.delete_WebApiMethod, id), this.getStandardConfig(config)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n // *********************************************************\r\n // #region Support Methods\r\n // *********************************************************\r\n\r\n public checkCanRead()\r\n {\r\n Guard.failIfFalse(this.canRead, \"User is not authorized to Read the {0} entity.\".format(this.entityConfig.entityName));\r\n }\r\n\r\n public checkCanEdit()\r\n {\r\n Guard.failIfFalse(this.canEdit, \"User is not authorized to Edit the {0} entity.\".format(this.entityConfig.entityName));\r\n }\r\n\r\n public _getQueryDef(queryDef: UrlQueryDef): UrlQueryDef\r\n {\r\n if (queryDef == null)\r\n {\r\n queryDef = new UrlQueryDef();\r\n }\r\n\r\n return queryDef;\r\n }\r\n\r\n protected getStandardConfig(config: any): UrlQueryDef\r\n {\r\n if (!config)\r\n {\r\n config = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n }\r\n\r\n return config;\r\n }\r\n\r\n public getPaginationQueryDef(queryDef: UrlQueryDef = null, pageSize: number = 100, pageNumber: number = 0): UrlQueryDef\r\n {\r\n //Required for pagination\r\n queryDef = this._getQueryDef(queryDef);\r\n\r\n if (queryDef.pagingActive)\r\n {\r\n queryDef.top = pageSize;\r\n queryDef.skip = pageSize * pageNumber;\r\n queryDef.params = {\r\n ...queryDef.params,\r\n pageSize,\r\n pageNumber,\r\n $count: 'true'\r\n };\r\n }\r\n\r\n return queryDef;\r\n }\r\n\r\n public getPageValues(observableRequest: Observable>>, queryDef: UrlQueryDef): Observable>\r\n {\r\n return observableRequest\r\n .pipe(\r\n map((pageResult: any) => ({\r\n total: pageResult.totalCount,\r\n rows: pageResult.items,\r\n pageSize: queryDef.params.pageSize,\r\n pageNumber: queryDef.params.pageNumber\r\n } as IPage)),\r\n share()\r\n );\r\n }\r\n\r\n // #endregion\r\n\r\n}\r\n","\r\nexport interface ISetup\r\n{\r\n id: number;\r\n prescriptionId: number;\r\n caseFileId: number;\r\n currentStep: number;\r\n}\r\n\r\nexport class Setup\r\n{\r\n public id: number;\r\n public prescriptionId: number;\r\n public caseFileId: number;\r\n public currentStep: number;\r\n constructor() { }\r\n}\r\n","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Section } from \"src/app/_appCommon/base/AppInterfaceAndBaseClasses\";\r\n\r\nexport class UrlQueryDef\r\n{\r\n\r\n // ********************************************************************\r\n //#region Properties / Variables\r\n // ********************************************************************\r\n\r\n public includes: string;\r\n public pagingActive: boolean = true;\r\n\r\n public domainSpecificContextId?: number;\r\n\r\n /**\r\n * {Object.}\r\n * Map of strings or objects which will be turned to ?key1=value1&key2=value2 after the url. If the value is not a string, it will be JSONified.\r\n */\r\n public params: any;\r\n\r\n /**\r\n * If true - and if the Entity supports soft deletes - then deleted rows will be included in the results\r\n */\r\n public includeDeletedRows: boolean = false;\r\n\r\n /**\r\n * Expands related entities inline.\r\n *\r\n * Examples:\r\n * Enrollments\r\n * Enrollments/Course\r\n */\r\n public expand: string;\r\n\r\n /**\r\n * Selects which properties to include in the response.\r\n *\r\n * NOTE: To select properties from child entities, they must be included in the expand list.\r\n *\r\n * Examples:\r\n * Id,LastName - Gets the Id and LastName properties of the entity\r\n * Id,LastName,Enrollments - Gets the Id, LastName properties of the entity - and also the Enrollments child object collection\r\n * Id,LastName,Enrollments/CourseID - Gets the Id, LastName properties of the entity - and also the CourseID property of the Enrollments child object collection\r\n */\r\n public select: string;\r\n\r\n /**\r\n * Filters the results, based on a Boolean condition.\r\n *\r\n * (Note: the operators ARE case sensitive - and must be all lower case)\r\n *\r\n * Supported Operators: eq, ne, gt, ge, lt, le, and, or, not\r\n * Grouping Operator: ()\r\n * Examples:\r\n * Id gt 5\r\n * Id gt 5 and LastName gt 'r'\r\n *\r\n * Special Operators:\r\n * startswith: startswith(LastName, 'mario')\r\n * endswith: endswith(LastName, 'arado')\r\n * substringof: (contains): substringof('zz', LastName)\r\n * and: startswith(LastName, 'a') and Id lt 3\r\n *\r\n * Date Filters (examples - likely more options):\r\n * year: year(EnrollmentDate) lt 2010\r\n * month: month(EnrollmentDate) gt 11\r\n *\r\n * Most likely there are other filtering operations available.\r\n */\r\n\r\n public filter: string;\r\n\r\n /**\r\n * Sorts the results.\r\n *\r\n * Examples:\r\n * LastName\r\n * EnrollmentDate desc,LastName\r\n */\r\n public orderby: string;\r\n\r\n /**\r\n * Returns only the first N results\r\n */\r\n public top: number;\r\n\r\n /**\r\n * Skips the first N results\r\n */\r\n public skip: number;\r\n\r\n public keyword: any;\r\n /**\r\n * Page where we are\r\n */\r\n public pageNo: number;\r\n /**\r\n * Number of records to display per page\r\n */\r\n public pageSize: number;\r\n /**\r\n * Filter word\r\n */\r\n public searchWord: string;\r\n public sortBy: any;\r\n public descending: any;\r\n\r\n\r\n // #endregion\r\n\r\n // ********************************************************************\r\n //#region Methods\r\n // ********************************************************************\r\n\r\n /** Method to add HttpParams into our request. Accepts a pair */\r\n public addParam(name: string, value: any)\r\n {\r\n if (this.params == null) { this.params = {}; }\r\n\r\n this.params[name] = value;\r\n }\r\n\r\n public getRequestConfig(noParams = false): any\r\n {\r\n let headers = new HttpHeaders();\r\n\r\n headers = headers.append('Content-Type','application/json');\r\n headers = headers.append('SECTION',Section.Ecommerce.toString());\r\n\r\n const requestConfig = {\r\n params: noParams ? null : this._getParamsMap(),\r\n headers: headers\r\n };\r\n\r\n return requestConfig;\r\n }\r\n\r\n // #endregion\r\n\r\n // ********************************************************************\r\n //#region Support Methods\r\n // ********************************************************************\r\n\r\n private _getParamsMap(): HttpParams\r\n {\r\n let paramsMap = new HttpParams();\r\n\r\n if (this.params != null)\r\n {\r\n // Add properties from params to params map\r\n for (var paramName in this.params)\r\n {\r\n paramsMap = paramsMap.append(paramName, this.params[paramName]);\r\n }\r\n }\r\n\r\n if (this.includes != null)\r\n {\r\n paramsMap = paramsMap.append(\"includes\", this.includes);\r\n }\r\n\r\n if (this.includeDeletedRows != null)\r\n {\r\n paramsMap = paramsMap.append(\"includeDeletedRows\", this.includeDeletedRows.toString());\r\n }\r\n\r\n if (this.domainSpecificContextId)\r\n {\r\n paramsMap = paramsMap.append(\"domainSpecificContextIds\", this.domainSpecificContextId.toString());\r\n }\r\n\r\n // WebApi - ODATA parameters\r\n if (this.expand != null) { paramsMap = paramsMap.append(\"$expand\", this.expand); }\r\n if (this.select != null) { paramsMap = paramsMap.append(\"$select\", this.select); }\r\n if (this.filter != null) { paramsMap = paramsMap.append(\"$filter\", this.filter); }\r\n if (this.orderby != null) { paramsMap = paramsMap.append(\"$orderby\", this.orderby); }\r\n if (this.top != null) { paramsMap = paramsMap.append(\"$top\", this.top.toString()); }\r\n if (this.skip != null) { paramsMap = paramsMap.append(\"$skip\", this.skip.toString()); }\r\n if (this.keyword != null) { paramsMap = paramsMap.append(\"keyword\", this.keyword.toString()); }\r\n if (this.searchWord != null) { paramsMap = paramsMap.append(\"searchWord\", this.searchWord.toString()); }\r\n if (this.pageNo != null) { paramsMap = paramsMap.append(\"pageNo\", this.pageNo.toString()); }\r\n if (this.pageSize != null) { paramsMap = paramsMap.append(\"pageSize\", this.pageSize.toString()); }\r\n if (this.sortBy != null) { paramsMap = paramsMap.append(\"sortBy\", this.sortBy.toString()); }\r\n if (this.descending != null) { paramsMap = paramsMap.append(\"descending\", this.descending); }\r\n\r\n return paramsMap;\r\n }\r\n\r\n //#endregion\r\n}\r\n","export interface IUser\r\n{\r\n id: number;\r\n loginId: string;\r\n\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n\r\n loginCount: number;\r\n createdDate: Date;\r\n lastUpdatedDate: Date;\r\n\r\n isDeleted: boolean;\r\n isAccountLocked: boolean;\r\n accountLockedReason: string;\r\n lastLoginDate: Date;\r\n allowInteractiveLogin: boolean;\r\n passwordResetRequired: boolean;\r\n passwordResetTempPasswordTimeoutDate: Date;\r\n passwordLastResetDate: Date;\r\n\r\n permissions: string[];\r\n\r\n havePermission(permissionCode: string): boolean\r\n}\r\n\r\nexport class User\r\n{\r\n public id: number;\r\n public loginId: string;\r\n\r\n public firstName: string;\r\n public lastName: string;\r\n public email: string;\r\n\r\n public loginCount: number;\r\n public createdDate: Date;\r\n public lastUpdatedDate: Date;\r\n\r\n public isDeleted: boolean;\r\n public isAccountLocked: boolean;\r\n public accountLockedReason: string;\r\n public lastLoginDate: Date;\r\n public allowInteractiveLogin: boolean;\r\n public passwordResetRequired: boolean;\r\n public passwordResetTempPasswordTimeoutDate: Date;\r\n public passwordLastResetDate: Date;\r\n\r\n public permissions: string[];\r\n public resourceNames: string[];\r\n\r\n constructor() { }\r\n\r\n public havePermission(permissionCode: string): boolean\r\n {\r\n return this.permissions.any(permission => permission === permissionCode);\r\n }\r\n\r\n}\r\n","// OUTSIDE of a Module, thus, global\r\ninterface Array\r\n{\r\n /**\r\n * Clears the contents of an array\r\n * NOTE: This one I wrote (jtp)\r\n */\r\n clear(): void;\r\n\r\n /**\r\n * Returns true if this list contains no mappings.\r\n * @return {boolean} true if this list contains no mappings.\r\n */\r\n isEmpty(): boolean;\r\n\r\n add(value: T): void\r\n addRange(array: Array): void\r\n\r\n /** Determines whether any element of the array satisfies a condition. */\r\n any(predicate?: (element: T) => boolean): boolean;\r\n\r\n /** Determines whether the array contains a specified element by using the default equality comparer. */\r\n contains(value: T): boolean;\r\n\r\n select(selector: (element: T, index: number) => TResult): Array;\r\n\r\n /** Filters a sequence of values based on a predicate. */\r\n where(predicate: (element: T, index: number) => boolean): Array;\r\n\r\n /** Returns the first value if present, or null if not. */\r\n firstOrNull(): T;\r\n\r\n /** Shuffles the array in random order. */\r\n shuffle(): void;\r\n\r\n // ************************************************************\r\n // The following are from MDN - polyfills of future Array stuff\r\n // ************************************************************\r\n\r\n /**\r\n * The includes() method determines whether an array includes a certain element, returning true or false as appropriate.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\r\n *\r\n * Syntax: var boolean = array.includes(searchElement[, fromIndex])\r\n *\r\n * Parameters:\r\n * searchElement: The element to search for.\r\n * fromIndex: Optional.The position in this array at which to begin searching for searchElement.A negative value searches from the end of the array.Defaults to 0.\r\n *\r\n * Return value: A Boolean.\r\n */\r\n includes(searchElement: any): boolean;\r\n\r\n /**\r\n * The find() method returns a value in the array, if an element in the array satisfies the provided testing function. Otherwise undefined is returned.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\r\n *\r\n * Syntax: arr.find(callback[, thisArg])\r\n *\r\n * Parameters:\r\n * callback: Function to execute on each value in the array, taking three arguments:\r\n * element: The current element being processed in the array.\r\n * index: The index of the current element being processed in the array.\r\n * array: The array find was called upon.\r\n *\r\n * thisArg: Optional.Object to use as this when executing callback.\r\n */\r\n find(predicate: (element: T, index: number, array: Array) => boolean): T;\r\n\r\n /**\r\n * The findIndex() method returns an index in the array, if an element in the array satisfies the provided testing function. Otherwise - 1 is returned.\r\n * See also the find() method, which returns the value of a found element in the array instead of its index.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\r\n *\r\n * Syntax: arr.findIndex(callback[, thisArg])\r\n *\r\n * Parameters:\r\n * callback: Function to execute on each value in the array, taking three arguments:\r\n * element: The current element being processed in the array.\r\n * index: The index of the current element being processed in the array.\r\n * array: The array findIndex was called upon.\r\n *\r\n * thisArg: Optional.Object to use as this when executing callback.\r\n */\r\n findIndex(predicate: (element: T, index: number, array: Array) => boolean): number;\r\n}\r\n\r\n// ************************************************************\r\n// These are our extensions to Array\r\n// ************************************************************\r\n\r\n\r\nif (!Array.prototype.clear)\r\n{\r\n Array.prototype.clear = function ()\r\n {\r\n this.length = 0;\r\n };\r\n}\r\n\r\nif (!Array.prototype.isEmpty)\r\n{\r\n Array.prototype.isEmpty = function ()\r\n {\r\n return this.length === 0;\r\n };\r\n}\r\n\r\nif (!Array.prototype.add)\r\n{\r\n Array.prototype.add = function (value)\r\n {\r\n this.push(value);\r\n };\r\n}\r\n\r\nif (!Array.prototype.addRange)\r\n{\r\n Array.prototype.addRange = function (array)\r\n {\r\n array.forEach(a => this.push(a));\r\n };\r\n}\r\n\r\nif (!Array.prototype.any)\r\n{\r\n Array.prototype.any = function (predicate: any)\r\n {\r\n if (this.find(predicate))\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n };\r\n}\r\n\r\nif (!Array.prototype.contains)\r\n{\r\n Array.prototype.contains = function (value)\r\n {\r\n let match: boolean = false;\r\n\r\n this.forEach((item: any) =>\r\n {\r\n if (item == value)\r\n {\r\n match = true;\r\n }\r\n });\r\n\r\n return match;\r\n };\r\n}\r\n\r\nif (!Array.prototype.select)\r\n{\r\n Array.prototype.select = function (selector: any)\r\n {\r\n if (typeof selector !== 'function') { throw new TypeError('selector must be a function'); }\r\n\r\n let results: any[] = [];\r\n\r\n let thisArg = arguments[1];\r\n\r\n this.forEach((value: any, index: number) =>\r\n {\r\n results.push(\r\n selector.call(thisArg, value, index)\r\n );\r\n });\r\n\r\n return results;\r\n };\r\n}\r\n\r\nif (!Array.prototype.where)\r\n{\r\n Array.prototype.where = function (predicate)\r\n {\r\n if (typeof predicate !== 'function') { throw new TypeError('predicate must be a function'); }\r\n\r\n let results: any[] = [];\r\n\r\n let thisArg = arguments[1];\r\n\r\n this.forEach((item: any) =>\r\n {\r\n if (predicate.call(thisArg, item))\r\n {\r\n results.push(item);\r\n }\r\n });\r\n\r\n return results;\r\n };\r\n}\r\n\r\nif (!Array.prototype.firstOrNull)\r\n{\r\n Array.prototype.firstOrNull = function ()\r\n {\r\n if (this.length == 0) { return null; }\r\n else { return this[0]; }\r\n };\r\n}\r\n\r\n// ************************************************************\r\n// The following are from MDN - polyfills of future Array stuff\r\n// ************************************************************\r\n\r\nif (!Array.prototype.includes)\r\n{\r\n Array.prototype.includes = function (searchElement: any /*, fromIndex*/)\r\n {\r\n 'use strict';\r\n let O = Object(this);\r\n let len = parseInt(O.length) || 0;\r\n if (len === 0)\r\n {\r\n return false;\r\n }\r\n let n = parseInt(arguments[1]) || 0;\r\n let k;\r\n if (n >= 0)\r\n {\r\n k = n;\r\n }\r\n else\r\n {\r\n k = len + n;\r\n if (k < 0) { k = 0; }\r\n }\r\n let currentElement;\r\n while (k < len)\r\n {\r\n currentElement = O[k];\r\n if (searchElement === currentElement ||\r\n (searchElement !== searchElement && currentElement !== currentElement))\r\n { // NaN !== NaN\r\n return true;\r\n }\r\n k++;\r\n }\r\n return false;\r\n };\r\n}\r\n\r\nif (!Array.prototype.find)\r\n{\r\n Array.prototype.find = function (predicate: any)\r\n {\r\n if (this === null)\r\n {\r\n throw new TypeError('Array.prototype.find called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function')\r\n {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n let list = Object(this);\r\n let length = list.length >>> 0;\r\n let thisArg = arguments[1];\r\n let value;\r\n\r\n for (let i = 0; i < length; i++)\r\n {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list))\r\n {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n };\r\n}\r\n\r\nif (!Array.prototype.findIndex)\r\n{\r\n Array.prototype.findIndex = function (predicate: any)\r\n {\r\n if (this === null)\r\n {\r\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function')\r\n {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n let list = Object(this);\r\n let length = list.length >>> 0;\r\n let thisArg = arguments[1];\r\n let value;\r\n\r\n for (let i = 0; i < length; i++)\r\n {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list))\r\n {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\nif (!Array.prototype.shuffle)\r\n{\r\n Array.prototype.shuffle = function ()\r\n {\r\n for (let i = this.length - 1; i > 0; i--)\r\n {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [this[i], this[j]] = [this[j], this[i]];\r\n }\r\n };\r\n}\r\n","import { StringTools } from \"./StringTools\";\r\nimport { Tools } from \"./Tools\";\r\n\r\nexport class Guard\r\n{\r\n /**\r\n * Checks an argument to ensure it isn't blank or null\r\n */\r\n public static argumentNotBlankOrNull(argumentValue: string, argumentName: string)\r\n {\r\n if (StringTools.isBlankOrNull(argumentValue))\r\n {\r\n let exceptionMessage = `Argument ${argumentName} cannot be null or blank.`;\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Checks an argument to ensure it isn't blank or null\r\n */\r\n public static valueNotBlankOrNull(value: any, exceptionMessage: string)\r\n {\r\n if (StringTools.isBlankOrNull(value))\r\n {\r\n\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Checks an argument to ensure it isn't null\r\n */\r\n public static argumentNotNull(argumentValue: any, argumentName: string)\r\n {\r\n if (argumentValue == null)\r\n {\r\n let exceptionMessage = `Argument ${argumentName} cannot be null.`;\r\n\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Checks an argument to ensure it isn't null\r\n */\r\n public static valueNotNull(value: any, exceptionMessage: string)\r\n {\r\n if (value == null)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is true\r\n */\r\n public static failIfTrue(value: boolean, exceptionMessage: string)\r\n {\r\n if (value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is false\r\n */\r\n public static failIfFalse(value: boolean, exceptionMessage: string)\r\n {\r\n if (!value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is NOT true\r\n */\r\n public static isTrue(value: boolean, exceptionMessage: string)\r\n {\r\n if (!value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is NOT false\r\n */\r\n public static isFalse(value: boolean, exceptionMessage: string)\r\n {\r\n if (value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n}\r\n","import { Guard } from './Guard';\r\n\r\nexport class StringTools\r\n{\r\n public static isUndefinedOrNull(o: any): boolean\r\n {\r\n /* if (angular.isUndefined(o) || o === null)\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }*/\r\n\r\n return true;\r\n }\r\n\r\n public static notBlankOrNull(s: string): boolean\r\n {\r\n return !StringTools.isBlankOrNull(s);\r\n }\r\n\r\n public static isBlankOrNull(s: string): boolean\r\n {\r\n let isString = typeof s === \"string\";\r\n\r\n if (s == null || (isString && s.trim().length === 0)) { return true; }\r\n else { return false; }\r\n }\r\n\r\n /**\r\n * Return the original value - which might be a class or property name and splits it into separate words\r\n */\r\n public static getHeadingFromFieldName(fieldName: string)\r\n {\r\n if (StringTools.isBlankOrNull(fieldName)) { return \"\"; }\r\n\r\n let output = fieldName\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/([A-Z])([a-z])/g, ' $1$2')\r\n .replace(/([a-z])([0-9])/g, '$1 $2')\r\n .replace(/([A-Z])([0-9])/g, '$1 $2')\r\n .replace(/\\s/g, \"\")\r\n .trim();\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Return the original value - which might be a class or property name and splits it into separate words,\r\n * separated by \"-\" and all lower case to be used as an Angular component name.\r\n * Example: Converts MyComponentName to my-component-name\r\n */\r\n public static getComponentNameFromFieldName(fieldName: string)\r\n {\r\n if (StringTools.isBlankOrNull(fieldName)) { return \"\"; }\r\n\r\n let output = StringTools.getHeadingFromFieldName(fieldName)\r\n .replace(/\\s/g, \"-\")\r\n .toLowerCase();\r\n\r\n return output;\r\n }\r\n\r\n public static toCamelCase(name: string): string\r\n {\r\n return name[0].toLowerCase() + name.slice(1);\r\n }\r\n\r\n public static initialToUpper(name: string): string\r\n {\r\n return name[0].toUpperCase() + name.slice(1);\r\n }\r\n\r\n public static initialToLower(name: string): string\r\n {\r\n return name[0].toLowerCase() + name.slice(1);\r\n }\r\n\r\n public static createRandomString(length: number)\r\n {\r\n Guard.failIfTrue(length > 20, \"length cannot be > 20\");\r\n return Math.random().toString(36).slice(-length);\r\n }\r\n\r\n public static padNumber(numberToPad: number, minDigits: number): string\r\n {\r\n return numberToPad.toLocaleString('en-US',\r\n {\r\n style: 'decimal',\r\n minimumIntegerDigits: minDigits,\r\n useGrouping: false\r\n });\r\n }\r\n\r\n public static replaceAll(str: string, search: string, replace: string): string\r\n {\r\n return str.split(search).join(replace);\r\n }\r\n\r\n public static splice(str: string, index: number, deleteCount: number, stringToInsert: string): string\r\n {\r\n let charArray = str.split('');\r\n charArray.splice(index, deleteCount, stringToInsert);\r\n return charArray.join('');\r\n }\r\n\r\n public static formatNumber(input: string, numberOfDecimalPlaces: number): string\r\n {\r\n return input;\r\n }\r\n}\r\n","export class Tools\r\n{\r\n public static css_rule_set(selector: any, property: any, value: any, important: any)\r\n {\r\n for (let i = document.styleSheets.length - 1; i >= 0; i--)\r\n {\r\n try\r\n {\r\n let ss = document.styleSheets[i];\r\n let r: any = ss.cssRules ? ss.cssRules : [];\r\n\r\n for (let j = 0; j < r.length; j++)\r\n {\r\n if (r[j].selectorText && r[j].selectorText == selector)\r\n {\r\n if (typeof important == 'undefined')\r\n {\r\n r[j].style.setProperty(property, value);\r\n }\r\n else\r\n {\r\n r[j].style.setProperty(property, value, 'important');\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n catch (e)\r\n {\r\n }\r\n }\r\n }\r\n\r\n public static getOffset()\r\n {\r\n return (new Date()).getTimezoneOffset();\r\n }\r\n\r\n /**\r\n * Merge the contents of two or more objects together into the first object.\r\n * Returns the merged object.\r\n *\r\n * @param deep If true, the merge becomes recursive (aka. deep copy).\r\n * @param target The object to extend. It will receive the new properties\r\n * @param object1 An object containing additional properties to merge in.\r\n * @param objectN Additional objects containing properties to merge in.\r\n */\r\n public static extend(deep: boolean, target: any, object1?: any, ...objectN: any[]): any\r\n {\r\n let i = 0;\r\n let length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]')\r\n {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n let merge = function (obj: any)\r\n {\r\n for (let prop in obj)\r\n {\r\n if (Object.prototype.hasOwnProperty.call(obj, prop))\r\n {\r\n // If deep merge and property is an object, merge properties\r\n if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]')\r\n {\r\n target[prop] = Tools.extend(true, target[prop], obj[prop]);\r\n }\r\n else\r\n {\r\n target[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for (; i < length; i++)\r\n {\r\n let obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * Redirects for any given route\r\n */\r\n public static redirectToRoute(routeName: string, message?: any)\r\n {\r\n }\r\n\r\n /**\r\n * Displays the app Exception page\r\n */\r\n public static displayExceptionPage(message?: any)\r\n {\r\n Tools.redirectToRoute(\"exception\", message);\r\n }\r\n /**\r\n * Throws any given exception and redirects you to an exception page\r\n * If an url param DoNotRedirect is set, it will throw the exception\r\n *\r\n * @param exceptionMessage The exception message.\r\n */\r\n public static throwException(exceptionMessage: string)\r\n {\r\n Tools.displayExceptionPage();\r\n }\r\n /**\r\n * Validates if the string value is part of the enum.\r\n */\r\n public static isValidEnumValue(value: string, enumeration: object): boolean\r\n {\r\n if (value === undefined || value == null || value === '')\r\n {\r\n return false;\r\n }\r\n\r\n for (let key in enumeration)\r\n {\r\n if (value === enumeration[key])\r\n {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n\r\n // ********************************************************************************\r\n // #region Filter Helpers\r\n // ********************************************************************************\r\n\r\n\r\n public static filterString(value: string, data: any[]): string[]\r\n {\r\n let filterValue = value.toLowerCase();\r\n\r\n return data.filter(option => option.toLowerCase().includes(filterValue));\r\n }\r\n\r\n public static filterObjectName(value: string, data: any[]): string[]\r\n {\r\n let filterValue = value.toLowerCase();\r\n\r\n return data.filter(option => option.name.toLowerCase().indexOf(filterValue) >= 0);\r\n }\r\n\r\n public static groupBy(date: any[], key)\r\n {\r\n return date.reduce((result, currentValue) =>\r\n {\r\n (result[currentValue[key]] = result[currentValue[key]] || []).\r\n push(currentValue);\r\n return result;\r\n }, {});\r\n };\r\n\r\n public static sortingDataAccessor(item, property)\r\n {\r\n if (property.includes('.'))\r\n {\r\n return property.split('.')\r\n .reduce((object, key) => object[key], item);\r\n }\r\n return item[property];\r\n }\r\n\r\n public static compare(a: number | string, b: number | string, isAsc: boolean)\r\n {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n // #endregion Filters\r\n\r\n}\r\n","import { Observable } from 'rxjs';\r\nimport { share } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { EntityConfig } from '../_appCommon/base/EntityConfig';\r\nimport { UrlQueryDef } from 'src/app/_appCommon/base/UrlQueryDef';\r\nimport { EntityDataServiceBase } from '../_appCommon/base/EntityDataServiceBase';\r\n\r\n@Injectable()\r\nexport class ClinicDataService extends EntityDataServiceBase\r\n{\r\n private getClinicByCustomerId_WebApiMethod: string = \"getClinicByCustomerId\";\r\n private createClinic_WebApiMethod: string = \"createClinic\";\r\n private updateClinic_WebApiMethod: string = \"updateClinic\";\r\n\r\n constructor(protected http: HttpClient)\r\n {\r\n super(http, 'clinic');\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n this.entityConfig = new EntityConfig();\r\n this.entityConfig.entityDisplayName = 'clinic';\r\n this.entityConfig.apiUrl = 'api/Clinic';\r\n }\r\n\r\n public getClinicByCustomerId(customerId: number): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.get(this.createUrl(this.getClinicByCustomerId_WebApiMethod + \"/\" + customerId), queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public createClinic(body: any): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.post(this.createUrl(this.createClinic_WebApiMethod), body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public updateClinic(body: any): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.put(this.createUrl(this.updateClinic_WebApiMethod), body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n}\r\n\r\n","import { Observable } from 'rxjs';\r\nimport { share } from 'rxjs/operators';\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { EntityConfig } from '../_appCommon/base/EntityConfig';\r\nimport { UrlQueryDef } from 'src/app/_appCommon/base/UrlQueryDef';\r\nimport { EntityDataServiceBase } from '../_appCommon/base/EntityDataServiceBase';\r\n\r\n@Injectable()\r\nexport class CustomerDataService extends EntityDataServiceBase\r\n{\r\n private getCustomerByUserId_WebApiMethod: string = \"getCustomerByUserId\";\r\n private createCustomer_WebApiMethod: string = \"\";\r\n private updateCustomer_WebApiMethod: string = \"\";\r\n\r\n constructor(protected http: HttpClient)\r\n {\r\n super(http, 'customer');\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n this.entityConfig = new EntityConfig();\r\n this.entityConfig.entityName = 'customer';\r\n this.entityConfig.apiUrl = 'api/Customer';\r\n }\r\n\r\n public getByUserId(userId: number): Observable<{}>\r\n {\r\n let queryDef = new UrlQueryDef();\r\n queryDef.filter = 'UserId eq ' + userId;\r\n let observable = this.http.get(this.apiUrl, queryDef.getRequestConfig()).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public getCustomerByUserId(userId: number): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.get(this.createUrl(this.getCustomerByUserId_WebApiMethod + \"/\" + userId), queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public createCustomer(body: any): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.post(this.createUrl(this.createCustomer_WebApiMethod), body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public updateCustomer(body: any): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.put(this.createUrl(this.updateCustomer_WebApiMethod), body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { share } from 'rxjs/operators';\r\nimport { EntityConfig } from '../_appCommon/base/EntityConfig';\r\nimport { EntityDataServiceBase } from '../_appCommon/base/EntityDataServiceBase';\r\nimport { UrlQueryDef } from '../_appCommon/base/UrlQueryDef';\r\n\r\n@Injectable()\r\nexport class IncompleteUsersDataService extends EntityDataServiceBase\r\n{\r\n constructor(protected http: HttpClient)\r\n {\r\n super(http, 'IncompleteUsers');\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n this.entityConfig = new EntityConfig();\r\n\r\n this.entityConfig.entityDisplayName = 'IncompleteUsers';\r\n this.entityConfig.apiUrl = 'api/IncompleteUsers';\r\n }\r\n\r\n public deleteIncompleteUser(body)\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.put(this.entityConfig.apiUrl + \"/deleteIncompleteUser\", body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n}\r\n\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\n\r\nexport const slideDown = trigger('slideDown', [\r\n state('open', style({\r\n padding: '40px 20px',\r\n height: 'auto',\r\n visibility: 'visible',\r\n })),\r\n state('closed', style({\r\n height: '0',\r\n opacity: 0,\r\n visibility: 'hidden',\r\n })),\r\n transition('open <=> closed', [\r\n animate('0.6s cubic-bezier(.4,0,.2,1)')\r\n ]),\r\n]);\r\n\r\nexport const slideRightToLeft = trigger('slideRightToLeft', [\r\n state('final', style({\r\n transform: 'translateX(0%)',\r\n opacity: 1,\r\n })),\r\n state('initial', style({\r\n transform: 'translateX(100%)',\r\n opacity: 0\r\n })),\r\n transition('initial <=> final', [\r\n animate('1s ease')\r\n ]),\r\n]);\r\n\r\nexport const slideLeftToRight = trigger('slideLeftToRight', [\r\n state('final', style({\r\n transform: 'translateX(0%)',\r\n opacity: 1,\r\n })),\r\n state('initial', style({\r\n transform: 'translateX(-100%)',\r\n opacity: 0\r\n })),\r\n transition('initial <=> final', [\r\n animate('1s ease')\r\n ]),\r\n]);\r\n\r\nexport const slideTopToBottom = trigger('slideTopToBottom', [\r\n state('final', style({\r\n transform: 'translateY(0%)',\r\n opacity: 1,\r\n })),\r\n state('initial', style({\r\n transform: 'translateY(-100%)',\r\n opacity: 0\r\n })),\r\n transition('initial <=> final', [\r\n animate('1s ease')\r\n ]),\r\n]);\r\n\r\nexport const scaleContent = trigger('scaleContent', [\r\n state('final', style({\r\n transform: 'scale(1)',\r\n })),\r\n state('initial', style({\r\n transform: 'scale(0.7)',\r\n })),\r\n transition('initial <=> final', [\r\n animate('1s ease')\r\n ]),\r\n]);\r\n\r\n","export enum AlertType { Success, Info, Warning, Danger }\r\nimport * as Toastr from 'toastr';\r\n\r\n/**\r\n* Class for notification area alerts\r\n*/\r\nexport class Alert\r\n{\r\n public alert: Toastr;\r\n\r\n constructor(public alertType: AlertType, message: string, title: string = null)\r\n {\r\n this.alert = Toastr;\r\n\r\n this.alert.options = {\r\n \"closeButton\": true,\r\n \"debug\": false,\r\n \"positionClass\": \"toast-bottom-right\",\r\n \"preventDuplicates\": false,\r\n \"onclick\": null,\r\n \"showDuration\": 300,\r\n \"hideDuration\": 100,\r\n \"timeOut\": 3000,\r\n \"extendedTimeOut\": 1000,\r\n };\r\n\r\n var alertTypeText = this.AlertTypeText;\r\n\r\n if (title)\r\n {\r\n this.alert[alertTypeText](message, title);\r\n }\r\n else\r\n {\r\n this.alert[alertTypeText](message);\r\n }\r\n\r\n }\r\n\r\n public get alertClass()\r\n {\r\n var alertTypeText = \"\";\r\n\r\n switch (this.alertType)\r\n {\r\n case AlertType.Success: alertTypeText = \"success\"; break;\r\n case AlertType.Info: alertTypeText = \"info\"; break;\r\n case AlertType.Warning: alertTypeText = \"warning\"; break;\r\n case AlertType.Danger: alertTypeText = \"danger\"; break;\r\n }\r\n\r\n return \"alert alert-\" + alertTypeText + \" alert-dismissable\";\r\n }\r\n\r\n public get AlertTypeText(): string\r\n {\r\n var alertTypeText = \"\";\r\n\r\n switch (this.alertType)\r\n {\r\n case AlertType.Success: alertTypeText = \"success\"; break;\r\n case AlertType.Info: alertTypeText = \"info\"; break;\r\n case AlertType.Warning: alertTypeText = \"warning\"; break;\r\n case AlertType.Danger: alertTypeText = \"error\"; break;\r\n }\r\n\r\n return alertTypeText;\r\n }\r\n}\r\n","\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError as observableThrowError } from 'rxjs';\r\nimport { AppClientContext } from './AppClientContext';\r\n\r\nexport class ApiServiceBase\r\n{\r\n protected apiUrl: string;\r\n\r\n constructor(\r\n protected http: HttpClient\r\n )\r\n { }\r\n\r\n // ***********************************************************\r\n // Support Methods\r\n // ***********************************************************\r\n\r\n /**\r\n * Creates the relative url for the service call. Creates a url like: /api/myResource/myMethod/1/2/3\r\n *\r\n * @param method - examples: get, getById\r\n * @param identifiers (optional) - examples: 1, Mary. Can supply multiple\r\n */\r\n\r\n protected createUrl(method: string, ...identifiers: any[]): string\r\n {\r\n var returnValue = this.apiUrl;\r\n\r\n if (method)\r\n {\r\n returnValue = `${this.apiUrl}/` + method;\r\n }\r\n\r\n identifiers.forEach(identifier =>\r\n {\r\n //MT - Added null check\r\n if (identifier != null)\r\n {\r\n returnValue += \"/\" + identifier;\r\n }\r\n });\r\n\r\n return returnValue;\r\n }\r\n\r\n /**\r\n * Takes an Observable - and handles the success and fail conditions - including logging the results.\r\n */\r\n protected _handleObservableResponse(subject: Observable<{}>)\r\n {\r\n // Get random value - chop off the leading 0.\r\n let random = Math.random().toString().substring(2);\r\n\r\n let dataServiceTokenName = (this.constructor).name + \"_\" + random;\r\n\r\n AppClientContext.Instance.setDataServiceBusy(dataServiceTokenName);\r\n\r\n subject\r\n .subscribe(\r\n function (response)\r\n {\r\n try\r\n {\r\n\r\n }\r\n finally\r\n {\r\n AppClientContext.Instance.setDataServiceDone(dataServiceTokenName);\r\n }\r\n },\r\n function (errorData: any)\r\n {\r\n try\r\n {\r\n if (errorData && errorData.status)\r\n {\r\n\r\n }\r\n\r\n // Not Found\r\n if (errorData && errorData.status == 404)\r\n {\r\n\r\n return;\r\n }\r\n\r\n // Unauthorized\r\n if (errorData && errorData.status == 401)\r\n {\r\n if (errorData.statusText = \"Unauthorized\")\r\n {\r\n\r\n }\r\n else\r\n {\r\n window.location.href = \"/\";\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (errorData && errorData.status == 500)\r\n {\r\n // Not in cache\r\n if (errorData.error && errorData.error.message == \"User not in Cache... possibly timed out.\")\r\n {\r\n window.location.href = \"/\";\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Outage\r\n if (errorData && errorData.status == 503)\r\n {\r\n return;\r\n }\r\n }\r\n finally\r\n {\r\n AppClientContext.Instance.setDataServiceDone(dataServiceTokenName);\r\n }\r\n });\r\n }\r\n\r\n // handle errors\r\n protected handleError(response: Response, request: Request): Observable\r\n {\r\n if (response.status === 401)\r\n {\r\n\r\n }\r\n\r\n // handle server error\r\n if (response.status === 500)\r\n {\r\n\r\n }\r\n\r\n return observableThrowError(response);\r\n }\r\n}\r\n","import { InjectionToken, Injector, Type } from '@angular/core';\r\nimport { EntityConfig } from './EntityConfig';\r\nimport { Tools } from '../util/Tools';\r\nimport { User } from './User';\r\n\r\nexport class AppClientContext\r\n{\r\n public user: User;\r\n\r\n public applicationName: string = \"\";\r\n public appEnvironment: string = \"\";\r\n public isProductionEnvironment: boolean = false;\r\n\r\n public propertyBag: Map;\r\n public headerValues: Map = new Map();\r\n\r\n public entityConfigDict: Map;\r\n\r\n protected static instance: AppClientContext;\r\n\r\n static get Instance(): AppClientContext\r\n {\r\n if (this.instance === null || this.instance === undefined)\r\n {\r\n this.instance = new AppClientContext();\r\n }\r\n return this.instance;\r\n }\r\n\r\n /**\r\n * This is the angular Injector - used for dependency injection. Used by the getServiceInstance method.\r\n */\r\n private injector: Injector;\r\n\r\n public setInjector(injector: Injector)\r\n {\r\n this.injector = injector;\r\n }\r\n\r\n constructor() { }\r\n\r\n // ********************************************************\r\n // #region General Methods\r\n // ********************************************************\r\n\r\n public initialize(startupInfo: any)\r\n {\r\n let user = new User();\r\n\r\n // Copy properties from the json values into \"real\" user object\r\n Tools.extend(true, user, startupInfo.user);\r\n this.user = user;\r\n }\r\n\r\n public getServiceInstance(token: Type | InjectionToken, notFoundValue?: T): T\r\n {\r\n try\r\n {\r\n return this.injector.get(token, notFoundValue);\r\n }\r\n catch (e)\r\n {\r\n Tools.throwException(\"Error occurred getting service instance:\" + token);\r\n }\r\n }\r\n\r\n // #endregion\r\n\r\n // *****************************************\r\n // Busy related properties\r\n // *****************************************\r\n\r\n private busyDataServices: Map = new Map();\r\n\r\n private __isBusy: boolean = false;\r\n public get isBusy(): boolean\r\n {\r\n if (this.__isBusy || this.busyDataServices.size > 0) { return true; }\r\n else { return false; }\r\n }\r\n public set isBusy(value: boolean)\r\n {\r\n this.__isBusy = value;\r\n }\r\n\r\n public maxBusySeconds: number = 10;\r\n\r\n private _akkyRedirectUrl: string = \"https://extranet.rar.devl2.akky.proyectos.dvl.nic.com.mx\";\r\n\r\n public get akkyRedirectUrl(): string\r\n {\r\n return this._akkyRedirectUrl;\r\n }\r\n public set akkyRedirectUrl(value: string)\r\n {\r\n this._akkyRedirectUrl = value;\r\n }\r\n\r\n // #endregion\r\n\r\n // ********************************************************\r\n // #region Busy Related Methods\r\n // ********************************************************\r\n\r\n /**\r\n *\r\n * Notifies Client context that the data service is busy.\r\n This is used by the isBusy logic - to determine if the busy animation should show.\r\n */\r\n public setDataServiceBusy(dataServiceTokenName: string): void\r\n {\r\n if (!this.busyDataServices.has(dataServiceTokenName))\r\n {\r\n this.busyDataServices.set(dataServiceTokenName, dataServiceTokenName);\r\n }\r\n this.clearIsBusyIfStuck(true);\r\n }\r\n\r\n /**\r\n *\r\n * Notifies Client context that the data service is no longer busy.\r\n This is used by the isBusy logic - to determine if the busy animation should show.\r\n */\r\n public setDataServiceDone(dataServiceTokenName: string): void\r\n {\r\n if (this.busyDataServices.has(dataServiceTokenName))\r\n {\r\n this.busyDataServices.delete(dataServiceTokenName);\r\n }\r\n }\r\n\r\n private clearIsBusyIfStuck(isFirstPass?: boolean)\r\n {\r\n // If there aren't any busy data services, then we're not stuck - so no need to keep testing.\r\n if (this.busyDataServices.size == 0)\r\n {\r\n return;\r\n }\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { SafeUrl } from \"@angular/platform-browser\";\r\nimport \"./../util/ArrayExtensions\";\r\n\r\n// ********************************************************************************\r\n// #region Classes\r\n// ********************************************************************************\r\n\r\nexport class GlobalConstants\r\n{\r\n public static altProductImagePath: string = \"https://nf.aaoinfo.org/eweb/images/DEMO1/notavailable.jpg\";\r\n}\r\n\r\nexport interface Product {\r\n id: number;\r\n code: string;\r\n name: string;\r\n description: string;\r\n isDeleted: boolean;\r\n isActive: boolean;\r\n categoryId: number;\r\n categoryName: string;\r\n supplierId: number;\r\n supplierName: string;\r\n price: number;\r\n tax: number;\r\n priceString: string;\r\n alignersQuantity: number;\r\n hasDentalMonitoring: boolean;\r\n hasUnlimitedAligners: boolean;\r\n dentalMonitoringPrice: number;\r\n isCase: boolean;\r\n imagePath: string;\r\n images: any;\r\n specList: any;\r\n priceList: any;\r\n quantityStock: number;\r\n baseTax: number;\r\n basePriceProduct: number;\r\n basePriceExtraAligner: number;\r\n basePriceDentalMonitoring: number;\r\n basePriceComplexCase: number;\r\n productType: any;\r\n priceToShow: any;\r\n productPriceToShowWithDiscount:any\r\n}\r\n\r\nexport interface ShoppingProduct {\r\n productId: number,\r\n productName: string,\r\n productImage: string,\r\n quantity: number,\r\n quantityExtraAligners: number,\r\n hasDentalMonitoring: boolean,\r\n priceDentalMonitoring: number,\r\n isComplexCase: boolean,\r\n subtotalProduct: number,\r\n subtotal: number,\r\n baseTax: number,\r\n basePriceProduct: number,\r\n basePriceExtraAligner: number,\r\n basePriceDentalMonitoring: number,\r\n caseId?: number\r\n}\r\n\r\nexport interface ShoppingService {\r\n serviceName: string;\r\n serviceCount: number;\r\n serviceUnitPrice: number;\r\n serviceTotal: number;\r\n serviceImage: string;\r\n serviceNewSetup: number;\r\n serviceProductUpgrade: any;\r\n}\r\n\r\nexport interface IEntity\r\n{\r\n id: number;\r\n}\r\n\r\nexport class LocalStorage implements Storage\r\n{\r\n [name: string]: any;\r\n readonly length: number;\r\n clear(): void { }\r\n getItem(key: string): string | null { return undefined; }\r\n key(index: number): string | null { return undefined; }\r\n removeItem(key: string): void { }\r\n setItem(key: string, value: string): void { }\r\n}\r\n\r\nexport class UserDto\r\n{\r\n\r\n}\r\n\r\nexport class LoginDto\r\n{\r\n id: string = \"\";\r\n password: string = \"\";\r\n cartId: string = \"\";\r\n language: string = \"\";\r\n}\r\n\r\nexport class RefreshTokenDto\r\n{\r\n language: string = \"\";\r\n refreshToken: string = \"\";\r\n}\r\n\r\nexport class ValidateSessionDto\r\n{\r\n language: string = \"\";\r\n token: string = \"\";\r\n}\r\n\r\n// #endregion Classes\r\n\r\n// ********************************************************************************\r\n// #region Interfaces\r\n// ********************************************************************************\r\n\r\nexport interface IEntity\r\n{\r\n id: number;\r\n}\r\n\r\nexport interface IBaseRequest\r\n{\r\n token: string;\r\n}\r\n\r\n//Add base interfaces\r\nexport interface FileHandle {\r\n file: File,\r\n url: SafeUrl\r\n}\r\n\r\nexport interface UserAccess {\r\n email: string,\r\n password: string\r\n}\r\n\r\nexport interface UserAccessResetPassword {\r\n newPassword: string,\r\n confirmPassword: string\r\n}\r\n\r\nexport interface UserSignUpSpecialist {\r\n name: string,\r\n firstLastName: string,\r\n secondLastName: string,\r\n hasSpecialty: string,\r\n professionalLicense: string,\r\n email: string,\r\n\r\n officeName: string,\r\n contactPerson: string,\r\n country: string,\r\n state: string,\r\n phone: number,\r\n street: string,\r\n streetNumber: number,\r\n city: string,\r\n zipcode: number,\r\n website: string,\r\n socialMedia: string,\r\n}\r\n\r\nexport interface UserSignUpResident {\r\n name: string,\r\n firstLastName: string,\r\n secondLastName: string,\r\n hasSpecialty: string,\r\n graduationYear: number,\r\n graduationMonth: number,\r\n email: string,\r\n\r\n officeName: string,\r\n contactPerson: string,\r\n country: string,\r\n state: string,\r\n phone: number,\r\n street: string,\r\n streetNumber: number,\r\n city: string,\r\n zipcode: number,\r\n website: string,\r\n socialMedia: string,\r\n}\r\n\r\n// #endregion Interfaces\r\n\r\n\r\n// Enums\r\nexport enum FileApplicationType\r\n{\r\n PDF = 'application/pdf',\r\n STL = 'application/octet-stream',\r\n TXT = 'application/plain',\r\n ZIP7 = 'application/x-7z-compressed',\r\n ZIP = 'application/zip',\r\n RAR = 'application/x-rar-compressed',\r\n WORD = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n POWERPOINT = 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\r\n EXCEL = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\r\n}\r\n\r\nexport enum ImageType\r\n{\r\n JPG = 'image/jpg',\r\n JPEG = 'image/jpeg',\r\n PNG = 'image/png',\r\n GIF = 'image/gif',\r\n TIF = 'image/tiff',\r\n BMP = 'image/bmp'\r\n}\r\n\r\nexport enum VideoType\r\n{\r\n MP4 = 'video/mp4',\r\n QUICKTIME = 'video/quicktime',\r\n MOV = 'video/mov',\r\n MPG = 'video/mpg',\r\n MPEG = 'video/mpeg',\r\n MPEG4 = 'video/mpeg4',\r\n}\r\n\r\n\r\nexport enum FileExtension//Agregar nuevos formatos de archivo\r\n{\r\n PDF = '.pdf',\r\n TXT = '.txt',\r\n ZIP = '.zip',\r\n ZIP7 = '.7z',\r\n RAR = '.rar',\r\n WORD = '.docx',//\r\n POWERPOINT = '.pptx',//\r\n EXCEL = '.xlsx',//\r\n}\r\n\r\nexport enum FileWeirdExtension\r\n{\r\n STL = '.stl',\r\n}\r\n\r\nexport enum ImageExtension\r\n{\r\n JPG = '.jpg',\r\n JPEG = '.jpg',\r\n PNG = '.png',\r\n GIF = '.gif',\r\n TIF = '.tif',\r\n BMP = '.bmp'\r\n}\r\n\r\nexport enum Section\r\n{\r\n Backoffice = 1,\r\n Ecommerce = 2\r\n}\r\n\r\nexport enum PasswordValidationType\r\n{\r\n AtLeastOneNumber = '[0-9]{1}',\r\n AtLeastOneCapital = '[A-Z]{1}',\r\n AtLeastOneSpecial = '[#$%&?!\\\\¡\\\\¿\\\\`\\\\@\\\\^\\\\*\\\\(\\\\)\\\\_\\\\+\\\\-\\\\=\\\\[\\\\]\\\\{\\\\}\\\\;\\'\\\\:\\\\\"\\\\|\\\\,\\\\.\\\\<\\\\>\\\\/\\\\~\\\\u005C]{1}',\r\n NoConsecutive = '^(?!.*(abc|ABC|123)+).*$',\r\n NoKeyboardSequences = '^(?!.*(qwerty|QWERTY|ASDFG|asdfg)+).*$',\r\n MinLength = '[A-Z0-9a-z#$%&?!\\\\¡\\\\¿\\\\`\\\\@\\\\^\\\\*\\\\(\\\\)\\\\_\\\\+\\\\-\\\\=\\\\[\\\\]\\\\{\\\\}\\\\;\\'\\\\:\\\\\"\\\\|\\\\,\\\\.\\\\<\\\\>\\\\/\\\\~\\\\u005C]{8,}$',\r\n}\r\n\r\nexport enum PaymentType\r\n{\r\n Unasigned =0,\r\n OpenPay = 1,\r\n PayNet = 2,\r\n SPEI = 3,\r\n InPerson = 5,\r\n PayLink = 6,\r\n Courtesy = 7,\r\n CardPay = 8\r\n}\r\n\r\nexport enum PaymentPlan\r\n{\r\n SinglePayment = 1,\r\n TwoMonths = 3,\r\n SixMonths = 6,\r\n NineMonths = 9,\r\n TwelveMonths = 12,\r\n}\r\n\r\nexport const PaymentTypeLabel = new Map([\r\n [PaymentType.Unasigned, \"Forma de pago pendiente\"],\r\n [PaymentType.OpenPay, \"OpenPay\"],\r\n [PaymentType.PayNet, \"PayNet\"],\r\n [PaymentType.SPEI, \"SPEI\"],\r\n [PaymentType.InPerson, \"InPerson\"],\r\n [PaymentType.PayLink, \"PayLink\"],\r\n [PaymentType.Courtesy, \"Courtesy\"],\r\n [PaymentType.CardPay, \"Pago con terminal\"]\r\n]);\r\n\r\nexport const PaymentTypeDescription = new Map([\r\n [PaymentType.Unasigned, \"Forma de pago pendiente\"],\r\n [PaymentType.OpenPay, \"Pago con Tarjeta\"],\r\n [PaymentType.PayNet, \"Pago en Establecimientos\"],\r\n [PaymentType.SPEI, \"Pago por Transferencia\"],\r\n [PaymentType.InPerson, \"Pago presencial\"],\r\n [PaymentType.PayLink, \"Pago por Link de pago\"],\r\n [PaymentType.Courtesy, \"Cortesía\"],\r\n [PaymentType.CardPay, \"Pago con terminal\"]\r\n]);\r\n\r\nexport const PaymentPlanDescription = new Map([\r\n [PaymentPlan.SinglePayment, \"De contado\"],\r\n [PaymentPlan.TwoMonths, \"Financiamiento a 3 meses\"],\r\n [PaymentPlan.SixMonths, \"Financiamiento a 6 meses\"],\r\n [PaymentPlan.NineMonths, \"Financiamiento a 9 meses\"],\r\n [PaymentPlan.TwelveMonths, \"Financiamiento a 12 meses\"],\r\n]);\r\n\r\n\r\nexport enum ShowInSection\r\n{\r\n None = 0,\r\n Backoffice = 1,\r\n Ecommerce = 2,\r\n Both=3\r\n}\r\n\r\nexport const PaymentTypeArray: any[] = [\r\n {\r\n type: PaymentType.Unasigned,\r\n label: PaymentTypeLabel.get(PaymentType.Unasigned),\r\n description: PaymentTypeDescription.get(PaymentType.Unasigned),\r\n image: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/openpay.png\",\r\n showIn: ShowInSection.None\r\n },\r\n {\r\n type: PaymentType.OpenPay,\r\n label: PaymentTypeLabel.get(PaymentType.OpenPay),\r\n description: PaymentTypeDescription.get(PaymentType.OpenPay),\r\n image: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/openpay.png\",\r\n showIn: ShowInSection.Ecommerce\r\n },\r\n {\r\n type: PaymentType.PayNet,\r\n label: PaymentTypeLabel.get(PaymentType.PayNet),\r\n description: PaymentTypeDescription.get(PaymentType.PayNet),\r\n image: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/paynet.png\",\r\n showIn: ShowInSection.Both\r\n },\r\n {\r\n type: PaymentType.SPEI,\r\n label: PaymentTypeLabel.get(PaymentType.SPEI),\r\n description: PaymentTypeDescription.get(PaymentType.SPEI),\r\n image: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/spei.png\",\r\n showIn: ShowInSection.Both\r\n },\r\n {\r\n type: PaymentType.InPerson,\r\n label: PaymentTypeLabel.get(PaymentType.InPerson),\r\n description: PaymentTypeDescription.get(PaymentType.InPerson),\r\n image: \"\",\r\n showIn: ShowInSection.Backoffice\r\n },\r\n {\r\n type: PaymentType.PayLink,\r\n label: PaymentTypeLabel.get(PaymentType.PayLink),\r\n description: PaymentTypeDescription.get(PaymentType.PayLink),\r\n image: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/Link%20de%20Pago.svg\",\r\n showIn: ShowInSection.Both\r\n },\r\n {\r\n type: PaymentType.Courtesy,\r\n label: PaymentTypeLabel.get(PaymentType.Courtesy),\r\n description: PaymentTypeDescription.get(PaymentType.Courtesy),\r\n image: \"\",\r\n showIn: ShowInSection.Backoffice\r\n },\r\n {\r\n type: PaymentType.CardPay,\r\n label: PaymentTypeLabel.get(PaymentType.CardPay),\r\n description: PaymentTypeDescription.get(PaymentType.CardPay),\r\n image: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/Pago%20en%20Sucursal.svg\",\r\n showIn: ShowInSection.Ecommerce\r\n },\r\n];\r\n\r\nexport const PasswordErrorMessage = new Map([\r\n [PasswordValidationType.AtLeastOneNumber, \"La contraseña debe tener al menos 1 número\"],\r\n [PasswordValidationType.AtLeastOneCapital, \"La contraseña debe tener al menos 1 mayúscula\"],\r\n [PasswordValidationType.AtLeastOneSpecial, 'La contraseña debe tener al menos 1 carácter especial'],\r\n [PasswordValidationType.NoConsecutive, 'No debe contener letras o numeros consecutivos. (abc, 123)'],\r\n [PasswordValidationType.NoKeyboardSequences, 'No debe contener secuencias del teclado(qwerty, asdfg)'],\r\n [PasswordValidationType.MinLength, 'La contraseña debe tener al menos 8 caracteres'],\r\n]);\r\n\r\n","import { Observable, Subject } from 'rxjs';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nexport class EntityEvent\r\n{\r\n constructor(\r\n public entityName: string,\r\n public eventName: string,\r\n public args?: any[]) { }\r\n\r\n public getBroadcastKey()\r\n {\r\n return EntityEvent.createBroadcastKey(this.entityName, this.eventName);\r\n }\r\n\r\n public static createBroadcastKey(entityName: string, eventName: string): string\r\n {\r\n return `${entityName}:${eventName}`;\r\n }\r\n}\r\n\r\ninterface BroadcastEvent\r\n{\r\n key: any;\r\n data?: any;\r\n}\r\n\r\nexport class BroadcastManager\r\n{\r\n private persistentBroadcastDict = new Map();\r\n\r\n private _eventBus: Subject;\r\n\r\n private static instance: BroadcastManager;\r\n\r\n private constructor()\r\n {\r\n this._eventBus = new Subject();\r\n }\r\n\r\n static get Instance(): BroadcastManager\r\n {\r\n if (this.instance === null || this.instance === undefined)\r\n {\r\n this.instance = new BroadcastManager();\r\n }\r\n return this.instance;\r\n }\r\n\r\n // ********************************************************************\r\n // #region Broadcast Methods\r\n // ********************************************************************\r\n\r\n private _broadcast(eventName: string, ...args: any[]): void\r\n {\r\n let key = eventName;\r\n let data = args;\r\n\r\n this._eventBus.next({ key, data });\r\n }\r\n\r\n public broadcast(eventName: string, ...args: any[]): void\r\n {\r\n this._broadcast(eventName, args);\r\n }\r\n\r\n\r\n private _broadcastEntityEvent(entityEvent: EntityEvent): void\r\n {\r\n let key = entityEvent.getBroadcastKey();\r\n let data = entityEvent.args;\r\n\r\n this._eventBus.next({ key, data });\r\n }\r\n\r\n public broadcastEntityEvent(entityName: string, eventName: string, ...args: any[]): void\r\n {\r\n let entityEvent: EntityEvent = new EntityEvent(entityName, eventName, args);\r\n\r\n this._broadcastEntityEvent(entityEvent);\r\n }\r\n\r\n public broadcastPersistentEntityEvent(entityName: string, eventName: string, ...args: any[]): void\r\n {\r\n let entityEvent: EntityEvent = new EntityEvent(entityName, eventName, args);\r\n\r\n this.persistentBroadcastDict.set(entityEvent.getBroadcastKey(), entityEvent);\r\n\r\n this._broadcastEntityEvent(entityEvent);\r\n }\r\n\r\n public on(key: any): Observable\r\n {\r\n return this._eventBus.asObservable()\r\n .pipe(\r\n filter(event => event.key === key),\r\n map(event => event.data)\r\n );\r\n }\r\n\r\n // #endregion\r\n\r\n // ********************************************************************\r\n // #region Misc Methods\r\n // ********************************************************************\r\n\r\n /**\r\n * Gets an event that was previously published. If it does not exist, returns null.\r\n */\r\n\r\n public getPublishedEvent(entityName: string, eventName: string): EntityEvent\r\n {\r\n let broadcastKey = EntityEvent.createBroadcastKey(entityName, eventName);\r\n\r\n if (this.persistentBroadcastDict.has(broadcastKey))\r\n {\r\n let entityEvent = this.persistentBroadcastDict.get(broadcastKey);\r\n if (entityEvent == undefined) { entityEvent = null; }\r\n return entityEvent;\r\n }\r\n else\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Sets (saves) an event for later retreival. If it already exists, replace with the new value.\r\n * Supports updating the persisted event without broadcasting it.\r\n */\r\n\r\n public setPublishedEvent(entityName: string, eventName: string, ...args: any[]): EntityEvent\r\n {\r\n let entityEvent: EntityEvent = new EntityEvent(entityName, eventName, args);\r\n this.persistentBroadcastDict.set(entityEvent.getBroadcastKey(), entityEvent);\r\n\r\n return entityEvent;\r\n }\r\n\r\n // #endregion\r\n\r\n // ********************************************************************\r\n // #region Clear Methods\r\n // ********************************************************************\r\n\r\n /**\r\n * Clears the specified persited event.\r\n *\r\n * Fired by crud controller on add, delete, displayList methods\r\n */\r\n\r\n public clear(eventName: string, entityName: string): void\r\n {\r\n this.persistentBroadcastDict.forEach((entityEvent) =>\r\n {\r\n if (entityEvent.eventName == eventName && entityEvent.entityName == entityName)\r\n {\r\n this.persistentBroadcastDict.delete(entityEvent.getBroadcastKey());\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Clears all persited events.\r\n */\r\n\r\n public clearAll(): void\r\n {\r\n this.persistentBroadcastDict.clear();\r\n }\r\n\r\n public clearAllByEventName(eventName: string): void\r\n {\r\n this.persistentBroadcastDict.forEach((entityEvent) =>\r\n {\r\n if (entityEvent.eventName == eventName)\r\n {\r\n this.persistentBroadcastDict.delete(entityEvent.getBroadcastKey());\r\n }\r\n });\r\n }\r\n\r\n public clearAllByEntityName(entityName: string): void\r\n {\r\n this.persistentBroadcastDict.forEach((entityEvent) =>\r\n {\r\n if (entityEvent.entityName == entityName)\r\n {\r\n this.persistentBroadcastDict.delete(entityEvent.getBroadcastKey());\r\n }\r\n });\r\n }\r\n\r\n // #endregion\r\n}\r\n","import { MatDateFormats } from \"@angular/material/core\";\r\n\r\nexport const TOKEN_HEADER_KEY = \"TOKEN\";\r\nexport const ECOMMERCE_USER_TOKEN = \"TOKEN-E\";\r\nexport const BACKOFFICE_USER_TOKEN = \"TOKEN-BO\";\r\n\r\nexport const MONTHS = [\r\n { name: 'MES', value: -1 },\r\n { name: 'ENERO', value: 0 },\r\n { name: 'FEBRERO', value: 1 },\r\n { name: 'MARZO', value: 2 },\r\n { name: 'ABRIL', value: 3 },\r\n { name: 'MAYO', value: 4 },\r\n { name: 'JUNIO', value: 5 },\r\n { name: 'JULIO', value: 6 },\r\n { name: 'AGOSTO', value: 7 },\r\n { name: 'SEPTIEMBRE', value: 8 },\r\n { name: 'OCTUBRE', value: 9 },\r\n { name: 'NOVIEMBRE', value: 10 },\r\n { name: 'DICIEMBRE', value: 11 }\r\n];\r\n\r\nexport const STATES = [\r\n {name: \"Aguascalientes\", value: 1},\r\n {name: \"Baja California\", value: 2},\r\n {name: \"Baja California Sur\", value: 3},\r\n {name: \"Campeche\", value: 4},\r\n {name: \"Chiapas\", value: 5},\r\n {name: \"Chihuahua\", value: 6},\r\n {name: \"Ciudad de México\", value: 7},\r\n {name: \"Coahuila\", value: 8},\r\n {name: \"Colima\", value: 9},\r\n {name: \"Durango\", value: 10},\r\n {name: \"Estado de México\", value: 11},\r\n {name: \"Guanajuato\", value: 12},\r\n {name: \"Guerrero\", value: 13},\r\n {name: \"Hidalgo\", value: 14},\r\n {name: \"Jalisco\", value: 15},\r\n {name: \"Michoacán\", value: 16},\r\n {name: \"Morelos\", value: 17},\r\n {name: \"Nayarit\", value: 18},\r\n {name: \"Nuevo León\", value: 19},\r\n {name: \"Oaxaca\", value: 20},\r\n {name: \"Puebla\", value: 21},\r\n {name: \"Querétaro\", value: 22},\r\n {name: \"Quintana Roo\", value: 23},\r\n {name: \"San Luis Potosí\", value: 24},\r\n {name: \"Sinaloa\", value: 25},\r\n {name: \"Sonora\", value: 26},\r\n {name: \"Tabasco\", value: 27},\r\n {name: \"Tamaulipas\", value: 28},\r\n {name: \"Tlaxcala\", value: 29},\r\n {name: \"Veracruz\", value: 30},\r\n {name: \"Yucatán\", value: 31},\r\n {name: \"Zacatecas\", value: 32},\r\n];\r\n\r\nexport const PROGRAMS = [\r\n {title:\"PAEI\", description:\"Programa de Apoyo a la Educación e Investigación para cumplir con nuestro objetivo de apoyar la educación y entrenamiento de futuros ortodoncistas en técnicas de alineadores transparentes con alta tecnología.

Acércate con nosotros, tenemos precios especiales para apoyar a los posgrados y estudiantes durante su residencia.\"},\r\n {title:\"Alpha\", description:\"Circulo exclusivo de ortodoncistas Aliwell® Alpha. Preguntanos como tener acceso y gozar de los beneficios exclusivos como: apoyo en escáner intraoral, precios especiales, planes de financiamiento directo para pacientes, conferencias y cursos clínicos exclusivos, foros de discusión clínica, entre otros. \"},\r\n {title:\"Rewards\", description:\" Con nuestro programa, todas tus compras generan puntos que podrás canjear por premios y promociones exclusivas\"},\r\n];\r\n\r\nexport const STEPS = [\r\n {title: 'Planeación Virtual', content: 'Con software de alta tecnología siguiendo la prescripción del ortodoncista.', imgUrl: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/planeacion-mobile.png'},\r\n {title: 'Fabricación', content: 'El Ortodoncista aprueba la fabricación en base a la planeación virtual.', imgUrl: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/fabricacion-mobile.png'},\r\n {title: 'Envío', content: 'Somos los más rápidos de la industria. En pocos días el case estará en camino al ortodoncista.', imgUrl: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/envio-mobile.png'},\r\n];\r\n\r\nexport const STEPSTOOFFER = [\r\n {name:'Registrate' ,svg: `\r\n 452DF16D-7B26-4EE6-B3E2-6ECDF3925483`},\r\n {name: 'Alta de caso', svg: `\r\n EB3D1C93-D249-4AE9-91B9-47F0D83EC7EE\r\n `},\r\n {name: 'Envío de archivos', svg: `5246A208-9967-4100-ABD9-D3243B79DB6A\r\n `},\r\n {name: 'Aprobación del Setup 3D', svg: `3D50856E-5674-4719-AB13-36ED8ADC84ED\r\n `},\r\n {name: 'Envío de Caso', svg: `411769E7-B588-4DA0-AC23-AE759429F935`}\r\n];\r\n\r\nexport const FAQPATIENT = [\r\n {question: '¿Cómo colocar los Alineadores?',answer:'Te recomendamos colocar tus alineadores comenzando con los dientes anteriores (frontales) y guiarlo a los posteriores'},\r\n {question: '¿Cómo removerlos?',answer:'La remoción debe ser con un movimiento sin doblar el alineador; lo más común es primero removerlos de la parte posterior en la zona de los molares y después irlo removiendo hasta la parte frontal'},\r\n {question: '¿Es normal sentir presión en los dientes?',answer:'Tus alineadores deben sentirse ajustados (ligeramente apretados) a tus dientes, ejerciendo algo de presión. Inicialmente es común sentir la orilla del alineador con tu lengua o cachetes, pero no deben raspar excesivamente (lengua o cachetes) o poner presión excesiva en la encía; si esto sucede tu doctor de cabecera puede hacer un ligero pulido para que te quede más cómodo'},\r\n {question: '¿Qué sensaciones puedo esperar? ',answer:'Tu boca sentirá cambios importantes al comenzar a usar los alineadores. Es normal que al colocar algo nuevo en tu boca se sienta ligeramente incómodo y esto debe desaparecer en unos días. Tu boca puede salivar un poco más de lo normal y se debe de quitar en unos dos o tres días. También, el hecho de tener el plástico entre tus dientes causará una sensación de no poder cerrar la boca completamente como antes'},\r\n {question: '¿Cuánto tiempo debo usar mis alineadores al día?', answer: 'Si quieres tener excelentes resultados, se necesita una excelente cooperación de tu parte. Un diente se va a mover al sentir una fuerza constante, y no se mueve igual si las fuerzas son intermitentes. Por lo que se recomienda que los alineadores estén en tu boca por lo mínimo 20 horas diarias'},\r\n {question: '¿Cómo funciona el movimiento dental?', answer: 'El proceso de mover dientes involucra fuerzas ligeras. Con el software que se fabricaron tus alineadores Aliwell® tu ortodoncista ha diseñado el movimiento gradual que sucederá con cada alineador. Por lo tanto, el resultado esperado no es inmediato, sino que se verá después de unos meses del uso continuo de los alineadores'},\r\n {question: 'Higiene', answer: 'Es muy importante tener excelente higiene bucal durante tu tratamiento. L gran ventaja es que tus alineadores se pueden remover para que puedas tener buena higiene bucal con tu cepillado y el uso de hilo dental durante todo tu tratamiento. Visita a tu odontólogo para que realice tu revisión y profilaxis cada 6 meses durante tu tratamiento. Nunca ingieras alimentos o bebidas con tus alineadores puestos, solo puedes tomar agua (al tiempo o fría) con ellos en tu boca'},\r\n {question: '¿Qué cuidados debo tener?', answer: 'Tus alineadores son aparatos ortodónticos que se deben cuidar, no deben de ser doblados, cortados, olvidados en lugares con calor (dentro de carro o sol) y deben ser lavados diariamente. Te recomendamos utilices el Foam Limpiador fabricado por Kimiatrix.com una vez al día para una excelente higiene y limpieza. También los puedes lavar con tu cepillo dental y enjuague bucal (sin color y sin alcohol) cada vez que cepilles tus dientes'}\r\n];\r\n\r\nexport const FAQSPECIALIST = [\r\n {question: '¿Cómo crear mi cuenta en Aliwell?',answer: `\r\n

Accede al siguiente link y llena la sección de registro https://www.aliwell.mx/iniciar-sesion

\r\n

Se revisa la solicitud de registro y en un periodo máximo de 24 hrs recibirás los accesos.

\r\n

Cualquier duda puedes enviarnos un mensaje de WhatsApp y te apoyamos con gusto.

\r\n `},\r\n {question: '¿Cómo crear un caso de paciente? ',answer:`\r\n
    \r\n
  1. Dar de alta un caso
  2. \r\n
  3. Llenar datos del paciente
  4. \r\n
  5. Subir fotografías intraorales y extraorales
  6. \r\n
  7. Subir radiografías
  8. \r\n
  9. Subir STL
  10. \r\n
  11. Llenar prescripción clínica
  12. \r\n
\r\n\r\n

Para más información, descarga nuestra guía visual aquí

\r\n `},\r\n {question: '¿Se necesita certificación para trabajar con Aliwell?',answer:'No se necesita estar certificado para trabajar con Aliwell solo es necesario contar con cédula de ortodoncista.'},\r\n {question: '¿Qué archivos necesito para subir un caso?',answer: `\r\n
    \r\n
  • Fotografías intraorales: frontal, lateral derecha, lateral izquierda, arcada superior, arcada inferior
  • \r\n
  • Fotografías extraorales: facial de frente sonriendo, composite: de fotografias faltantes
  • \r\n
  • Radiografía panorámica y radiografía lateral de cráneo.
  • \r\n
  • Archivos STL
  • \r\n
\r\n `},\r\n {question: '¿Los eventos de Aliwell Café tienen costo? ',answer:`\r\n

No tienen costo, solo se revisa la disponibilidad de agenda.

\r\n

Aliwell Café es un espacio donde se reunen ortodoncistas expertos para compartir perlas clínicas, casos complejos, y resolver dudas con el propósito de seguir desarrollando su formación y replicar buenas prácticas en casos de alineadores.

\r\n `},\r\n {question: '¿Dónde puedo realizar mis pagos? ',answer:`\r\n

Se pueden realizar por medio transferencia o por medio de la plataforma de Ecommerce.

\r\n

Los métodos de pago en el sitio web son:

\r\n
    \r\n
  1. Pago con tarjeta debito/crédito (hasta a 18 meses sin intereses)
  2. \r\n
  3. SPEI/li>\r\n
  4. PAYNET (pago en efectivo en tiendas autorizadas: Walmart, Sam´s, Farmacias del Ahorro, Farmacias Guadalajara, Bodega Aurrera, entre otros)
  5. \r\n
\r\n `},\r\n {question: '¿Cuánto tiempo tarda el recibir un Setup a partir de que se envía un nuevo caso?',answer:'El tiempo de envio de la propuesta de setup es de máximo 3 días hábiles.'},\r\n {question: '¿Cuánto es el tiempo de fabricación?',answer:'Nuestro tiempo de fabricación es de 7 días hábiles, a partir de la aprobación del caso.'},\r\n {question: '¿Puedo trabajar con Aliwell si no soy ortodoncista?',answer:'Aliwell está hecho por ortodoncistas para ortodoncistas, se requiere cédula profesional de ortodoncista.'},\r\n {question: '¿Cómo funciona Aliwell?',answer:'Tus dientes van siguiendo los movimientos programados por el ortodoncista en un software 3D y fabricamos tus alineadores por medio de tecnología de impresión 3D de alta precisión. Nuestros alineadores están hechos con 3FLXPlus, nuestro nuevo material tri-capa, estético, cómodo, duradero y flexible que genera resultados efectivos y pacientes contentos. '},\r\n {question: '¿Aliwell tiene garantías?',answer:'Sí, en casos ilimitados con el uso de DentalMonitoring la garantia es de 5 años'},\r\n {question: '¿Reciben cucharillas o modelos?',answer:'Solamente recibimos archivos digitales STL.'},\r\n {question: '¿Hacen envíos a cualquier parte del país?',answer:'Sí, realizamos envíos a todo México y no hay costo de envío.'},\r\n {question: '¿Donde se encuentran?',answer:'Somos una empresa 100% Mexicana con tecnología y socios internacionales. Estamos ubicados en Monterrey, Nuevo León.'},\r\n {question: '¿Cómo funciona el programa PAEI?',answer:'En Aliwell® creamos el programa PAEI (Programa de Apoyo a la Educación e Investigación) para cumplir con nuestro objetivo de apoyar la educación y entrenamiento de futuros ortodoncistas en técnicas de alineadores transparentes con alta tecnología. Si eres residente de posgrado de ortodoncia, contáctanos para darte detalles, el proceso es fácil y rápido.'},\r\n {question: '¿Cuáles son los beneficios de ser Aliwell ALPHA?',answer:`\r\n

Tecnología de última generación

\r\n
    \r\n
  1. Escáner sin inversión inicial para todo tu consultorio
  2. \r\n
  3. DentalMonitoring incluido en todos los casos ilimitados
  4. \r\n
\r\n

Producto premium

\r\n
    \r\n
  1. Casos ilimitados tienen 5 años de garantía
  2. \r\n
  3. Nuevo material tricapa de última generación
  4. \r\n
  5. Setups y asesoría de planeación del caso por expertos
  6. \r\n
  7. Fabricación por etapas para mayor control
  8. \r\n
\r\n

Tecnología de última generación

\r\n
    \r\n
  1. Acceso a Aliwell® Academy (discusión de casos entre colegas expertos)
  2. \r\n
  3. Consultoría clínica en Aliwell® Café
  4. \r\n
  5. Consultoría clínica en Aliwell® Café
  6. \r\n
\r\n `},\r\n {question: '¿Qué incluye el paquete de alineadores? ',answer:`\r\n
    \r\n
  1. Elaboración de Setup 3D con correcciones indefinidas.
  2. \r\n
  3. Asesoría clínica de un equipo de ortodoncistas expertos\r\n durante la planeación y el tratamiento del caso.
  4. \r\n
  5. Kit paciente: Chewies (mordedores), Limas interproximales, Estuche y Foam Limpiador.
  6. \r\n
\r\n `},\r\n {question: '¿El envió tiene costo extra?',answer:'No, el envío está incluido en todos tus casos.'},\r\n {question: '¿Qué es DentalMonitoring?',answer:`\r\n

Tecnología con Inteligencia Artificial para monitorear tus tratamientos de forma remota

\r\n
    \r\n
  1. Comprueba el progreso del tratamiento y detecta los problemas de forma anticipada para asegurar el cumplimiento de los objetivos.
  2. \r\n
  3. Consulta fotos desde diferentes ángulos y compáralas con imágenes anteriores.
  4. \r\n
  5. Optimiza tus consultas.
  6. \r\n
  7. Comunícate al instante con el paciente por medio de la aplicación.
  8. \r\n
  9. Los pacientes escanean y envían imágenes desde cualquier lugar
  10. \r\n
\r\n `},\r\n\r\n];\r\n\r\nexport const PATIENTTESTIMONIALS = [\r\n {\r\n name: 'Pedro Guerra',\r\n content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique architecto a cupiditate, dolores repudiandae quae.',\r\n poster: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/carousel1.jpeg',\r\n images: [\r\n {url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/an1.png\", alt: \"Imagen antes del tratamiento\"},\r\n \t{url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/dp1.png\", alt: \"Imagen después del tratamiento\"}\r\n ]\r\n },\r\n {\r\n name: 'Luisa Lopéz',\r\n content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique architecto a cupiditate, dolores repudiandae quae.',\r\n poster: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/carousel2.jpeg',\r\n images: [\r\n {url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/an2.png\", alt: \"Imagen antes del tratamiento\"},\r\n \t{url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/dp2.png\", alt: \"Imagen después del tratamiento\"}\r\n ]\r\n },\r\n {\r\n name: 'Alejandro Magno',\r\n content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique architecto a cupiditate, dolores repudiandae quae.',\r\n poster: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/carousel3.jpeg',\r\n images: [\r\n {url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/an3.png\", alt: \"Imagen antes del tratamiento\"},\r\n \t{url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/dp3.png\", alt: \"Imagen después del tratamiento\"}\r\n ]\r\n },\r\n {\r\n name: 'David Gonzalez',\r\n content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique architecto a cupiditate, dolores repudiandae quae.',\r\n poster: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/carousel4.jpeg',\r\n images: [\r\n {url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/an1.png\", alt: \"Imagen antes del tratamiento\"},\r\n \t{url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/dp1.png\", alt: \"Imagen después del tratamiento\"}\r\n ]\r\n },\r\n {\r\n name: 'Mariana García',\r\n content: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Similique architecto a cupiditate, dolores repudiandae quae.',\r\n poster: 'https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/carousel5.jpeg',\r\n images: [\r\n {url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/an1.png\", alt: \"Imagen antes del tratamiento\"},\r\n \t{url: \"https://aliwellstorageaccount.blob.core.windows.net/uploads/website-files/body/dp1.png\", alt: \"Imagen después del tratamiento\"}\r\n ]\r\n }\r\n];\r\n\r\nexport const PATIENTTESTIMONIALSTEXT = [\r\n {\r\n content: 'Desde que uso Aliwell, tengo mas confianza al sonreír, ya que los alineadores son completamente transparentes y cada vez mis dientes están más derechos',\r\n },\r\n {\r\n content: 'Lo que me encanta de los alineadores es que su uso es muy practico durante el día y por las noches muy cómodos para dormir.',\r\n },\r\n {\r\n content: 'Utilizar dental monitoring en mi tratamiento, me da la seguridad de no perder tiempo en ningún momento y ademas me ahorra vueltas al consultorio de mi dentista',\r\n },\r\n {\r\n content: 'Es increíble la rapidez con la que se ven cambios al utilizar alineadores, lo mejor de todo es que no se ven',\r\n },\r\n {\r\n content: 'Con alineadores, mis visitas al consultorio dental son mas rápidas, efectivas y sin dolor',\r\n },\r\n {\r\n content: 'La mejor decisión para mejorar mi sonrisa, fue elegir alineadores como opción de tratamiento, ya que me dan seguridad al sonreír',\r\n },\r\n {\r\n content: 'Los alineadores me permitieron tener mejor higiene oral, ya que al ser removibles puedo cepillarme los dientes sin ninguna interferencia y es muy sencillo limpiarlos',\r\n },\r\n];\r\n\r\n\r\n\r\nexport class SpecialCharacters\r\n{\r\n public static accents = [\r\n { text: 'Á', value: 'Á' },\r\n { text: 'É', value: 'É' },\r\n { text: 'Í', value: 'Í' },\r\n { text: 'Ó', value: 'Ó' },\r\n { text: 'Ú', value: 'Ú' },\r\n { text: 'á', value: 'á' },\r\n { text: 'é', value: 'é' },\r\n { text: 'í', value: 'í' },\r\n { text: 'ó', value: 'ó' },\r\n { text: 'ú', value: 'ú' },\r\n { text: 'Ñ', value: 'Ñ' },\r\n { text: 'ñ', value: 'ñ' }\r\n ];\r\n}\r\n\r\nexport class CommonRegex\r\n{\r\n public static readonly DoubleOnly = new RegExp(/^[0-9]{0,13}(\\.[0-9]{0,2}){0,1}$/g);\r\n public static readonly IntegerOnly = new RegExp(/^[0-9]{0,9}$/g);\r\n public static readonly PhoneNumber = new RegExp(/^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/g);\r\n}\r\n\r\nexport enum StorageItems\r\n{\r\n AkkyRoutes = \"akky-routes\",\r\n DirectusURL = \"akky-directus-url\",\r\n CookiesAdd = \"cookies-add\",\r\n SelectedLang = \"selectedLang\",\r\n HubFormStorageKey = \"hub-form-storage-key\",\r\n}\r\n\r\nexport enum AppEventNames\r\n{\r\n OnSettingsDone = \"on-settings-done-event\",\r\n OnShowUserLogin = \"on-show-user-access\",\r\n OnShowUserSignUp = \"on-show-user-signUp\",\r\n OnCheckUserLoggedIn = \"on-check-user-logged-in\",\r\n OnboardingEmailPasswordChange = \"onboarding-email-password-change\",\r\n OnboardingByPassEmailPasswordChange = \"onboarding-by-pass-email-password-change\",\r\n OnboardingPasswordChange = \"onboarding-password-change\",\r\n OnboardingCRUDData = \"onboarding-crud-data\"\r\n}\r\n\r\nexport const enum SEODefaults\r\n{\r\n Title = \"Aliwell\",\r\n}\r\n\r\nexport enum DefaultLanguage\r\n{\r\n ES = \"es\",\r\n EN = \"en\"\r\n}\r\n\r\nexport const APP_DATE_FORMATS: MatDateFormats = {\r\n parse: {\r\n dateInput: { month: 'short', year: 'numeric', day: 'numeric' },\r\n },\r\n display: {\r\n dateInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\r\n monthYearLabel: { year: 'numeric', month: 'long' }, //LABEL CALENDAR\r\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' }, //Content days\r\n monthYearA11yLabel: { year: 'numeric', month: 'short' },\r\n }\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { Alert, AlertType } from './Alert';\r\n\r\n@Injectable()\r\nexport abstract class ControllerBase\r\n{\r\n public pageTitle: string = \"\";\r\n public alert: any;\r\n\r\n constructor()\r\n {\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n public setSuccessAlert(message: string): void\r\n {\r\n this.alert = new Alert(AlertType.Success, message);\r\n }\r\n\r\n public setInfoAlert(message: string): void\r\n {\r\n this.alert = new Alert(AlertType.Info, message);\r\n }\r\n\r\n public setWarningAlert(message: string): void\r\n {\r\n this.alert = new Alert(AlertType.Warning, message);\r\n }\r\n\r\n public setDangerAlert(message: string): void\r\n {\r\n this.alert = new Alert(AlertType.Danger, message);\r\n }\r\n\r\n /**\r\n * If clearAlert is false - the alert is NOT cleared\r\n */\r\n public clearAlert(clearAlert: boolean = true): void\r\n {\r\n if (clearAlert)\r\n {\r\n this.alert = null;\r\n }\r\n }\r\n\r\n public createErrorMessage(failures: any): String\r\n {\r\n var message = \"\";\r\n\r\n var array = Object.keys(failures);\r\n\r\n array.forEach(function (key, index)\r\n {\r\n message += \", \" + key + \":\";\r\n failures[key].forEach(element =>\r\n {\r\n message += ' ' + element;\r\n });\r\n });\r\n\r\n return message;\r\n }\r\n}\r\n","import { StringTools } from '../util/StringTools';\r\n\r\n\r\nexport class CRUDEvents\r\n{\r\n public get Add() { return \"{0}:Add\".format(this.entityConfig.entityName); }\r\n public get Saved() { return \"{0}:Saved\".format(this.entityConfig.entityName); }\r\n public get GetById() { return \"{0}:GetById\".format(this.entityConfig.entityName); }\r\n public get Cancelled() { return \"{0}:Cancelled\".format(this.entityConfig.entityName); }\r\n public get Deleted() { return \"{0}:Deleted\".format(this.entityConfig.entityName); }\r\n public get Selected() { return \"{0}:Selected\".format(this.entityConfig.entityName); }\r\n\r\n constructor(private entityConfig: EntityConfig) { }\r\n}\r\n\r\nexport class EntityConfig\r\n{\r\n public entityName: string;\r\n public entityPluralName: string;\r\n private _entityDisplayName: string;\r\n private _entityPluralDisplayName: string;\r\n\r\n public apiUrl: string;\r\n\r\n public canRead: boolean;\r\n public canEdit: boolean;\r\n public readRoles: Array;\r\n public editRoles: Array;\r\n\r\n // Properties for Domain Specific Entities\r\n public domainName: string;\r\n public domainContextPropertyName: string;\r\n public domainContextId: number;\r\n\r\n public supportsSoftDeletes: boolean;\r\n public isDomainSpecificEntity: boolean;\r\n public isVersionableEntity: boolean;\r\n public isDraftableEntity: boolean;\r\n\r\n public get entityDisplayName(): string\r\n {\r\n return StringTools.getHeadingFromFieldName(this.entityName);\r\n }\r\n\r\n public set entityDisplayName(entityDisplayName: string)\r\n {\r\n this._entityDisplayName = entityDisplayName;\r\n }\r\n\r\n public get entityPluralDisplayName(): string\r\n {\r\n return StringTools.getHeadingFromFieldName(this.entityPluralName);\r\n }\r\n\r\n public set entityPluralDisplayName(entityPluralDisplayName: string)\r\n {\r\n this._entityPluralDisplayName = entityPluralDisplayName;\r\n }\r\n}\r\n","import { HttpClient, HttpEvent, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { map, share } from 'rxjs/operators';\r\nimport { AppClientContext } from './AppClientContext';\r\nimport { Guard } from '../util/Guard';\r\nimport { Tools } from '../util/Tools';\r\nimport { ApiServiceBase } from './ApiServiceBase';\r\nimport { EntityConfig } from './EntityConfig';\r\nimport { IPage, PageResult } from './Pagination';\r\nimport { UrlQueryDef } from './UrlQueryDef';\r\n\r\nexport class EntityDataServiceBase extends ApiServiceBase\r\n{\r\n public entityConfig: EntityConfig;\r\n\r\n public get_WebApiMethod: string;\r\n public getById_WebApiMethod: string;\r\n public insert_WebApiMethod: string;\r\n public update_WebApiMethod: string;\r\n public delete_WebApiMethod: string;\r\n public undelete_WebApiMethod: string;\r\n\r\n // Properties for Domain Specific Entities\r\n public canRead: boolean;\r\n public canEdit: boolean;\r\n\r\n public entityDisplayName: string;\r\n\r\n constructor(protected http: HttpClient,\r\n // MUST specify the entity name in the implementing class - this drives the lookup\r\n // of the entity config - which drives the behavior of this service\r\n public entityName: string)\r\n {\r\n super(http);\r\n\r\n Guard.argumentNotBlankOrNull(entityName, \"entityName\");\r\n\r\n // Get the Entity Config (this allows implementing classes to override this)\r\n this.loadEntityConfig();\r\n\r\n this.apiUrl = this.entityConfig.apiUrl;\r\n this.canRead = this.entityConfig.canRead;\r\n this.canEdit = this.entityConfig.canEdit;\r\n\r\n this.entityDisplayName = this.entityConfig.entityDisplayName;\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n Guard.failIfTrue(!AppClientContext.Instance.entityConfigDict, `${this.entityName} entity config dict has not been loaded yet`);\r\n\r\n // Get the Entity Config\r\n if (!AppClientContext.Instance.entityConfigDict.has(this.entityName))\r\n {\r\n Tools.throwException(\"Missing EntityConfig in ClientContext.entityConfigDict for entity: {0}\".format(this.entityName));\r\n }\r\n\r\n this.entityConfig = AppClientContext.Instance.entityConfigDict.get(this.entityName);\r\n }\r\n\r\n // Used to temporarily use a different ApiUrl for the entity\r\n protected useCustomApiUrl(customApiUrlString: string): void\r\n {\r\n this.apiUrl = customApiUrlString;\r\n }\r\n\r\n //Used to to restore the entity's ApiUrl\r\n protected restoreApiUrl(): void\r\n {\r\n this.apiUrl = this.entityConfig.apiUrl;\r\n }\r\n\r\n public get(queryDef: UrlQueryDef = null, pageSize: number = 100, pageNumber: number = 0): Observable>\r\n {\r\n //Required for pagination\r\n queryDef = this._getQueryDef(queryDef);\r\n\r\n if (queryDef.pagingActive)\r\n {\r\n queryDef.top = pageSize;\r\n queryDef.skip = pageSize * pageNumber;\r\n queryDef.params = {\r\n pageSize,\r\n pageNumber,\r\n $count: 'true'\r\n };\r\n }\r\n else { queryDef.params = {}; }\r\n\r\n var subject = this.http.get>(this.createUrl(this.get_WebApiMethod), queryDef.getRequestConfig())\r\n .pipe(\r\n map((pageResult: any) => ({\r\n total: pageResult.totalCount,\r\n rows: pageResult.items,\r\n pageSize: queryDef.params.pageSize,\r\n pageNumber: queryDef.params.pageNumber\r\n } as IPage)),\r\n share());\r\n\r\n this._handleObservableResponse(subject);\r\n\r\n return subject;\r\n }\r\n\r\n public getById(id: number, queryDef: UrlQueryDef = new UrlQueryDef()): Observable<{}>\r\n {\r\n let observable = this.http.get(this.createUrl(this.getById_WebApiMethod, id), queryDef.getRequestConfig()).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n public update(entity: any, config?: any): Observable<{}>\r\n {\r\n\r\n let observable = this.http.put(this.createUrl(this.update_WebApiMethod), entity, this.getStandardConfig(config)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n public insert(entity: any, config?: any): Observable<{}>\r\n {\r\n\r\n let observable = this.http.post(this.createUrl(this.insert_WebApiMethod), entity, this.getStandardConfig(config)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n public delete(id: number, config?: any): Observable<{}>\r\n {\r\n var observable = this.http.delete(this.createUrl(this.delete_WebApiMethod, id), this.getStandardConfig(config)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n // *********************************************************\r\n // #region Support Methods\r\n // *********************************************************\r\n\r\n public checkCanRead()\r\n {\r\n Guard.failIfFalse(this.canRead, \"User is not authorized to Read the {0} entity.\".format(this.entityConfig.entityName));\r\n }\r\n\r\n public checkCanEdit()\r\n {\r\n Guard.failIfFalse(this.canEdit, \"User is not authorized to Edit the {0} entity.\".format(this.entityConfig.entityName));\r\n }\r\n\r\n public _getQueryDef(queryDef: UrlQueryDef): UrlQueryDef\r\n {\r\n if (queryDef == null)\r\n {\r\n queryDef = new UrlQueryDef();\r\n }\r\n\r\n return queryDef;\r\n }\r\n\r\n protected getStandardConfig(config: any): UrlQueryDef\r\n {\r\n if (!config)\r\n {\r\n config = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n }\r\n\r\n return config;\r\n }\r\n\r\n public getPaginationQueryDef(queryDef: UrlQueryDef = null, pageSize: number = 100, pageNumber: number = 0): UrlQueryDef\r\n {\r\n //Required for pagination\r\n queryDef = this._getQueryDef(queryDef);\r\n\r\n if (queryDef.pagingActive)\r\n {\r\n queryDef.top = pageSize;\r\n queryDef.skip = pageSize * pageNumber;\r\n queryDef.params = {\r\n ...queryDef.params,\r\n pageSize,\r\n pageNumber,\r\n $count: 'true'\r\n };\r\n }\r\n\r\n return queryDef;\r\n }\r\n\r\n public getPageValues(observableRequest: Observable>>, queryDef: UrlQueryDef): Observable>\r\n {\r\n return observableRequest\r\n .pipe(\r\n map((pageResult: any) => ({\r\n total: pageResult.totalCount,\r\n rows: pageResult.items,\r\n pageSize: queryDef.params.pageSize,\r\n pageNumber: queryDef.params.pageNumber\r\n } as IPage)),\r\n share()\r\n );\r\n }\r\n\r\n // #endregion\r\n\r\n}\r\n","import { HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Section } from \"./AppInterfaceAndBaseClasses\";\r\n\r\nexport class UrlQueryDef\r\n{\r\n\r\n // ********************************************************************\r\n //#region Properties / Variables\r\n // ********************************************************************\r\n\r\n public includes: string;\r\n public pagingActive: boolean = true;\r\n\r\n public domainSpecificContextId?: number;\r\n\r\n /**\r\n * {Object.}\r\n * Map of strings or objects which will be turned to ?key1=value1&key2=value2 after the url. If the value is not a string, it will be JSONified.\r\n */\r\n public params: any;\r\n\r\n /**\r\n * If true - and if the Entity supports soft deletes - then deleted rows will be included in the results\r\n */\r\n public includeDeletedRows: boolean = false;\r\n\r\n /**\r\n * Expands related entities inline.\r\n *\r\n * Examples:\r\n * Enrollments\r\n * Enrollments/Course\r\n */\r\n public expand: string;\r\n\r\n /**\r\n * Selects which properties to include in the response.\r\n *\r\n * NOTE: To select properties from child entities, they must be included in the expand list.\r\n *\r\n * Examples:\r\n * Id,LastName - Gets the Id and LastName properties of the entity\r\n * Id,LastName,Enrollments - Gets the Id, LastName properties of the entity - and also the Enrollments child object collection\r\n * Id,LastName,Enrollments/CourseID - Gets the Id, LastName properties of the entity - and also the CourseID property of the Enrollments child object collection\r\n */\r\n public select: string;\r\n\r\n /**\r\n * Filters the results, based on a Boolean condition.\r\n *\r\n * (Note: the operators ARE case sensitive - and must be all lower case)\r\n *\r\n * Supported Operators: eq, ne, gt, ge, lt, le, and, or, not\r\n * Grouping Operator: ()\r\n * Examples:\r\n * Id gt 5\r\n * Id gt 5 and LastName gt 'r'\r\n *\r\n * Special Operators:\r\n * startswith: startswith(LastName, 'mario')\r\n * endswith: endswith(LastName, 'arado')\r\n * substringof: (contains): substringof('zz', LastName)\r\n * and: startswith(LastName, 'a') and Id lt 3\r\n *\r\n * Date Filters (examples - likely more options):\r\n * year: year(EnrollmentDate) lt 2010\r\n * month: month(EnrollmentDate) gt 11\r\n *\r\n * Most likely there are other filtering operations available.\r\n */\r\n\r\n public filter: string;\r\n\r\n /**\r\n * Sorts the results.\r\n *\r\n * Examples:\r\n * LastName\r\n * EnrollmentDate desc,LastName\r\n */\r\n public orderby: string;\r\n\r\n /**\r\n * Returns only the first N results\r\n */\r\n public top: number;\r\n\r\n /**\r\n * Skips the first N results\r\n */\r\n public skip: number;\r\n\r\n public keyword: any;\r\n /**\r\n * Page where we are\r\n */\r\n public pageNo: number;\r\n /**\r\n * Number of records to display per page\r\n */\r\n public pageSize: number;\r\n /**\r\n * Filter word\r\n */\r\n public searchWord: string;\r\n public sortBy: any;\r\n public descending: any;\r\n\r\n\r\n // #endregion\r\n\r\n // ********************************************************************\r\n //#region Methods\r\n // ********************************************************************\r\n\r\n /** Method to add HttpParams into our request. Accepts a pair */\r\n public addParam(name: string, value: any)\r\n {\r\n if (this.params == null) { this.params = {}; }\r\n\r\n this.params[name] = value;\r\n }\r\n\r\n public getRequestConfig(noParams = false): any\r\n {\r\n let headers = new HttpHeaders();\r\n\r\n headers = headers.append('Content-Type','application/json');\r\n headers = headers.append('SECTION',Section.Ecommerce.toString());\r\n\r\n const requestConfig = {\r\n params: noParams ? null : this._getParamsMap(),\r\n headers: headers\r\n };\r\n\r\n return requestConfig;\r\n }\r\n\r\n // #endregion\r\n\r\n // ********************************************************************\r\n //#region Support Methods\r\n // ********************************************************************\r\n\r\n private _getParamsMap(): HttpParams\r\n {\r\n let paramsMap = new HttpParams();\r\n\r\n if (this.params != null)\r\n {\r\n // Add properties from params to params map\r\n for (var paramName in this.params)\r\n {\r\n paramsMap = paramsMap.append(paramName, this.params[paramName]);\r\n }\r\n }\r\n\r\n if (this.includes != null)\r\n {\r\n paramsMap = paramsMap.append(\"includes\", this.includes);\r\n }\r\n\r\n if (this.includeDeletedRows != null)\r\n {\r\n paramsMap = paramsMap.append(\"includeDeletedRows\", this.includeDeletedRows.toString());\r\n }\r\n\r\n if (this.domainSpecificContextId)\r\n {\r\n paramsMap = paramsMap.append(\"domainSpecificContextIds\", this.domainSpecificContextId.toString());\r\n }\r\n\r\n // WebApi - ODATA parameters\r\n if (this.expand != null) { paramsMap = paramsMap.append(\"$expand\", this.expand); }\r\n if (this.select != null) { paramsMap = paramsMap.append(\"$select\", this.select); }\r\n if (this.filter != null) { paramsMap = paramsMap.append(\"$filter\", this.filter); }\r\n if (this.orderby != null) { paramsMap = paramsMap.append(\"$orderby\", this.orderby); }\r\n if (this.top != null) { paramsMap = paramsMap.append(\"$top\", this.top.toString()); }\r\n if (this.skip != null) { paramsMap = paramsMap.append(\"$skip\", this.skip.toString()); }\r\n if (this.keyword != null) { paramsMap = paramsMap.append(\"keyword\", this.keyword.toString()); }\r\n if (this.searchWord != null) { paramsMap = paramsMap.append(\"searchWord\", this.searchWord.toString()); }\r\n if (this.pageNo != null) { paramsMap = paramsMap.append(\"pageNo\", this.pageNo.toString()); }\r\n if (this.pageSize != null) { paramsMap = paramsMap.append(\"pageSize\", this.pageSize.toString()); }\r\n if (this.sortBy != null) { paramsMap = paramsMap.append(\"sortBy\", this.sortBy.toString()); }\r\n if (this.descending != null) { paramsMap = paramsMap.append(\"descending\", this.descending); }\r\n\r\n return paramsMap;\r\n }\r\n\r\n //#endregion\r\n}\r\n","export interface IUser\r\n{\r\n id: number;\r\n loginId: string;\r\n\r\n firstName: string;\r\n lastName: string;\r\n email: string;\r\n\r\n loginCount: number;\r\n createdDate: Date;\r\n lastUpdatedDate: Date;\r\n\r\n isDeleted: boolean;\r\n isAccountLocked: boolean;\r\n accountLockedReason: string;\r\n lastLoginDate: Date;\r\n allowInteractiveLogin: boolean;\r\n passwordResetRequired: boolean;\r\n passwordResetTempPasswordTimeoutDate: Date;\r\n passwordLastResetDate: Date;\r\n nickname:string\r\n permissions: string[];\r\n\r\n havePermission(permissionCode: string): boolean\r\n}\r\n\r\nexport class User\r\n{\r\n public id: number;\r\n public loginId: string;\r\n\r\n public firstName: string;\r\n public lastName: string;\r\n public email: string;\r\n\r\n public loginCount: number;\r\n public createdDate: Date;\r\n public lastUpdatedDate: Date;\r\n\r\n public isDeleted: boolean;\r\n public isAccountLocked: boolean;\r\n public accountLockedReason: string;\r\n public lastLoginDate: Date;\r\n public allowInteractiveLogin: boolean;\r\n public passwordResetRequired: boolean;\r\n public passwordResetTempPasswordTimeoutDate: Date;\r\n public passwordLastResetDate: Date;\r\n public nickname: string;\r\n public permissions: string[];\r\n\r\n constructor() { }\r\n\r\n public havePermission(permissionCode: string): boolean\r\n {\r\n return this.permissions.any(permission => permission === permissionCode);\r\n }\r\n\r\n}\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-accordion',\r\n templateUrl: './accordion.component.html',\r\n styleUrls: ['./accordion.component.css']\r\n})\r\nexport class AccordionComponent implements OnInit\r\n{\r\n @Input() faqs: [];\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n","
\r\n \r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { slideDown } from 'src/app/_appCommon/animations/animations';\r\n\r\n@Component({\r\n selector: 'app-panel',\r\n templateUrl: './panel.component.html',\r\n styleUrls: ['./panel.component.css'],\r\n animations: [slideDown]\r\n})\r\nexport class PanelComponent implements OnInit\r\n{\r\n @Input() item;\r\n public isOpen = false;\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n","\r\n

{{item.question}}

\r\n \r\n\r\n
\r\n

\r\n
\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-background',\r\n template: `\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
`,\r\n styles: [`\r\n svg {\r\n opacity: 60%;\r\n transition: 500ms ease-in-out;\r\n z-index: 0;\r\n }\r\n\r\n svg:hover {\r\n transform: translateY(1.25rem);\r\n }\r\n `]\r\n})\r\nexport class BackgroundComponent { }\r\n","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: 'app-faq-background',\r\n template: `\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
`,\r\n styles: [`\r\n svg {\r\n opacity: 60%;\r\n transition: 500ms ease-in-out;\r\n z-index: 0;\r\n }\r\n\r\n svg:hover {\r\n transform: translateY(1.25rem);\r\n }\r\n `]\r\n})\r\nexport class FaqBackgroundComponent { }\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FileHandle } from '../../base/AppInterfaceAndBaseClasses';\r\n\r\n@Component({\r\n selector: 'app-file-selector',\r\n templateUrl: './file-selector.component.html',\r\n styleUrls: ['./file-selector.component.css']\r\n})\r\nexport class FileSelectorComponent implements OnInit\r\n{\r\n\r\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef;\r\n @Input() text: string;\r\n\r\n @Output() onSelectFiles = new EventEmitter();\r\n\r\n public textArea = \"Arrastra y suelta las imagenes\";\r\n\r\n private files: FileHandle[] = [];\r\n\r\n ngOnInit(): void\r\n {\r\n }\r\n\r\n public changeFileListener(event): void\r\n {\r\n this.uploadFiles(event.target.files);\r\n }\r\n\r\n public uploadFiles(filesList): void\r\n {\r\n this.files = [];\r\n for (let i = 0; i < filesList.length; i++)\r\n {\r\n this.files[i] = {\r\n file: filesList[i],\r\n url: ''\r\n };\r\n this.getFileUrl(filesList[i], i);\r\n }\r\n\r\n this.fileInput.nativeElement.value = '';\r\n this.onSelectFiles.emit(this.files);\r\n }\r\n\r\n public openFileBrowser(): void\r\n {\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n private getFileUrl(file: File, index: number)\r\n {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = (events:any) =>\r\n {\r\n this.files[index].url = events.target.result;\r\n };\r\n }\r\n}\r\n","\r\n \r\n

{{textArea}}

\r\n O\r\n \r\n \r\n\r\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-slider-compare',\r\n templateUrl: './slider-compare.component.html',\r\n styleUrls: ['./slider-compare.component.css']\r\n})\r\nexport class SliderCompareComponent implements OnInit\r\n{\r\n @ViewChild('sliderWrapper') sliderWrapper: ElementRef;\r\n\r\n @Input() imgBefore;\r\n @Input() imgAfter;\r\n\r\n public positionDivider = 0.5;\r\n public imageRevealFrag = this.positionDivider;\r\n public isMouseDown = false;\r\n\r\n ngOnInit(): void { }\r\n\r\n public onHandleSlide(position: number): void\r\n {\r\n const element = this.sliderWrapper.nativeElement.getBoundingClientRect();\r\n if(this.sliderWrapper)\r\n {\r\n if(position > element.right)\r\n this.positionDivider = 0;\r\n else if(position < element.left)\r\n this.positionDivider = 1;\r\n else\r\n {\r\n this.positionDivider = (element.right - position) / element.width;\r\n }\r\n }\r\n }\r\n\r\n public getClipPath(): string\r\n {\r\n return `inset(0 ${this.positionDivider*100}% 0 0)`;\r\n }\r\n\r\n public getPosition(): string\r\n {\r\n return `${this.positionDivider*100}%`;\r\n }\r\n\r\n public onHandleMouseMove(event): void\r\n {\r\n if(this.isMouseDown)\r\n this.onHandleSlide(event.clientX);\r\n }\r\n\r\n public onHandleTouchMove(event): void\r\n {\r\n this.onHandleSlide(event.touches[0].clientX);\r\n }\r\n\r\n public onHandleMouseDown()\r\n {\r\n this.isMouseDown = true;\r\n window.onmouseup = this.onHandleMouseUp;\r\n }\r\n\r\n public onHandleMouseUp()\r\n {\r\n this.isMouseDown = false;\r\n window.onmousemove = undefined;\r\n window.onmouseup = undefined;\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \"{{imgBefore.alt}}\"\r\n \"{{imgAfter.alt}}\"\r\n\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { PATIENTTESTIMONIALSTEXT } from '../../base/Constants';\r\n\r\n// import Swiper core and required modules\r\nimport SwiperCore, { Autoplay, Navigation } from \"swiper\";\r\nimport 'swiper/css';\r\nimport 'swiper/css/navigation';\r\n\r\n// install Swiper modules\r\nSwiperCore.use([Autoplay, Navigation]);\r\n\r\n@Component({\r\n selector: 'app-before-after-slider',\r\n templateUrl: './before-after-slider.component.html',\r\n styleUrls: ['./before-after-slider.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\n\r\nexport class BeforeAfterSliderComponent implements OnInit\r\n{\r\n public PatientTestimonialsText = PATIENTTESTIMONIALSTEXT;\r\n\r\n ngOnInit() {}\r\n}\r\n","
\r\n \r\n \r\n
\r\n

{{item.content}}

\r\n
\r\n
\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-whatsapp',\r\n templateUrl: './whatsapp-float-icon.component.html',\r\n styleUrls: ['./whatsapp-float-icon.component.css']\r\n})\r\nexport class WhatsappFloatIconComponent implements OnInit\r\n{\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n
\r\n","import { HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { AppClientContext } from '../base/AppClientContext';\r\nimport { Section } from '../base/AppInterfaceAndBaseClasses';\r\nimport { BACKOFFICE_USER_TOKEN, ECOMMERCE_USER_TOKEN, TOKEN_HEADER_KEY } from '../base/Constants';\r\n\r\n@Injectable()\r\nexport class AuthenticationInterceptor implements HttpInterceptor\r\n{\r\n constructor() { }\r\n\r\n public intercept(req: HttpRequest, next: HttpHandler): Observable>\r\n {\r\n // Get headers from the ClientContext.\r\n let authReq = req;\r\n\r\n let section = req.headers.get('section');\r\n\r\n let userToken = +section == Section.Backoffice ? BACKOFFICE_USER_TOKEN : ECOMMERCE_USER_TOKEN;\r\n\r\n const token = AppClientContext.Instance.headerValues.get(userToken);\r\n\r\n if (token != null)\r\n {\r\n authReq = req.clone({ headers: req.headers.set(TOKEN_HEADER_KEY, token)});\r\n }\r\n\r\n return next.handle(authReq).pipe(catchError(error =>\r\n {\r\n return throwError(error);\r\n }));\r\n }\r\n\r\n\r\n private getHttpHeaders = (headers: Array, originalHeaders: any): HttpHeaders =>\r\n {\r\n let res = new HttpHeaders();\r\n\r\n for (const item of headers)\r\n {\r\n res = res.append(item.key, item.value);\r\n }\r\n\r\n for (let [key, value] of originalHeaders.headers)\r\n {\r\n res = res.append(key, value[0]);\r\n }\r\n\r\n try\r\n {\r\n const contentType = originalHeaders.get('Content-Type');\r\n\r\n if (contentType) { res = res.append('Content-Type', contentType); }\r\n }\r\n catch (e)\r\n {\r\n res = res.append('Content-Type', 'application/json');\r\n }\r\n\r\n return res;\r\n };\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safe',\r\n pure: false\r\n})\r\n\r\nexport class SafePipe implements PipeTransform\r\n{\r\n constructor(private domSanitizer: DomSanitizer) { }\r\n\r\n transform(value: string, type: string): any\r\n {\r\n if (value != null && value != undefined && value != \"\")\r\n {\r\n switch (type)\r\n {\r\n case 'html': return this.domSanitizer.bypassSecurityTrustHtml(value);\r\n case 'style': return this.domSanitizer.bypassSecurityTrustStyle(value);\r\n case 'script': return this.domSanitizer.bypassSecurityTrustScript(value);\r\n case 'url': return this.domSanitizer.bypassSecurityTrustUrl(value);\r\n case 'resourceUrl': return this.domSanitizer.bypassSecurityTrustResourceUrl(value);\r\n default: return \"\";\r\n }\r\n }\r\n return \"\";\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslateService } from '../services/translate.service';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n pure: false,\r\n})\r\n\r\nexport class TranslatePipe implements PipeTransform\r\n{\r\n constructor(private translate: TranslateService) { }\r\n\r\n transform(_key: string = ''): string\r\n {\r\n return this.translate.getElement(_key);\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { DefaultLanguage, StorageItems } from '../base/Constants';\r\nimport { LocalStorageService } from './local-storage.service';\r\nexport class TranslateService\r\n{\r\n private lang: string = DefaultLanguage.ES;\r\n private data: any = undefined;\r\n private langChangeSource$: BehaviorSubject = new BehaviorSubject(DefaultLanguage.ES);\r\n\r\n constructor(protected http: HttpClient,\r\n protected localstorageService: LocalStorageService) { }\r\n\r\n public onTranslateChange(): Observable\r\n {\r\n return this.langChangeSource$.asObservable();\r\n }\r\n\r\n public get languageCode()\r\n {\r\n return this.lang;\r\n }\r\n\r\n private initTranslation(): Promise<{}>\r\n {\r\n return new Promise<{}>((resolve, reject) =>\r\n {\r\n this.http.get(`../../../assets/translations/translations.json`)\r\n .subscribe(\r\n translation =>\r\n {\r\n this.data = Object.assign({}, translation || {});\r\n resolve(this.data);\r\n },\r\n error =>\r\n {\r\n this.data = undefined;\r\n resolve(this.data);\r\n }\r\n );\r\n });\r\n }\r\n\r\n public initService(): void\r\n {\r\n this.initTranslation();\r\n }\r\n\r\n public use(lang: string): void\r\n {\r\n let _stLang = this.lang;\r\n\r\n if (lang !== _stLang)\r\n {\r\n _stLang = (lang !== null && lang !== undefined) ? lang : _stLang = DefaultLanguage.ES;\r\n this.localstorageService.setItem(StorageItems.SelectedLang, _stLang);\r\n this.lang = _stLang;\r\n this.langChangeSource$.next(_stLang);\r\n }\r\n }\r\n\r\n public getElement(key: string): string\r\n {\r\n let message = key;\r\n\r\n if (this.lang != DefaultLanguage.ES && this.data != undefined)\r\n {\r\n let lkey = key.toLowerCase();\r\n message = this.data[lkey] || key;\r\n }\r\n\r\n return message;\r\n }\r\n}\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { SwiperModule } from \"swiper/angular\";\r\nimport { AppRoutingModule } from \"../app-routing.module\";\r\nimport { AppComponent } from \"../app.component\";\r\nimport { AccordionComponent } from './components/accordion/accordion.component';\r\nimport { PanelComponent } from \"./components/accordion/panel/panel.component\";\r\nimport { BeforeAfterSliderComponent } from \"./components/slider/before-after-slider.component\";\r\nimport { SafePipe } from \"./pipes/safe.pipe \";\r\nimport { TranslatePipe } from \"./pipes/translate.pipe\";\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { ScrollAnimationDirective } from \"../_directives/scroll-animation.directive\";\r\nimport { BackgroundComponent } from \"./components/background/background.component\";\r\nimport { FaqBackgroundComponent } from \"./components/background/faq-background.component\";\r\nimport { FileSelectorComponent } from \"./components/file-selector/file-selector.component\";\r\nimport { PhoneNumberDirective } from \"../_directives/phone-number-validator.directive\";\r\nimport { WhatsappFloatIconComponent } from './components/whatsapp-float-icon/whatsapp-float-icon.component';\r\nimport { SliderCompareComponent } from \"./components/slider-compare/slider-compare.component\";\r\nimport { DragAndDropFilesDirective } from \"../_directives/drag-and-drop-files.directive\";\r\nimport { AppShareModule } from '../../shared/app.module';\r\nimport { CalendarValidationDirective } from \"../_directives/calendar-validation.directive\";\r\nimport { OnlyNumbersDirective } from \"../_directives/only-numbers.directive\";\r\n\r\n@NgModule({\r\n declarations: [\r\n TranslatePipe,\r\n SafePipe,\r\n BeforeAfterSliderComponent,\r\n AccordionComponent,\r\n PanelComponent,\r\n FileSelectorComponent,\r\n BackgroundComponent,\r\n FaqBackgroundComponent,\r\n WhatsappFloatIconComponent,\r\n SliderCompareComponent,\r\n ScrollAnimationDirective,\r\n PhoneNumberDirective,\r\n DragAndDropFilesDirective,\r\n CalendarValidationDirective,\r\n OnlyNumbersDirective\r\n ],\r\n exports: [\r\n TranslatePipe,\r\n SafePipe,\r\n BeforeAfterSliderComponent,\r\n AccordionComponent,\r\n PanelComponent,\r\n FileSelectorComponent,\r\n BackgroundComponent,\r\n FaqBackgroundComponent,\r\n WhatsappFloatIconComponent,\r\n SliderCompareComponent,\r\n ScrollAnimationDirective,\r\n PhoneNumberDirective,\r\n DragAndDropFilesDirective,\r\n CalendarValidationDirective,\r\n OnlyNumbersDirective\r\n ],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n AppRoutingModule,\r\n SwiperModule,\r\n AppShareModule,\r\n BrowserAnimationsModule\r\n ],\r\n bootstrap: [AppComponent],\r\n providers: []\r\n})\r\n\r\nexport class ShareModule { }\r\n","// OUTSIDE of a Module, thus, global\r\ninterface Array\r\n{\r\n /**\r\n * Clears the contents of an array\r\n * NOTE: This one I wrote (jtp)\r\n */\r\n clear(): void;\r\n\r\n /**\r\n * Returns true if this list contains no mappings.\r\n * @return {boolean} true if this list contains no mappings.\r\n */\r\n isEmpty(): boolean;\r\n\r\n add(value: T): void\r\n addRange(array: Array): void\r\n\r\n /** Determines whether any element of the array satisfies a condition. */\r\n any(predicate?: (element: T) => boolean): boolean;\r\n\r\n /** Determines whether the array contains a specified element by using the default equality comparer. */\r\n contains(value: T): boolean;\r\n\r\n select(selector: (element: T, index: number) => TResult): Array;\r\n\r\n /** Filters a sequence of values based on a predicate. */\r\n where(predicate: (element: T, index: number) => boolean): Array;\r\n\r\n /** Returns the first value if present, or null if not. */\r\n firstOrNull(): T;\r\n\r\n /** Shuffles the array in random order. */\r\n shuffle(): void;\r\n\r\n // ************************************************************\r\n // The following are from MDN - polyfills of future Array stuff\r\n // ************************************************************\r\n\r\n /**\r\n * The includes() method determines whether an array includes a certain element, returning true or false as appropriate.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes\r\n *\r\n * Syntax: var boolean = array.includes(searchElement[, fromIndex])\r\n *\r\n * Parameters:\r\n * searchElement: The element to search for.\r\n * fromIndex: Optional.The position in this array at which to begin searching for searchElement.A negative value searches from the end of the array.Defaults to 0.\r\n *\r\n * Return value: A Boolean.\r\n */\r\n includes(searchElement: any): boolean;\r\n\r\n /**\r\n * The find() method returns a value in the array, if an element in the array satisfies the provided testing function. Otherwise undefined is returned.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\r\n *\r\n * Syntax: arr.find(callback[, thisArg])\r\n *\r\n * Parameters:\r\n * callback: Function to execute on each value in the array, taking three arguments:\r\n * element: The current element being processed in the array.\r\n * index: The index of the current element being processed in the array.\r\n * array: The array find was called upon.\r\n *\r\n * thisArg: Optional.Object to use as this when executing callback.\r\n */\r\n find(predicate: (element: T, index: number, array: Array) => boolean): T;\r\n\r\n /**\r\n * The findIndex() method returns an index in the array, if an element in the array satisfies the provided testing function. Otherwise - 1 is returned.\r\n * See also the find() method, which returns the value of a found element in the array instead of its index.\r\n *\r\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\r\n *\r\n * Syntax: arr.findIndex(callback[, thisArg])\r\n *\r\n * Parameters:\r\n * callback: Function to execute on each value in the array, taking three arguments:\r\n * element: The current element being processed in the array.\r\n * index: The index of the current element being processed in the array.\r\n * array: The array findIndex was called upon.\r\n *\r\n * thisArg: Optional.Object to use as this when executing callback.\r\n */\r\n findIndex(predicate: (element: T, index: number, array: Array) => boolean): number;\r\n}\r\n\r\n// ************************************************************\r\n// These are our extensions to Array\r\n// ************************************************************\r\n\r\n\r\nif (!Array.prototype.clear)\r\n{\r\n Array.prototype.clear = function ()\r\n {\r\n this.length = 0;\r\n };\r\n}\r\n\r\nif (!Array.prototype.isEmpty)\r\n{\r\n Array.prototype.isEmpty = function ()\r\n {\r\n return this.length === 0;\r\n };\r\n}\r\n\r\nif (!Array.prototype.add)\r\n{\r\n Array.prototype.add = function (value)\r\n {\r\n this.push(value);\r\n };\r\n}\r\n\r\nif (!Array.prototype.addRange)\r\n{\r\n Array.prototype.addRange = function (array)\r\n {\r\n array.forEach(a => this.push(a));\r\n };\r\n}\r\n\r\nif (!Array.prototype.any)\r\n{\r\n Array.prototype.any = function (predicate: any)\r\n {\r\n if (this.find(predicate))\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }\r\n };\r\n}\r\n\r\nif (!Array.prototype.contains)\r\n{\r\n Array.prototype.contains = function (value)\r\n {\r\n let match: boolean = false;\r\n\r\n this.forEach((item: any) =>\r\n {\r\n if (item == value)\r\n {\r\n match = true;\r\n }\r\n });\r\n\r\n return match;\r\n };\r\n}\r\n\r\nif (!Array.prototype.select)\r\n{\r\n Array.prototype.select = function (selector: any)\r\n {\r\n if (typeof selector !== 'function') { throw new TypeError('selector must be a function'); }\r\n\r\n let results: any[] = [];\r\n\r\n let thisArg = arguments[1];\r\n\r\n this.forEach((value: any, index: number) =>\r\n {\r\n results.push(\r\n selector.call(thisArg, value, index)\r\n );\r\n });\r\n\r\n return results;\r\n };\r\n}\r\n\r\nif (!Array.prototype.where)\r\n{\r\n Array.prototype.where = function (predicate)\r\n {\r\n if (typeof predicate !== 'function') { throw new TypeError('predicate must be a function'); }\r\n\r\n let results: any[] = [];\r\n\r\n let thisArg = arguments[1];\r\n\r\n this.forEach((item: any) =>\r\n {\r\n if (predicate.call(thisArg, item))\r\n {\r\n results.push(item);\r\n }\r\n });\r\n\r\n return results;\r\n };\r\n}\r\n\r\nif (!Array.prototype.firstOrNull)\r\n{\r\n Array.prototype.firstOrNull = function ()\r\n {\r\n if (this.length == 0) { return null; }\r\n else { return this[0]; }\r\n };\r\n}\r\n\r\n// ************************************************************\r\n// The following are from MDN - polyfills of future Array stuff\r\n// ************************************************************\r\n\r\nif (!Array.prototype.includes)\r\n{\r\n Array.prototype.includes = function (searchElement: any /*, fromIndex*/)\r\n {\r\n 'use strict';\r\n let O = Object(this);\r\n let len = parseInt(O.length) || 0;\r\n if (len === 0)\r\n {\r\n return false;\r\n }\r\n let n = parseInt(arguments[1]) || 0;\r\n let k;\r\n if (n >= 0)\r\n {\r\n k = n;\r\n }\r\n else\r\n {\r\n k = len + n;\r\n if (k < 0) { k = 0; }\r\n }\r\n let currentElement;\r\n while (k < len)\r\n {\r\n currentElement = O[k];\r\n if (searchElement === currentElement ||\r\n (searchElement !== searchElement && currentElement !== currentElement))\r\n { // NaN !== NaN\r\n return true;\r\n }\r\n k++;\r\n }\r\n return false;\r\n };\r\n}\r\n\r\nif (!Array.prototype.find)\r\n{\r\n Array.prototype.find = function (predicate: any)\r\n {\r\n if (this === null)\r\n {\r\n throw new TypeError('Array.prototype.find called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function')\r\n {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n let list = Object(this);\r\n let length = list.length >>> 0;\r\n let thisArg = arguments[1];\r\n let value;\r\n\r\n for (let i = 0; i < length; i++)\r\n {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list))\r\n {\r\n return value;\r\n }\r\n }\r\n return undefined;\r\n };\r\n}\r\n\r\nif (!Array.prototype.findIndex)\r\n{\r\n Array.prototype.findIndex = function (predicate: any)\r\n {\r\n if (this === null)\r\n {\r\n throw new TypeError('Array.prototype.findIndex called on null or undefined');\r\n }\r\n if (typeof predicate !== 'function')\r\n {\r\n throw new TypeError('predicate must be a function');\r\n }\r\n let list = Object(this);\r\n let length = list.length >>> 0;\r\n let thisArg = arguments[1];\r\n let value;\r\n\r\n for (let i = 0; i < length; i++)\r\n {\r\n value = list[i];\r\n if (predicate.call(thisArg, value, i, list))\r\n {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n}\r\n\r\nif (!Array.prototype.shuffle)\r\n{\r\n Array.prototype.shuffle = function ()\r\n {\r\n for (let i = this.length - 1; i > 0; i--)\r\n {\r\n const j = Math.floor(Math.random() * (i + 1));\r\n [this[i], this[j]] = [this[j], this[i]];\r\n }\r\n };\r\n}\r\n","import { StringTools } from \"./StringTools\";\r\nimport { Tools } from \"./Tools\";\r\n\r\nexport class Guard\r\n{\r\n /**\r\n * Checks an argument to ensure it isn't blank or null\r\n */\r\n public static argumentNotBlankOrNull(argumentValue: string, argumentName: string)\r\n {\r\n if (StringTools.isBlankOrNull(argumentValue))\r\n {\r\n let exceptionMessage = `Argument ${argumentName} cannot be null or blank.`;\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Checks an argument to ensure it isn't blank or null\r\n */\r\n public static valueNotBlankOrNull(value: any, exceptionMessage: string)\r\n {\r\n if (StringTools.isBlankOrNull(value))\r\n {\r\n\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Checks an argument to ensure it isn't null\r\n */\r\n public static argumentNotNull(argumentValue: any, argumentName: string)\r\n {\r\n if (argumentValue == null)\r\n {\r\n let exceptionMessage = `Argument ${argumentName} cannot be null.`;\r\n\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Checks an argument to ensure it isn't null\r\n */\r\n public static valueNotNull(value: any, exceptionMessage: string)\r\n {\r\n if (value == null)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is true\r\n */\r\n public static failIfTrue(value: boolean, exceptionMessage: string)\r\n {\r\n if (value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is false\r\n */\r\n public static failIfFalse(value: boolean, exceptionMessage: string)\r\n {\r\n if (!value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is NOT true\r\n */\r\n public static isTrue(value: boolean, exceptionMessage: string)\r\n {\r\n if (!value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n /**\r\n * Fails if the value is NOT false\r\n */\r\n public static isFalse(value: boolean, exceptionMessage: string)\r\n {\r\n if (value)\r\n {\r\n Tools.throwException(exceptionMessage);\r\n }\r\n }\r\n\r\n}\r\n","import { Guard } from './Guard';\r\n\r\nexport class StringTools\r\n{\r\n public static readonly emailBadChars: string = \"!\\\"·$%&/()=?¿¡'¬€~#|º\\\\ª<>,;:-´ñÑç¨Ç{}[]`+^*áéíóúàèìòùýäëïöüÿâêîôûÁÉÍÓÚÝÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ\";\r\n public static readonly phoneBadChars: string = \" abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúàèìòùýäëïöüÿâêîôûÁÉÍÓÚÝÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ@_!\\\"·$%&/=?¿¡'¬€~|º\\\\ª<>.,;:´ç¨Ç{}[]`^\";\r\n public static readonly realNumberBadChars: string = \" abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZáéíóúàèìòùýäëïöüÿâêîôûÁÉÍÓÚÝÀÈÌÒÙÄËÏÖÜÂÊÎÔÛ@_!\\\"·$%&/=?¿¡'¬€~|º\\\\ª<>,;:´ç¨Ç{}[]`^\";\r\n public static readonly urlAllowedChars: string = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:/?#[]@!$&'()*+,;=\";\r\n\r\n public static isRealNumber(input: string): boolean\r\n {\r\n const floatingPointSeparatorCount: number = StringTools.stringCharCount(input, \".\");\r\n if (floatingPointSeparatorCount >= 2)\r\n {\r\n return false;\r\n }\r\n if (StringTools.realNumberHasBadChars(input))\r\n {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n public static fixRealNumber(input: string): string\r\n {\r\n const pointCount: number = StringTools.stringCharCount(input, \".\");\r\n if (pointCount >= 2)\r\n {\r\n input = StringTools.setCharCountTo1(input, \".\");\r\n }\r\n input = StringTools.removeChars(input, StringTools.realNumberBadChars);\r\n return input;\r\n }\r\n\r\n public static charExistsInString(charvalue: string, inputString: string): boolean\r\n {\r\n for (let i = 0; i < inputString.length; i++)\r\n {\r\n if (inputString[i] === charvalue)\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static removeChars(input: string, badChars: string): string\r\n {\r\n let strOutput: string = \"\";\r\n for (let i = 0; i < input.length; i++)\r\n {\r\n let badIndex: boolean = false;\r\n for (let k = 0; k < badChars.length; k++)\r\n {\r\n if (input[i] === badChars[k])\r\n {\r\n badIndex = true;\r\n break;\r\n }\r\n }\r\n if (!badIndex)\r\n {\r\n strOutput += input[i];\r\n }\r\n }\r\n return strOutput;\r\n }\r\n\r\n public static removeCharsIfNotFound(input: string, allowedChars: string): string\r\n {\r\n let strOutput: string = \"\";\r\n for (let i = 0; i < input.length; i++)\r\n {\r\n if (StringTools.charExistsInString(input[i], allowedChars))\r\n {\r\n strOutput += input[i];\r\n }\r\n }\r\n return strOutput;\r\n }\r\n\r\n public static removeCharsExceptNumbers(input: string): string\r\n {\r\n let strOutput: string = \"\";\r\n for (let i = 0; i < input.length; i++)\r\n {\r\n if (StringTools.isDigit(input[i]))\r\n {\r\n strOutput += input[i];\r\n }\r\n }\r\n return strOutput;\r\n }\r\n\r\n public static reduce(input: string, count: number): string\r\n {\r\n if (input.length < count)\r\n {\r\n return input;\r\n }\r\n let strOutput: string = \"\";\r\n for (let i = 0; i < count; i++)\r\n {\r\n strOutput += input[i];\r\n }\r\n return strOutput;\r\n }\r\n\r\n public static setCharCountTo1(input: string, charvalue: string): string\r\n {\r\n let strOutput: string = \"\";\r\n let once: boolean = false;\r\n for (let i = 0; i < input.length; i++)\r\n {\r\n if (input[i] === charvalue)\r\n {\r\n if (!once)\r\n {\r\n strOutput += input[i];\r\n once = true;\r\n }\r\n }\r\n else\r\n {\r\n strOutput += input[i];\r\n }\r\n }\r\n return strOutput;\r\n }\r\n\r\n public static realNumberHasBadChars(realNumber: string): boolean\r\n {\r\n for (let i = 0; i < realNumber.length; i++)\r\n {\r\n if (StringTools.charExistsInString(realNumber[i], StringTools.realNumberBadChars))\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static emailHasBadChars(email: string): boolean\r\n {\r\n for (let i = 0; i < email.length; i++)\r\n {\r\n if (StringTools.charExistsInString(email[i], StringTools.emailBadChars))\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static isEmail(email: string): any\r\n {\r\n if (email.length === 0)\r\n {\r\n return {\"ok\": false, \"error\":\"empty\"};\r\n }\r\n if (StringTools.stringCharCount(email, \"@\") === 0)\r\n {\r\n return {\"ok\": false, \"error\":\"atismissing\"};\r\n }\r\n if (email[email.length-1] === \"@\")\r\n {\r\n return {\"ok\": false, \"error\":\"incomplete\"};\r\n }\r\n return {\"ok\": true, \"error\": null};\r\n }\r\n\r\n public static creditCardHasBadChars(creditCardNumber: string): boolean\r\n {\r\n return !StringTools.hasOnlyNumbers(creditCardNumber);\r\n }\r\n\r\n // is it a credit card value number?\r\n public static isCreditCard(value: string): any\r\n {\r\n if (value.length === 0)\r\n {\r\n return {\"ok\": false, \"error\": \"empty\"};\r\n }\r\n if (value.length < 16)\r\n {\r\n return {\"ok\": false, \"error\": \"incomplete\"};\r\n }\r\n if (value.length > 16)\r\n {\r\n return {\"ok\": false, \"error\": \"toomuchchars\"};\r\n }\r\n return {\"ok\": true, \"error\": null};\r\n }\r\n\r\n public static twoDigitsMonthHasBadChars(month: string): boolean\r\n {\r\n return !StringTools.hasOnlyNumbers(month);\r\n }\r\n\r\n public static isTwoDigitsMonth(value: string): any\r\n {\r\n if (value.length === 0)\r\n {\r\n return {\"ok\": false, \"error\": \"empty\"};\r\n }\r\n if (value.length < 2)\r\n {\r\n return {\"ok\": false, \"error\": \"incomplete\"};\r\n }\r\n if (value.length > 2)\r\n {\r\n return {\"ok\": false, \"error\": \"toomuchchars\"};\r\n }\r\n const month: number = parseInt(value);\r\n if (month < 1 || month > 12)\r\n {\r\n return {\"ok\": false, \"error\": \"invalidmonthvalue\"};\r\n }\r\n return {\"ok\": true, \"error\": null};\r\n }\r\n\r\n public static twoDigitsYearHasBadChars(year: string): boolean\r\n {\r\n return !StringTools.hasOnlyNumbers(year);\r\n }\r\n\r\n public static isTwoDigitsYear(value: string): any\r\n {\r\n if (value.length === 0)\r\n {\r\n return {\"ok\": false, \"error\": \"empty\"};\r\n }\r\n if (value.length < 2)\r\n {\r\n return {\"ok\": false, \"error\": \"incomplete\"};\r\n }\r\n if (value.length > 2)\r\n {\r\n return {\"ok\": false, \"error\": \"toomuchchars\"};\r\n }\r\n return {\"ok\": true, \"error\": null};\r\n }\r\n\r\n public static cvvHasBadChars(cvv: string): boolean\r\n {\r\n return !StringTools.hasOnlyNumbers(cvv);\r\n }\r\n\r\n public static isCvv(value: string): any\r\n {\r\n if (value.length === 0)\r\n {\r\n return {\"ok\": false, \"error\": \"empty\"};\r\n }\r\n if (value.length < 3)\r\n {\r\n return {\"ok\": false, \"error\": \"incomplete\"};\r\n }\r\n if (value.length > 5)\r\n {\r\n return {\"ok\": false, \"error\": \"toomuchchars\"};\r\n }\r\n return {\"ok\": true, \"error\": null};\r\n }\r\n\r\n public static phoneHasBadChars(phone: string): boolean\r\n {\r\n for (let i = 0; i < phone.length; i++)\r\n {\r\n if (StringTools.charExistsInString(phone[i], StringTools.phoneBadChars))\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n public static urlHasBadChars(url: string): boolean\r\n {\r\n for (let i = 0; i < url.length; i++)\r\n {\r\n if (!StringTools.charExistsInString(url[i], StringTools.urlAllowedChars))\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // is digit?\r\n public static isDigit(value: string): boolean\r\n {\r\n for (let i = 0; i <= 9; i++)\r\n {\r\n if (i.toString() === value)\r\n {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n // does it have only numbers?\r\n public static hasOnlyNumbers(content: string): boolean\r\n {\r\n for (let i = 0; i < content.length; i++)\r\n {\r\n if (!StringTools.isDigit(content[i]))\r\n {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public static isUrl(value: string): boolean\r\n {\r\n for (let i = 0; i < value.length; i++)\r\n {\r\n if (!StringTools.charExistsInString(value[i], StringTools.urlAllowedChars))\r\n {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n // gets the count of a char in a string\r\n public static stringCharCount(content: string, value: string): number\r\n {\r\n let counter: number = 0;\r\n for (let i = 0; i < content.length; i++)\r\n {\r\n if (content[i] === value)\r\n {\r\n counter += 1;\r\n }\r\n }\r\n return counter;\r\n }\r\n\r\n public static isUndefinedOrNull(o: any): boolean\r\n {\r\n /* if (angular.isUndefined(o) || o === null)\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n return false;\r\n }*/\r\n\r\n return true;\r\n }\r\n\r\n public static notBlankOrNull(s: string): boolean\r\n {\r\n return !StringTools.isBlankOrNull(s);\r\n }\r\n\r\n public static isBlankOrNull(s: string): boolean\r\n {\r\n let isString = typeof s === \"string\";\r\n\r\n if (s == null || (isString && s.trim().length === 0)) { return true; }\r\n else { return false; }\r\n }\r\n\r\n /**\r\n * Return the original value - which might be a class or property name and splits it into separate words\r\n */\r\n public static getHeadingFromFieldName(fieldName: string)\r\n {\r\n if (StringTools.isBlankOrNull(fieldName)) { return \"\"; }\r\n\r\n let output = fieldName\r\n .replace(/([a-z])([A-Z])/g, '$1 $2')\r\n .replace(/([A-Z])([a-z])/g, ' $1$2')\r\n .replace(/([a-z])([0-9])/g, '$1 $2')\r\n .replace(/([A-Z])([0-9])/g, '$1 $2')\r\n .replace(/\\s/g, \"\")\r\n .trim();\r\n\r\n return output;\r\n }\r\n\r\n /**\r\n * Return the original value - which might be a class or property name and splits it into separate words,\r\n * separated by \"-\" and all lower case to be used as an Angular component name.\r\n * Example: Converts MyComponentName to my-component-name\r\n */\r\n public static getComponentNameFromFieldName(fieldName: string)\r\n {\r\n if (StringTools.isBlankOrNull(fieldName)) { return \"\"; }\r\n\r\n let output = StringTools.getHeadingFromFieldName(fieldName)\r\n .replace(/\\s/g, \"-\")\r\n .toLowerCase();\r\n\r\n return output;\r\n }\r\n\r\n public static toCamelCase(name: string): string\r\n {\r\n return name[0].toLowerCase() + name.slice(1);\r\n }\r\n\r\n public static initialToUpper(name: string): string\r\n {\r\n return name[0].toUpperCase() + name.slice(1);\r\n }\r\n\r\n public static initialToLower(name: string): string\r\n {\r\n return name[0].toLowerCase() + name.slice(1);\r\n }\r\n\r\n public static createRandomString(length: number)\r\n {\r\n Guard.failIfTrue(length > 20, \"length cannot be > 20\");\r\n return Math.random().toString(36).slice(-length);\r\n }\r\n\r\n public static padNumber(numberToPad: number, minDigits: number): string\r\n {\r\n return numberToPad.toLocaleString('en-US',\r\n {\r\n style: 'decimal',\r\n minimumIntegerDigits: minDigits,\r\n useGrouping: false\r\n });\r\n }\r\n\r\n public static replaceAll(str: string, search: string, replace: string): string\r\n {\r\n return str.split(search).join(replace);\r\n }\r\n\r\n public static splice(str: string, index: number, deleteCount: number, stringToInsert: string): string\r\n {\r\n let charArray = str.split('');\r\n charArray.splice(index, deleteCount, stringToInsert);\r\n return charArray.join('');\r\n }\r\n\r\n public static formatNumber(input: string, numberOfDecimalPlaces: number): string\r\n {\r\n return input;\r\n }\r\n}\r\n","export class Tools\r\n{\r\n public static css_rule_set(selector: any, property: any, value: any, important: any)\r\n {\r\n for (let i = document.styleSheets.length - 1; i >= 0; i--)\r\n {\r\n try\r\n {\r\n let ss = document.styleSheets[i];\r\n let r: any = ss.cssRules ? ss.cssRules : [];\r\n\r\n for (let j = 0; j < r.length; j++)\r\n {\r\n if (r[j].selectorText && r[j].selectorText == selector)\r\n {\r\n if (typeof important == 'undefined')\r\n {\r\n r[j].style.setProperty(property, value);\r\n }\r\n else\r\n {\r\n r[j].style.setProperty(property, value, 'important');\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n catch (e)\r\n {\r\n }\r\n }\r\n }\r\n\r\n public static getOffset()\r\n {\r\n return (new Date()).getTimezoneOffset();\r\n }\r\n\r\n /**\r\n * Merge the contents of two or more objects together into the first object.\r\n * Returns the merged object.\r\n *\r\n * @param deep If true, the merge becomes recursive (aka. deep copy).\r\n * @param target The object to extend. It will receive the new properties\r\n * @param object1 An object containing additional properties to merge in.\r\n * @param objectN Additional objects containing properties to merge in.\r\n */\r\n public static extend(deep: boolean, target: any, object1?: any, ...objectN: any[]): any\r\n {\r\n let i = 0;\r\n let length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]')\r\n {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n let merge = function (obj: any)\r\n {\r\n for (let prop in obj)\r\n {\r\n if (Object.prototype.hasOwnProperty.call(obj, prop))\r\n {\r\n // If deep merge and property is an object, merge properties\r\n if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]')\r\n {\r\n target[prop] = Tools.extend(true, target[prop], obj[prop]);\r\n }\r\n else\r\n {\r\n target[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for (; i < length; i++)\r\n {\r\n let obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return target;\r\n }\r\n\r\n /**\r\n * Redirects for any given route\r\n */\r\n public static redirectToRoute(routeName: string, message?: any)\r\n {\r\n }\r\n\r\n /**\r\n * Displays the app Exception page\r\n */\r\n public static displayExceptionPage(message?: any)\r\n {\r\n Tools.redirectToRoute(\"exception\", message);\r\n }\r\n /**\r\n * Throws any given exception and redirects you to an exception page\r\n * If an url param DoNotRedirect is set, it will throw the exception\r\n *\r\n * @param exceptionMessage The exception message.\r\n */\r\n public static throwException(exceptionMessage: string)\r\n {\r\n Tools.displayExceptionPage();\r\n }\r\n /**\r\n * Validates if the string value is part of the enum.\r\n */\r\n public static isValidEnumValue(value: string, enumeration: object): boolean\r\n {\r\n if (value === undefined || value == null || value === '')\r\n {\r\n return false;\r\n }\r\n\r\n for (let key in enumeration)\r\n {\r\n if (value === enumeration[key])\r\n {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n\r\n // ********************************************************************************\r\n // #region Filter Helpers\r\n // ********************************************************************************\r\n\r\n\r\n public static filterString(value: string, data: any[]): string[]\r\n {\r\n let filterValue = value.toLowerCase();\r\n\r\n return data.filter(option => option.toLowerCase().includes(filterValue));\r\n }\r\n\r\n public static filterObjectName(value: string, data: any[]): string[]\r\n {\r\n let filterValue = value.toLowerCase();\r\n\r\n return data.filter(option => option.name.toLowerCase().indexOf(filterValue) >= 0);\r\n }\r\n\r\n public static groupBy(date: any[], key)\r\n {\r\n return date.reduce((result, currentValue) =>\r\n {\r\n (result[currentValue[key]] = result[currentValue[key]] || []).\r\n push(currentValue);\r\n return result;\r\n }, {});\r\n };\r\n\r\n public static sortingDataAccessor(item, property)\r\n {\r\n if (property.includes('.'))\r\n {\r\n return property.split('.')\r\n .reduce((object, key) => object[key], item);\r\n }\r\n return item[property];\r\n }\r\n\r\n public static compare(a: number | string, b: number | string, isAsc: boolean)\r\n {\r\n return (a < b ? -1 : 1) * (isAsc ? 1 : -1);\r\n }\r\n\r\n // #endregion Filters\r\n\r\n}\r\n","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { share } from 'rxjs/operators';\r\n\r\nimport { EntityConfig } from '../_appCommon/base/EntityConfig';\r\nimport { EntityDataServiceBase } from '../_appCommon/base/EntityDataServiceBase';\r\nimport { FileApplicationType, FileExtension, FileWeirdExtension, ImageExtension, ImageType } from '../_appCommon/base/AppInterfaceAndBaseClasses';\r\n\r\n@Injectable()\r\nexport class UserDataRequestDataService extends EntityDataServiceBase\r\n{\r\n constructor(protected http: HttpClient)\r\n {\r\n super(http, 'userDataRequest');\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n this.entityConfig = new EntityConfig();\r\n\r\n this.entityConfig.entityName = 'userDataRequest';\r\n this.entityConfig.apiUrl = 'api/userDataRequest';\r\n }\r\n\r\n public saveUserRequestData(personalFormData: any): Observable\r\n {\r\n // create multipart form for file\r\n const headers = new HttpHeaders().append('Content-Disposition', 'mulipart/form-data');\r\n\r\n const formData = this.getRequestFormData(personalFormData);\r\n\r\n personalFormData.controls.images.value.map(x =>\r\n {\r\n let name = this.setImageName(x.file.type, x.file.name);\r\n formData.append('images', x.file, name);\r\n });\r\n\r\n let observable = this.http.post(this.entityConfig.apiUrl, formData, { headers: headers }).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n private getRequestFormData(personalFormData: any): FormData\r\n {\r\n const form = new FormData();\r\n\r\n const formData = personalFormData.value;\r\n\r\n Object.keys(formData).forEach((key) =>\r\n {\r\n form.append(key, formData[key]);\r\n });\r\n\r\n return form;\r\n }\r\n\r\n private nameGenerator(fileName: string): string\r\n {\r\n //Create a unique name!\r\n let date = new Date();\r\n //FileNameDayMontYearHourMinuteSecondMilliseconds\r\n let fileNameTemp = date.toISOString();\r\n fileNameTemp = fileNameTemp.replaceAll(\"-\", \"\");\r\n fileNameTemp = fileNameTemp.replaceAll(\"T\", \"\");\r\n fileNameTemp = fileNameTemp.replaceAll(\":\", \"\");\r\n fileNameTemp = fileNameTemp.replaceAll(\".\", \"\");\r\n fileNameTemp = fileNameTemp.replaceAll(\"Z\", \"\");\r\n //Delete file extension\r\n let index = fileName.lastIndexOf(\".\");\r\n let fileNameModified = fileName.slice(0, index);\r\n //Erase any possible \"_\"\r\n fileNameModified = fileNameModified.replaceAll(\"_\", \"\");\r\n return fileNameTemp + \"_\" + fileNameModified;\r\n }\r\n\r\n private setImageName(type: any, fileOriginalName: any): string\r\n {\r\n\r\n let name = this.nameGenerator(fileOriginalName);\r\n\r\n switch (type)\r\n {\r\n case ImageType.JPG:\r\n name += ImageExtension.JPG;\r\n break;\r\n case ImageType.JPEG:\r\n name += ImageExtension.JPEG;\r\n break;\r\n case ImageType.PNG:\r\n name += ImageExtension.PNG;\r\n break;\r\n case ImageType.GIF:\r\n name += ImageExtension.GIF;\r\n break;\r\n case ImageType.TIF:\r\n name += ImageExtension.TIF;\r\n break;\r\n case ImageType.BMP:\r\n name += ImageExtension.BMP;\r\n break;\r\n case FileApplicationType.PDF:\r\n name += FileExtension.PDF;\r\n break;\r\n case FileApplicationType.STL:\r\n name += FileWeirdExtension;\r\n break;\r\n case FileApplicationType.TXT:\r\n name += FileExtension.TXT;\r\n break;\r\n case FileApplicationType.ZIP:\r\n name += FileExtension.ZIP;\r\n break;\r\n case FileApplicationType.ZIP7:\r\n name += FileExtension.ZIP7;\r\n break;\r\n case FileApplicationType.RAR:\r\n name += FileExtension.RAR;\r\n break;\r\n case FileApplicationType.WORD:\r\n name += FileExtension.WORD;\r\n break;\r\n case FileApplicationType.POWERPOINT:\r\n name += FileExtension.POWERPOINT;\r\n break;\r\n case FileApplicationType.EXCEL:\r\n name += FileExtension.EXCEL;\r\n break;\r\n case '':\r\n name += FileWeirdExtension.STL;\r\n break;\r\n }\r\n return name;\r\n }\r\n}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { map, share } from 'rxjs/operators';\r\nimport { AppClientContext } from '../../_appCommon/base/AppClientContext';\r\nimport { EntityDataServiceBase } from '../../_appCommon/base/EntityDataServiceBase';\r\nimport { EntityConfig } from '../../_appCommon/base/EntityConfig';\r\nimport { UrlQueryDef } from '../../_appCommon/base/UrlQueryDef';\r\nimport { ECOMMERCE_USER_TOKEN } from 'src/app/_appCommon/base/Constants';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class AuthenticationService extends EntityDataServiceBase\r\n{\r\n constructor(protected http: HttpClient)\r\n {\r\n super(http, \"development\");\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n // Create Entity Config\r\n this.entityConfig = new EntityConfig();\r\n\r\n this.entityConfig.canEdit = true;\r\n this.entityConfig.canRead = true;\r\n this.entityConfig.entityName = \"userAccess\";\r\n this.entityConfig.entityDisplayName = \"userAccess\";\r\n this.entityConfig.apiUrl = \"api/userAccess\";\r\n }\r\n\r\n public login(loginData: { Email: string, Password: string })\r\n {\r\n let queryDef = new UrlQueryDef();\r\n\r\n return this.http.post(this.createUrl('login'), loginData, queryDef.getRequestConfig(true))\r\n .pipe(map((response: any) =>\r\n {\r\n let user = response;\r\n\r\n if (user && user.cacheToken)\r\n localStorage.setItem('currentUser', JSON.stringify(user));\r\n }));\r\n }\r\n\r\n public logout()\r\n {\r\n this.http.post(this.createUrl('logout'), {Token: AppClientContext.Instance.headerValues.get(ECOMMERCE_USER_TOKEN)});\r\n\r\n // remove user from local storage to log user out\r\n localStorage.removeItem('currentUser');\r\n\r\n // Remove Token\r\n AppClientContext.Instance.headerValues.delete(ECOMMERCE_USER_TOKEN);\r\n\r\n // Clear current user\r\n AppClientContext.Instance.user = null;\r\n }\r\n\r\n public forgotPassword(loginId: string)\r\n {\r\n const observable = this.http.post(this.createUrl(`forgotMyPassword/${loginId}`), {loginId: loginId, UserType:2}).pipe(share());\r\n\r\n return observable;\r\n }\r\n\r\n public forgotPasswordOnboarding(loginId: string)\r\n {\r\n const observable = this.http.post(this.createUrl(`forgotMyPasswordOnboarding/${loginId}`), { loginId: loginId }).pipe(share());\r\n\r\n return observable;\r\n }\r\n\r\n public changePassword(changePasswordDto: { LoginId: string, OldPassword: string, NewPassword: string })\r\n {\r\n let queryDef = new UrlQueryDef();\r\n\r\n const observable = this.http.post(this.createUrl('changePassword'), changePasswordDto).pipe(share());\r\n\r\n return observable;\r\n }\r\n\r\n public validateUser(loginId: string)\r\n {\r\n let queryDef = new UrlQueryDef();\r\n\r\n const observable = this.http.get(`api/CustomerAccess/getCustomerByLoginId/${loginId}`, queryDef.getRequestConfig(true)).pipe(share());\r\n\r\n return observable;\r\n }\r\n\r\n public checkPasswordResetRequired(body: any): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.post(\"api/CustomerAccess/getPasswordResetRequired/\", body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public checkIncompleteUser(body: any): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable: Observable = this.http.post(\"api/CustomerAccess/checkIncompleteUser/\", body, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n\r\n public getCustomerByLoginId(loginId: string): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable = this.http.get(`api/CustomerAccess/getCustomerByLoginId/${loginId}`, queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n public loginNoLoginCount(loginData: { Email: string, Password: string }): Observable\r\n {\r\n let queryDef = new UrlQueryDef();\r\n let observable = this.http.post(this.createUrl('loginNoLoginCount'), loginData,queryDef.getRequestConfig(true)).pipe(share());\r\n this._handleObservableResponse(observable);\r\n return observable;\r\n }\r\n}\r\n\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from \"rxjs\";\r\nimport { share } from 'rxjs/operators';\r\nimport { UrlQueryDef } from 'src/app/_appCommon/base/UrlQueryDef';\r\nimport { EntityConfig } from '../../_appCommon/base/EntityConfig';\r\nimport { EntityDataServiceBase } from '../../_appCommon/base/EntityDataServiceBase';\r\n\r\n@Injectable()\r\nexport class CustomerAccessDataService extends EntityDataServiceBase\r\n{\r\n constructor(protected http: HttpClient)\r\n {\r\n super(http, \"customerAccess\");\r\n }\r\n\r\n protected loadEntityConfig(): void\r\n {\r\n // Create Entity Config\r\n this.entityConfig = new EntityConfig();\r\n\r\n this.entityConfig.canEdit = true;\r\n this.entityConfig.canRead = true;\r\n this.entityConfig.entityName = \"customerAccess\";\r\n this.entityConfig.entityDisplayName = \"customerAccess\";\r\n this.entityConfig.apiUrl = \"api/customerAccess\";\r\n }\r\n\r\n public createAccount(createAccountDto: any): Observable<{}>\r\n {\r\n let queryDef = new UrlQueryDef();\r\n\r\n var observable = this.http.post(this.createUrl(\"createAccount\"), createAccountDto, queryDef.getRequestConfig(true)).pipe(share());\r\n\r\n this._handleObservableResponse(observable);\r\n\r\n return observable;\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { Observable } from \"rxjs\";\r\nimport { share } from 'rxjs/operators';\r\nimport { UrlQueryDef } from 'src/app/_appCommon/base/UrlQueryDef';\r\n\r\n@Injectable()\r\nexport class SystemServicesDataService\r\n{\r\n constructor(protected http: HttpClient) { }\r\n\r\n public getStartupInfo(): Observable<{}>\r\n {\r\n let queryDef = new UrlQueryDef;\r\n var subject = this.http.get(\"api/systemServices/getStartupInfo\", queryDef.getRequestConfig(true)).pipe(share());\r\n\r\n return subject;\r\n }\r\n\r\n public getClientStartupInfo(): Observable<{}>\r\n {\r\n var subject = this.http.get(\"api/systemServices/getClientStartupInfo\").pipe(share());\r\n\r\n return subject;\r\n }\r\n\r\n public getSystemStartupInfo(): Observable<{}>\r\n {\r\n var subject = this.http.get(\"api/systemServices/getSystemStartupInfo\").pipe(share());\r\n\r\n return subject;\r\n }\r\n\r\n /** Checks if the user is in Server Cache */\r\n public checkUserInCache(): Observable<{}>\r\n {\r\n let queryDef = new UrlQueryDef;\r\n var subject = this.http.get(\"api/systemServices/checkUserInCache\", queryDef.getRequestConfig(true)).pipe(share());\r\n\r\n return subject;\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\nimport { StringTools } from '../_appCommon/util/StringTools';\r\n\r\n@Directive()\r\nexport class baseInputValidatorDirective\r\n{\r\n protected _regex: RegExp;\r\n protected _el: ElementRef;\r\n\r\n // Allow key codes for special events. Reflect :\r\n // Backspace, tab, end, home\r\n private specialKeys: Array = ['Backspace', 'Tab', 'End', 'Home'];\r\n\r\n constructor() { }\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event: KeyboardEvent)\r\n {\r\n // Allow Backspace, tab, end, and home keys\r\n if (this.specialKeys.indexOf(event.key) !== -1)\r\n {\r\n return true;\r\n }\r\n\r\n // Do not use event.keycode this is deprecated.\r\n // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\r\n\r\n let modifiedString = this.getModifiedString(event.key);\r\n\r\n\r\n if (modifiedString && !String(modifiedString).match(this._regex))\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n onPaste(event: ClipboardEvent)\r\n {\r\n let textToBePasted = event.clipboardData.getData('text');\r\n\r\n if (!String(textToBePasted).match(this._regex))\r\n {\r\n event.preventDefault();\r\n }\r\n\r\n\r\n let modifiedString = this.getModifiedString(textToBePasted);\r\n\r\n if (modifiedString && !String(modifiedString).match(this._regex))\r\n {\r\n event.preventDefault();\r\n }\r\n\r\n }\r\n\r\n private getModifiedString(stringInsertedByEvent: string): string\r\n {\r\n let currentString: string = this._el.nativeElement.value;\r\n let cursorPosition = this._el.nativeElement.selectionStart;\r\n\r\n let numberOfCharactersToDelete = 0;\r\n let startOfSelection = cursorPosition;\r\n let endOfSelection = this._el.nativeElement.selectionEnd;\r\n\r\n //Checks if cursor is selecting a part of the string and counts the characters\r\n if (startOfSelection != endOfSelection)\r\n {\r\n numberOfCharactersToDelete = (endOfSelection - startOfSelection);\r\n }\r\n\r\n let modifiedString = StringTools.splice(currentString, cursorPosition, numberOfCharactersToDelete, stringInsertedByEvent);\r\n\r\n return modifiedString;\r\n }\r\n}\r\n","import { Directive, HostListener, Injectable, LOCALE_ID } from '@angular/core';\r\nimport { DatePipe, registerLocaleData } from '@angular/common';\r\nimport { DateAdapter, MAT_DATE_FORMATS, NativeDateAdapter } from '@angular/material/core';\r\nimport localeEsMX from '@angular/common/locales/es-MX';\r\nimport { APP_DATE_FORMATS } from '../_appCommon/base/Constants';\r\nregisterLocaleData(localeEsMX, 'es-MX');\r\n\r\n//Format Date\r\n@Injectable()\r\nexport class AppDateAdapter extends NativeDateAdapter {\r\n override format(date: Date, displayFormat: Object): any {\r\n return new DatePipe('es-MX').transform(date, 'dd/MM/yyyy');\r\n }\r\n}\r\n\r\n@Directive({\r\n selector: '[calendarValidation]',\r\n providers: [\r\n { provide: MAT_DATE_FORMATS, useValue: APP_DATE_FORMATS },\r\n { provide: DateAdapter, useClass: AppDateAdapter },\r\n { provide: LOCALE_ID, useValue: 'es-MX' },\r\n ],\r\n})\r\nexport class CalendarValidationDirective {\r\n //Validations\r\n private keyBoardCodes: string[] = [\"ArrowUp\", \"ArrowDown\", \"ArrowRight\", \"ArrowLeft\", \"Enter\"];\r\n\r\n //Block paste event\r\n @HostListener('paste', ['$event']) blockPaste(e: KeyboardEvent): void\r\n {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n //Block cut event\r\n @HostListener('cut', ['$event']) blockCut(e: KeyboardEvent): void\r\n {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n }\r\n\r\n //Block keyboard\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event:any){\r\n if(this.keyBoardCodes.find(code => code == event.code) == undefined) event.preventDefault();\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, OnInit, EventEmitter, HostBinding, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDragAndDrop]'\r\n})\r\nexport class DragAndDropFilesDirective implements OnInit\r\n{\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() filesDropped = new EventEmitter();\r\n\r\n @HostListener('dragover', ['$event'])\r\n public onHandleDragOver(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n const p = this.elementRef.nativeElement.querySelector('p');\r\n p.innerText=\"Suelta para subir los archivos\";\r\n }\r\n\r\n @HostListener('dragleave', ['$event'])\r\n public onHandleDragLeave(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n const p = this.elementRef.nativeElement.querySelector('p');\r\n p.innerText=\"Arrastra y suelta las imagenes\";\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n public onHandleDrop(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n const p = this.elementRef.nativeElement.querySelector('p');\r\n p.innerText=\"Arrastra y suelta las imagenes\";\r\n\r\n const files = evt.dataTransfer.files;\r\n if (files.length > 0)\r\n this.filesDropped.emit(files);\r\n }\r\n\r\n\r\n\r\n ngOnInit(): void { }\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n}\r\n","import { Directive, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[onlyNumbers]'\r\n})\r\nexport class OnlyNumbersDirective {\r\n\r\n @HostListener('keypress', ['$event'])\r\n onKeyPress(event:any){\r\n return event.charCode >= 48 && event.charCode <= 57;\r\n }\r\n\r\n @HostListener('paste', ['$event']) blockPaste(e: KeyboardEvent) {\r\n e.preventDefault();\r\n }\r\n}\r\n","import { Directive, ElementRef } from '@angular/core';\r\nimport { CommonRegex } from '../_appCommon/base/Constants';\r\nimport { baseInputValidatorDirective } from './baseInputValidatorDirective';\r\n\r\n@Directive({\r\n selector: '[phoneNumberOnly]'\r\n})\r\n\r\nexport class PhoneNumberDirective extends baseInputValidatorDirective\r\n{\r\n\r\n constructor(el: ElementRef)\r\n {\r\n super();\r\n this._el = el;\r\n\r\n // Only allows phone numbers\r\n this._regex = CommonRegex.PhoneNumber;\r\n }\r\n\r\n}\r\n","import { Directive, ElementRef, HostBinding, HostListener, Input, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appScrollAnimation]'\r\n})\r\nexport class ScrollAnimationDirective implements OnInit\r\n{\r\n @Input() appScrollAnimation;\r\n @HostBinding('@slideRightToLeft') atSlideRightToLeft = \"\";\r\n @HostBinding('@slideLeftToRight') atSlideLeftToRight = \"\";\r\n @HostBinding('@slideTopToBottom') atSlideTopToBottom = \"\";\r\n @HostBinding('@scaleContent') atScaleContent = \"\";\r\n\r\n @HostListener('window:scroll', [])\r\n scroll(): void\r\n {\r\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\r\n if (rect.top < innerHeight/2 )\r\n {\r\n switch (this.appScrollAnimation)\r\n {\r\n case 'slideRightToLeft':\r\n this.atSlideRightToLeft = 'final';\r\n break;\r\n case 'slideLeftToRight':\r\n this.atSlideLeftToRight = 'final';\r\n break;\r\n case 'slideTopToBottom':\r\n this.atSlideTopToBottom = 'final';\r\n break;\r\n case 'scaleContent':\r\n this.atScaleContent = 'final';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n else\r\n {\r\n switch (this.appScrollAnimation)\r\n {\r\n case 'slideRightToLeft':\r\n this.atSlideRightToLeft = 'initial';\r\n break;\r\n case 'slideLeftToRight':\r\n this.atSlideLeftToRight = 'initial';\r\n break;\r\n case 'slideTopToBottom':\r\n this.atSlideTopToBottom = 'initial';\r\n break;\r\n case 'scaleContent':\r\n this.atScaleContent = 'initial';\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { MainComponent } from './layouts/main/main.component';\r\nimport { ResetPasswordComponent } from './layouts/pages/reset-password/reset-password.component';\r\nimport { PrivacyNoticesComponent } from './layouts/pages/privacy-notices/privacy-notices.component';\r\nimport { AuthPermissionsGuardEcommerce } from 'Guards/auth-permissions-ecommerce.guard';\r\nimport { ImageComponent } from './layouts/pages/image/image.component';\r\n\r\nconst routes: Routes = [\r\n \r\n {\r\n path: '',\r\n component: MainComponent,\r\n children: [\r\n ]\r\n },\r\n {\r\n path: 'avisos-privacidad',\r\n component: PrivacyNoticesComponent,\r\n },\r\n {\r\n path: 'resetPassword',\r\n component: ResetPasswordComponent,\r\n },\r\n {\r\n path: 'img',\r\n component: ImageComponent,\r\n },\r\n {\r\n path: 'dashboard',\r\n loadChildren: () => import('../app-admin/app.module').then(m => m.AppAdminSharedModule)\r\n },\r\n {\r\n path: 'ecommerce', canActivate: [AuthPermissionsGuardEcommerce],\r\n loadChildren: () => import('../app-client/app.module').then(m => m.AppClientSharedModule)\r\n },\r\n {\r\n path: \"**\",\r\n redirectTo: '/'\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes, {\r\n initialNavigation: 'enabled',\r\n relativeLinkResolution: 'legacy',\r\n scrollPositionRestoration: 'enabled'\r\n })],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\n\r\nexport class AppRoutingModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html'\r\n})\r\n\r\nexport class AppComponent implements OnInit\r\n{\r\n constructor() {}\r\n\r\n ngOnInit(): void { }\r\n}\r\n","\r\n","import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { HomeModule } from './home/home.module';\r\nimport { MainComponent } from './layouts/main/main.component';\r\nimport { AppMaterialModule } from './layouts/material/app.material.module';\r\nimport { NavBarResponsiveComponent } from './layouts/navbar/navbar.component';\r\nimport { UserAccessModule } from './user-access/user-access.module';\r\nimport { ShareModule } from './_appCommon/share.module';\r\nimport { IndexComponent } from './layouts/pages/index/index.component';\r\nimport { FaqComponent } from './layouts/pages/faq/faq.component';\r\nimport { FoundOrthodontistComponent } from './layouts/pages/found-orthodontist/found-orthodontist.component';\r\nimport { ImOrthodontistComponent } from './layouts/pages/im-orthodontist/im-orthodontist.component';\r\nimport { AppShareModule } from 'src/shared/app.module';\r\nimport { ResetPasswordComponent } from './layouts/pages/reset-password/reset-password.component';\r\nimport { AuthenticationInterceptor } from './_appCommon/interceptors/authentication.interceptor';\r\nimport { MAT_DATE_LOCALE } from \"@angular/material/core\";\r\nimport { LoadingInterceptor } from 'src/shared/interceptors/loading.interceptor';\r\nimport { LoadingGeneralModule } from 'src/shared/components/loading-general/loading-general.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n NavBarResponsiveComponent,\r\n MainComponent,\r\n IndexComponent,\r\n FoundOrthodontistComponent,\r\n ImOrthodontistComponent,\r\n FaqComponent,\r\n ResetPasswordComponent\r\n ],\r\n imports: [\r\n BrowserModule,\r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n UserAccessModule,\r\n AppRoutingModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ShareModule, //don't remove sharemdule from here,\r\n AppShareModule,\r\n HomeModule,\r\n BrowserAnimationsModule,\r\n AppMaterialModule,\r\n LoadingGeneralModule\r\n ],\r\n providers: [\r\n { provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthenticationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: MAT_DATE_LOCALE,\r\n useValue: 'es-MX' // format date as \"DD/MM/YYYY\"\r\n }],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'home',\r\n templateUrl: './home.component.html'\r\n})\r\n\r\nexport class HomeComponent implements OnInit\r\n{\r\n ngOnInit(): void { }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { FormsModule} from \"@angular/forms\";\r\nimport { AppRoutingModule } from \"../app-routing.module\";\r\nimport { AppComponent } from \"../app.component\";\r\nimport { HomeComponent } from \"./home.component\";\r\n\r\n@NgModule({\r\n declarations: [\r\n HomeComponent,\r\n ],\r\n exports: [\r\n HomeComponent,\r\n ],\r\n imports: [\r\n FormsModule,\r\n AppRoutingModule,\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\n\r\nexport class HomeModule { }\r\n","import { Component, Injector, OnInit } from \"@angular/core\";\r\nimport { BroadcastManager } from \"src/app/_appCommon/base/BroadcastManager\";\r\nimport { AppEventNames } from \"src/app/_appCommon/base/Constants\";\r\nimport { AppClientContext } from \"../../_appCommon/base/AppClientContext\";\r\nimport { ControllerBase } from \"../../_appCommon/base/ControllerBase\";\r\nimport { SystemServicesDataService } from \"../../_dataservices/security/SystemServicesDataService\";\r\nimport { ECOMMERCE_USER_TOKEN } from '../../_appCommon/base/Constants';\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-main',\r\n templateUrl: './main.component.html',\r\n providers: [SystemServicesDataService]\r\n})\r\n\r\nexport class MainComponent extends ControllerBase implements OnInit\r\n{\r\n public isUserAccessShow: boolean = false;\r\n public showLogin: boolean = true;\r\n public isUserLoggedIn: boolean = false;\r\n public isShowPasswordEmailReset: boolean = false;\r\n public isShowPasswordReset: boolean = false;\r\n public passwordKey: string = \"\";\r\n public loginId: string = \"\";\r\n public currentPassword: string = \"\";\r\n public isShowCRUD: boolean = false;\r\n public byPassEmailPasswordReset: boolean = false;\r\n\r\n constructor(\r\n private injector: Injector,\r\n private systemServicesDataService: SystemServicesDataService,\r\n protected route: ActivatedRoute)\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit()\r\n {\r\n if (this.getUserLoginFromCache())\r\n this.checkUserLogin();\r\n\r\n BroadcastManager.Instance.on(AppEventNames.OnShowUserLogin)\r\n .subscribe(([e]) =>\r\n {\r\n this.showLogin = true;\r\n if (e[0])\r\n this.isUserAccessShow = true;\r\n else\r\n this.isUserAccessShow = false;\r\n });\r\n\r\n BroadcastManager.Instance.on(AppEventNames.OnShowUserSignUp)\r\n .subscribe(([e]) =>\r\n {\r\n this.showLogin = false;\r\n if (e[0])\r\n this.isUserAccessShow = true;\r\n else\r\n this.isUserAccessShow = false;\r\n });\r\n\r\n BroadcastManager.Instance.on(AppEventNames.OnboardingEmailPasswordChange)\r\n .subscribe(([e]) =>\r\n {\r\n if (e[0])\r\n {\r\n this.isShowPasswordEmailReset = true;\r\n }\r\n else\r\n {\r\n this.isShowPasswordEmailReset = false;\r\n }\r\n });\r\n\r\n BroadcastManager.Instance.on(AppEventNames.OnboardingByPassEmailPasswordChange)\r\n .subscribe(([e]) =>\r\n {\r\n if (e[0])\r\n {\r\n this.byPassEmailPasswordReset = true;\r\n }\r\n else\r\n {\r\n this.byPassEmailPasswordReset = false;\r\n }\r\n });\r\n\r\n BroadcastManager.Instance.on(AppEventNames.OnboardingPasswordChange)\r\n .subscribe(([e]) =>\r\n {\r\n if (e[0].show)\r\n {\r\n this.passwordKey = e[0].key;\r\n this.loginId = e[0].loginId;\r\n this.isShowPasswordReset = true;\r\n }\r\n else\r\n {\r\n this.isShowPasswordReset = false;\r\n }\r\n });\r\n\r\n BroadcastManager.Instance.on(AppEventNames.OnboardingCRUDData)\r\n .subscribe(([e]) =>\r\n {\r\n if (e[0].show)\r\n {\r\n this.isShowCRUD = true;\r\n this.loginId = e[0].loginId;\r\n this.currentPassword = e[0].password;\r\n }\r\n else\r\n {\r\n this.isShowCRUD = false;\r\n }\r\n });\r\n this.getPurchasedCode();\r\n }\r\n\r\n private getPurchasedCode()\r\n {\r\n let queryParams = this.route.snapshot.queryParams;\r\n let result = queryParams['PB'];\r\n if (result == null)\r\n {\r\n this.byPassEmailPasswordReset = false;\r\n }\r\n else\r\n {\r\n this.byPassEmailPasswordReset = result == 'true' ? true : false;\r\n }\r\n\r\n }\r\n private checkUserLogin(): void\r\n {\r\n if (this.getUserLoginFromCache())\r\n {\r\n // Call API - checkUserInCache - confirm that they are in SERVER cache\r\n this.systemServicesDataService.checkUserInCache()\r\n .subscribe((response: boolean) =>\r\n {\r\n if (response)\r\n {\r\n //\"User was found in cache, attempt to log in...\";\r\n this.getStartupInfo();\r\n this.isUserLoggedIn = true;\r\n }\r\n else\r\n {\r\n this.forceLogout();\r\n }\r\n }, error =>\r\n {\r\n this.forceLogout();\r\n });\r\n }\r\n }\r\n\r\n private getStartupInfo()\r\n {\r\n this.systemServicesDataService.getStartupInfo()\r\n .subscribe((startupInfo) =>\r\n {\r\n this.onApplicationStartup(startupInfo);\r\n }, error =>\r\n {\r\n if (error.status == 401)\r\n {\r\n this.forceLogout();\r\n this.setDangerAlert('Usuario no autorizado');\r\n }\r\n });\r\n }\r\n\r\n private onApplicationStartup(startupInfo: any)\r\n {\r\n AppClientContext.Instance.initialize(startupInfo);\r\n\r\n // Save a reference to the angular injector to the client context\r\n AppClientContext.Instance.setInjector(this.injector);\r\n\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnCheckUserLoggedIn, true);\r\n }\r\n\r\n public forceLogout(): void\r\n {\r\n // remove user from local storage to log user out\r\n localStorage.removeItem('currentUser');\r\n\r\n // Remove Token\r\n AppClientContext.Instance.headerValues.delete(ECOMMERCE_USER_TOKEN);\r\n\r\n // Clear current user\r\n AppClientContext.Instance.user = null;\r\n }\r\n\r\n private getUserLoginFromCache(): boolean\r\n {\r\n let user = JSON.parse(localStorage.getItem('currentUser'));\r\n return this.setSecurityToken(user);\r\n }\r\n\r\n private setSecurityToken(user: any): boolean\r\n {\r\n if (user && user.cacheToken)\r\n {\r\n // Remove Token\r\n AppClientContext.Instance.headerValues.delete(ECOMMERCE_USER_TOKEN);\r\n\r\n // Append Token\r\n AppClientContext.Instance.headerValues.set(ECOMMERCE_USER_TOKEN, user.cacheToken);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n
\r\n","import { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { CdkTableModule } from '@angular/cdk/table';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatNativeDateModule, MatRippleModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatGridListModule } from '@angular/material/grid-list';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSliderModule } from '@angular/material/slider';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatStepperModule } from '@angular/material/stepper';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatTabsModule } from '@angular/material/tabs';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n@NgModule({\r\n imports: [\r\n MatAutocompleteModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatStepperModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n DragDropModule,\r\n CdkTableModule\r\n ],\r\n exports: [\r\n MatAutocompleteModule,\r\n MatButtonModule,\r\n MatButtonToggleModule,\r\n MatCardModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatStepperModule,\r\n MatDatepickerModule,\r\n MatDialogModule,\r\n MatDividerModule,\r\n MatExpansionModule,\r\n MatGridListModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatListModule,\r\n MatMenuModule,\r\n MatNativeDateModule,\r\n MatPaginatorModule,\r\n MatProgressBarModule,\r\n MatProgressSpinnerModule,\r\n MatRadioModule,\r\n MatRippleModule,\r\n MatSelectModule,\r\n MatSidenavModule,\r\n MatSliderModule,\r\n MatSlideToggleModule,\r\n MatSnackBarModule,\r\n MatSortModule,\r\n MatTableModule,\r\n MatTabsModule,\r\n MatToolbarModule,\r\n MatTooltipModule,\r\n DragDropModule,\r\n CdkTableModule\r\n ]\r\n})\r\nexport class AppMaterialModule { }\r\n","import { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\n\r\nimport { AppClientContext } from '../../_appCommon/base/AppClientContext';\r\nimport { AppEventNames } from '../../_appCommon/base/Constants';\r\nimport { AuthenticationService } from '../../_dataservices/security/AuthenticationService';\r\nimport { BroadcastManager } from \"src/app/_appCommon/base/BroadcastManager\";\r\nimport { SITEMAPURLS } from \"src/shared/constants\";\r\n\r\n@Component({\r\n selector: \"app-navbar\",\r\n templateUrl: \"./navbar.component.html\",\r\n styleUrls: [\"./navbar.component.css\"],\r\n providers: [AuthenticationService]\r\n})\r\n\r\nexport class NavBarResponsiveComponent implements OnInit\r\n{\r\n public isShowUserDropDown = false;\r\n public isUserLoggedIn = false;\r\n public sitemapUrls = SITEMAPURLS;\r\n public userName = \"\";\r\n\r\n ngOnInit(): void\r\n {\r\n BroadcastManager.Instance.on(AppEventNames.OnCheckUserLoggedIn)\r\n .subscribe(([e]) =>\r\n {\r\n if (e[0])\r\n this.initializeUser();\r\n });\r\n }\r\n\r\n constructor(\r\n private router: Router,\r\n private activeRoute: ActivatedRoute,\r\n private authenticationService: AuthenticationService\r\n ) { }\r\n\r\n private initializeUser():void\r\n {\r\n const user = AppClientContext.Instance.user;\r\n if (user)\r\n {\r\n this.isUserLoggedIn = true;\r\n this.userName = user.firstName;\r\n }\r\n }\r\n\r\n public onHandleClickLogin(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnShowUserLogin, true);\r\n }\r\n\r\n public onHandleClickLogout(): void\r\n {\r\n this.authenticationService.logout();\r\n\r\n location.reload();\r\n }\r\n\r\n}\r\n"," \r\n\r\n\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FAQPATIENT, FAQSPECIALIST } from '../../../_appCommon/base/Constants';\r\n\r\n@Component({\r\n selector: 'app-faq',\r\n templateUrl: './faq.component.html',\r\n styleUrls: ['./faq.component.css']\r\n})\r\n\r\nexport class FaqComponent implements OnInit\r\n{\r\n\r\n public FaqPatient = FAQPATIENT;\r\n public FaqSpecialist = FAQSPECIALIST;\r\n public isSpecialist = false;\r\n\r\n ngOnInit() { }\r\n\r\n}\r\n","
\r\n
\r\n\t\t
\r\n\t\t\t

Preguntas frecuentes

\r\n\t\t
\r\n\t
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n","import { Component, ElementRef, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';\r\n\r\nimport { FileHandle } from 'src/app/_appCommon/base/AppInterfaceAndBaseClasses';\r\nimport { STATES } from '../../../_appCommon/base/Constants';\r\nimport { UserDataRequestDataService } from '../../../_dataservices/UserDataRequestDataService';\r\n\r\n@Component({\r\n selector: 'app-found-orthodontist',\r\n templateUrl: './found-orthodontist.component.html',\r\n styleUrls: ['./found-orthodontist.component.css'],\r\n providers: [{\r\n provide: STEPPER_GLOBAL_OPTIONS,\r\n useValue: {displayDefaultIndicatorType: false},\r\n }, UserDataRequestDataService]\r\n})\r\n\r\nexport class FoundOrthodontistComponent implements OnInit\r\n{\r\n public personalDataForm: FormGroup;\r\n public photosForm: FormGroup;\r\n\r\n @ViewChild('stepper', {read:MatStepper}) private stepper: MatStepper;\r\n @ViewChild('filesContainer', { static: true }) filesContainer: ElementRef;\r\n\r\n public States = STATES;\r\n public selectedFiles: FileHandle[] = [];\r\n public editable: boolean = true;\r\n\r\n ngOnInit()\r\n {\r\n this.initializeForms();\r\n }\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private renderer: Renderer2,\r\n private userDataRequestDataService: UserDataRequestDataService)\r\n {\r\n\r\n }\r\n\r\n private initializeForms(): void\r\n {\r\n this.personalDataForm = this.formBuilder.group({\r\n fullName: ['', Validators.required],\r\n email: ['', [Validators.required, Validators.email]],\r\n phone: ['', Validators.required],\r\n zipcode: ['', Validators.required],\r\n state: ['', Validators.required],\r\n comments: ['', ],\r\n images: [null, ],\r\n });\r\n }\r\n\r\n public getErrorMessage(controlName: any)\r\n {\r\n if (this.personalDataForm)\r\n {\r\n var control = this.personalDataForm.get(controlName);\r\n\r\n if (control?.hasError('required'))\r\n {\r\n return 'Completa este campo';\r\n }\r\n if (control?.hasError('email'))\r\n {\r\n return 'Ingresa un email válido';\r\n }\r\n if (control?.hasError('pattern'))\r\n {\r\n return 'Ingresa un texto válido';\r\n }\r\n if (control?.hasError('invalid'))\r\n {\r\n return 'Dato inválido';\r\n }\r\n if (!control?.hasError('validateEqual'))\r\n {\r\n if (controlName == 'email')\r\n return 'Los correos deben coincidir';\r\n if (controlName == 'phone')\r\n return 'Los teléfonos deben coincidir';\r\n }\r\n if (control?.hasError('minlength'))\r\n {\r\n return 'Longitud mínima de ' + control?.errors.minlength.requiredLength + ' caracteres';\r\n }\r\n if (control?.hasError('maxlength'))\r\n {\r\n return 'Longitud máxima de ' + control?.errors.maxlength.requiredLength + ' caracteres';\r\n }\r\n if (control?.hasError('existUser'))\r\n {\r\n return 'Este correo ya se encuentra registrado';\r\n }\r\n if (control?.hasError('exist'))\r\n {\r\n return 'Este nombre ya se encuentra registrado';\r\n }\r\n if (control?.hasError('invalidCredentials'))\r\n {\r\n return 'Credenciales inválidas';\r\n }\r\n if (controlName == 'invitationCode')\r\n {\r\n if (control?.hasError('pattern'))\r\n {\r\n return 'El código debe estar compuesto por números y letras';\r\n }\r\n if (control?.hasError('notExist'))\r\n {\r\n return 'El código de invitación es inválido';\r\n }\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n\r\n public onSendRequest(): void\r\n {\r\n this.personalDataForm.patchValue({\r\n images: this.selectedFiles\r\n });\r\n\r\n this.userDataRequestDataService.saveUserRequestData(this.personalDataForm)\r\n .subscribe(response =>\r\n {\r\n this.editable = false;\r\n this.stepper.next();\r\n });\r\n }\r\n\r\n public onSelectedFiles(files)\r\n {\r\n this.selectedFiles = [...this.selectedFiles, ...files];\r\n }\r\n\r\n public onDeleteFile(id: number)\r\n {\r\n this.selectedFiles.splice(id, 1);\r\n this.renderer.removeChild(this.filesContainer, document.querySelector(`#imgUpload-{id}`));\r\n }\r\n\r\n public scrollToIdRef(element): void\r\n {\r\n element.scrollIntoView({behavior: \"smooth\", block: \"start\", inline: \"nearest\"});\r\n }\r\n\r\n public onHandleNewRequest():void\r\n {\r\n this.personalDataForm.reset();\r\n\r\n this.selectedFiles.clear();\r\n\r\n this.initializeForms();\r\n window.location.reload();\r\n }\r\n}\r\n","
\r\n
\r\n\t\t
\r\n\t\t\t

Inicia tu tratamiento

\r\n\t\t
\r\n\t
\r\n
\r\n
\r\n
\r\n
\r\n

Encuentra un Ortodoncista

\r\n
\r\n \r\n \r\n\r\n
\r\n
\r\n
\r\n\r\n
\r\n

Ingresa tus datos y en menos de 24 horas te enviaremos las mejores opciones de ortodoncistas cerca de tí

\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n
\r\n

Datos personales

\r\n

Ingresa toda la información requerida en el formulario

\r\n
\r\n
\r\n \r\n  \r\n \r\n {{getErrorMessage('fullName')}}\r\n \r\n \r\n  \r\n \r\n {{getErrorMessage('email')}}\r\n \r\n \r\n  \r\n \r\n {{getErrorMessage('phone')}}\r\n \r\n
\r\n \r\n  \r\n \r\n {{getErrorMessage('zipcode')}}\r\n \r\n \r\n  \r\n Selecciona un estado\r\n \r\n {{state.name}}\r\n \r\n {{getErrorMessage('state')}}\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n

Fotos del caso

\r\n

Envianos fotos de tu caso para darte una atención más personalizada (Opcional). Ver ejemplo de fotos

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \"\"\r\n

{{file.file.name}}

\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n

¡Gracias por confiarnos tu sonrisa!

\r\n

Pronto uno de nuestros especialistas Aliwell se pondrá en contacto contigo para iniciar tu tratamiento

\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { scaleContent, slideLeftToRight, slideRightToLeft, slideTopToBottom } from 'src/app/_appCommon/animations/animations';\r\nimport { BroadcastManager } from 'src/app/_appCommon/base/BroadcastManager';\r\nimport { STEPSTOOFFER, PROGRAMS, AppEventNames } from '../../../_appCommon/base/Constants';\r\n\r\n@Component({\r\n selector: 'app-im-orthodontist',\r\n templateUrl: './im-orthodontist.component.html',\r\n styleUrls: ['./im-orthodontist.component.css'],\r\n animations: [slideRightToLeft, slideLeftToRight, slideTopToBottom, scaleContent]\r\n})\r\n\r\nexport class ImOrthodontistComponent implements OnInit\r\n{\r\n\r\n public StepsToOffer = STEPSTOOFFER;\r\n public Programs = PROGRAMS;\r\n\r\n ngOnInit() { }\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n public transformSVG(html)\r\n {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n\r\n public onHandleClickSignUp(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnShowUserSignUp, true);\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n\t\t
\r\n\t\t\t

Dale a tus pacientes la

\r\n\t\t\t

libertad de sonreír

\r\n\t\t\t

al máximo todos los días

\r\n\t\t
\r\n\t
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n

Únete a la red de ortodoncistas con gran crecimiento en México y Latam

\r\n

Ofrece a tus pacientes la solución ideal para mejorar su sonrisa con la más alta tecnología en alineadores transparentes

\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n

Cómo puedes ofrecer Aliwell® a tus pacientes

\r\n
\r\n
\r\n
\r\n

{{i+1}}. {{item.name}}

\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n

\r\n Pregúntanos como puedes incluir DentalMonitoring en tus casos de Aliwell®\r\n

\r\n
\r\n
\r\n

\r\n Ofrece a tus pacientes una experiencia de vanguardia y alta tecnología a través de las ventajas que da el monitoreo remoto de su tratamiento Aliwell® con DentalMonitoring®\r\n
\r\n
\r\n Pregúntanos como incluirlo en todos tus pacientes con Aliwell® a precio preferencial\r\n

\r\n \"DentalMonitoring\r\n
\r\n
\r\n \"DentalMonitoring\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n

Programas Aliwell®

\r\n
\r\n
\r\n

aliwell® {{item.title}}

\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n

Testimonios de Ortodoncistas

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-image',\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.css'],\r\n})\r\n\r\nexport class ImageComponent implements OnInit\r\n{\r\n public imgUrl: string;\r\n\r\n constructor(private activatedRoute: ActivatedRoute) { }\r\n\r\n ngOnInit(): void\r\n {\r\n var img = this.activatedRoute.snapshot.queryParams['path'];\r\n if (img.contains('aliwellstorageaccount.blob.core.windows.net'))\r\n {\r\n this.imgUrl = img;\r\n }\r\n else\r\n {\r\n this.imgUrl = '../../../assets/logo.png';\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { STEPS } from '../../../_appCommon/base/Constants';\r\nimport { slideRightToLeft, slideTopToBottom, slideLeftToRight, scaleContent } from '../../../_appCommon/animations/animations';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-index',\r\n templateUrl: './index.component.html',\r\n styleUrls: ['./index.component.css'],\r\n animations: [slideRightToLeft, slideLeftToRight, slideTopToBottom, scaleContent]\r\n})\r\n\r\nexport class IndexComponent implements OnInit\r\n{\r\n public steps = STEPS;\r\n\r\n ngOnInit() { }\r\n\r\n constructor(private router: Router) { }\r\n\r\n onHandleButtonNavigate(url: string): void\r\n {\r\n this.router.navigate([`/${url}`]);\r\n }\r\n}\r\n","
\r\n
\r\n\t\t\r\n\t
\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n

¿Qué es Aliwell®?

\r\n

Empresa mexicana creada por ortodoncistas, otorgando alta calidad para el tratamiento de problemas de mal oclusión utilizando alineadores transparentes de alta tecnología

\r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n

Contamos con la más alta tecnología para tus pacientes

\r\n

Podrás visualizar la sonrisa final desde antes de iniciar el tratamiento.

\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n

Descubre testimonios de pacientes de antes y después

\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n

Pídelo en tan solo 3 simples pasos

\r\n \r\n
\r\n
\r\n
\r\n
\r\n \"{{item.title}}\"\r\n
\r\n
\r\n

{{i+1}}. {{item.title}}

\r\n

{{item.content}}

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-privacy-notices',\r\n templateUrl: './privacy-notices.component.html',\r\n styleUrls: ['./privacy-notices.component.css']\r\n})\r\nexport class PrivacyNoticesComponent implements OnInit\r\n{\r\n\r\n ngOnInit(): void { }\r\n\r\n\r\n}\r\n","
\r\n

Avisos de Privacidad

\r\n
\r\n

\r\n ALIWELL SA DE CV
\r\n Calle Dr. Alfredo Piñeyro López No 1012 (Anteriormente denominada Guadalajara), colonia Mitras Sur, Monterrey, Nuevo León México C.P. 64710.\r\n

\r\n\r\n

\r\n Una de las prioridades de ALIWELL SA DE CV es respetar la privacidad de sus usuarios y mantener segura la información. Asimismo, ALIWELL SA DE CV informará al usuario qué tipo de datos recolecta, cómo los almacena, la finalidad del archivo, cómo los protege, el alcance de su compromiso de confidencialidad y los derechos que éste posee como titular de la información.\r\n

\r\n\r\n

\r\n Entre la información solicitada al usuario se encuentra:\r\n

\r\n
    \r\n
  • Nombre completo
  • \r\n
  • Dirección
  • \r\n
  • Email
  • \r\n
  • Teléfono
  • \r\n
  • Ciudad / Estado / País
  • \r\n
  • Datos de facturación
  • \r\n
  • Datos del negocio
  • \r\n
\r\n
\r\n
\r\n

Uso de la información

\r\n

ALIWELL SA DE CV recopilará sus datos personales y datos de contacto de su empresa, por lo que solicitamos su consentimiento a través del presente Aviso de Privacidad con el objeto de utilizarlos para los siguientes fines:

\r\n
    \r\n
  • Para que la compra-venta se realice efectivamente
  • \r\n
  • Para dar cumplimiento a obligaciones contraídas con nuestros clientes
  • \r\n
  • Para dar cumplimiento a obligaciones contraídas con nuestros proveedores en relación al cumplimiento de sus pedidos
  • \r\n
  • Identificarlo como cliente y prestarle los servicios contratados con nosotros
  • \r\n
  • Para verificar su identidad
  • \r\n
  • Para contactarlo y enviarle información relevante respecto a temas de nuestros servicios, así como informarle sobre cambios
  • \r\n
  • Para procurar un servicio eficiente y una mejor atención al usuario
  • \r\n
  • Para efectos de cobranza
  • \r\n
  • En la sección de “Encuentra un Ortodoncista” dentro de nuestro sitio web, pueden aparecer los datos de contacto de su empresa (¨Datos del consultorio”). Esto con la finalidad de conectarlo con usuarios o pacientes interesados en encontrar un distribuidor autorizado para aplicar el tratamiento Aliwell®
  • \r\n
\r\n
\r\n
\r\n

Transferencia de información con terceros

\r\n\r\n

\r\n ALIWELL SA DE CV cuidadosamente realiza transferencias de información con las empresas de web hosting con las que mantiene una relación jurídica vigente para poder mantener, actualizar y administrar sus sitios web.\r\n

\r\n

\r\n ALIWELL SA DE CV puede transferir algunos de sus datos (dirección de empresa y datos de contacto) a empresas de paquetería o logísticas con la finalidad de realizar los envíos de producto que usted solicite.\r\n

\r\n

\r\n Si usted no manifiesta su oposición para que sus datos personales sean transferidos, se entenderá que ha otorgado su consentimiento para ello.\r\n

\r\n
\r\n
\r\n

Medios para el ejercicio de sus derechos como titular de los datos personales

\r\n

\r\n Como titular de los datos personales objeto del presente Aviso de Privacidad usted podrá ejercitar sus derechos de acceso, rectificación, cancelación u oposición.\r\n

\r\n

\r\n Así mismo podrá revocar el consentimiento otorgado para el uso de sus datos personales en cualquier momento. En caso que lo desee contactarnos vía correo electrónico a jgaytan@aliwell.mx\r\n

\r\n
\r\n
\r\n

Cambios en el aviso de privacidad

\r\n

\r\n El presente Aviso de Privacidad podrá ser modificado en el futuro. En todo caso, cualquier modificación al mismo se hará de su conocimiento mediante la publicación del mismo en nuestra página de internet y/o el envío de un correo electrónico a la cuenta que usted nos proporcionó inicialmente.\r\n

\r\n

\r\n No seremos responsables en caso de que usted no reciba la referida notificación de cambio en el Aviso de Privacidad por causa de algún problema con su cuenta de correo electrónico o de transmisión de datos por internet.\r\n

\r\n
\r\n
\r\n

Aceptación de los términos

\r\n

\r\n Esta declaración de Confidencialidad / Privacidad está sujeta a los términos y condiciones de todos los sitios web de ALIWELL SA DE CV, lo cual constituye un acuerdo legal entre el usuario y ALIWELL SA DE CV.\r\n

\r\n

\r\n Si el usuario utiliza los servicios en cualquiera de los sitios de ALIWELL SA DE CV, significa que ha leído, entendido y acordado los términos antes expuestos. Si no está de acuerdo con ellos, el usuario no deberá proporcionar ninguna información personal, ni utilizar los servicios de los sitios de ALIWELL SA DE CV\r\n

\r\n
\r\n
\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { Section, UserAccessResetPassword } from 'src/app/_appCommon/base/AppInterfaceAndBaseClasses';\r\nimport { AuthenticationService } from '../../../_dataservices/security/AuthenticationService';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { ControllerBase } from '../../../_appCommon/base/ControllerBase';\r\nimport { SystemServicesDataService } from '../../../_dataservices/security/SystemServicesDataService';\r\nimport { PasswordErrorMessage, PasswordValidationType } from '../../../_appCommon/base/AppInterfaceAndBaseClasses';\r\n\r\n@Component({\r\n selector: 'app-reset-password',\r\n templateUrl: './reset-password.component.html',\r\n styleUrls: ['./reset-password.component.css'],\r\n providers: [AuthenticationService, SystemServicesDataService]\r\n})\r\n\r\nexport class ResetPasswordComponent extends ControllerBase implements OnInit\r\n{\r\n\r\n @ViewChild(NgForm) public resetPasswordForm: NgForm;\r\n\r\n public userAccessResetPassword: UserAccessResetPassword = { newPassword: \"\", confirmPassword: \"\"};\r\n\r\n public isNewPasswordHide = true;\r\n public isConfirmPasswordHide = true;\r\n\r\n public loading = false;\r\n\r\n public showChangePasswordMessage = false;\r\n\r\n public newPasswordError = \"\";\r\n private passwordErrorType: Map;\r\n\r\n private loginId: string;\r\n private loginIdUrl: string;\r\n private validationKey: string;\r\n\r\n private sectionToRedirect:number;\r\n\r\n constructor(\r\n private router: Router,\r\n private activatedRoute: ActivatedRoute,\r\n private authenticationService: AuthenticationService,\r\n )\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.loginIdUrl = this.activatedRoute.snapshot.queryParams['loginId'];\r\n this.validationKey = this.activatedRoute.snapshot.queryParams['validationKey'];\r\n\r\n if (this.loginIdUrl)\r\n this.loginId = this.loginIdUrl;\r\n\r\n this.passwordErrorType = PasswordErrorMessage;\r\n }\r\n\r\n\r\n public changePassword():void\r\n {\r\n if (this.userAccessResetPassword.newPassword == this.userAccessResetPassword.confirmPassword)\r\n {\r\n this.loading = true;\r\n const resetPasswordData =\r\n {\r\n LoginId: this.loginId,\r\n OldPassword: this.validationKey,\r\n NewPassword: this.userAccessResetPassword.confirmPassword,\r\n };\r\n\r\n this.authenticationService.changePassword(resetPasswordData)\r\n .subscribe((response: any) =>\r\n {\r\n this.sectionToRedirect = response.userSection;\r\n this.passwordChangeSuccess();\r\n },\r\n fail =>\r\n {\r\n if (fail.error.message)\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n this.loading = false;\r\n }\r\n\r\n });\r\n }\r\n else\r\n {\r\n this.resetPasswordForm.form.controls[\"confirmPassword\"].setErrors({\r\n validateEqual: false\r\n });\r\n }\r\n }\r\n\r\n public validatePassword(valueInput:string)\r\n {\r\n this.newPasswordError = \"\";\r\n this.passwordErrorType.forEach(\r\n (value, key) =>\r\n {\r\n if (!new RegExp(key).test(valueInput))\r\n {\r\n this.newPasswordError = value;\r\n }\r\n }\r\n );\r\n if(this.newPasswordError != \"\") this.resetPasswordForm.form.controls['newPassword'].setErrors({'incorrect':true});\r\n }\r\n\r\n private validateConfirmPassword()\r\n {\r\n if(this.newPasswordError == \"\" && this.userAccessResetPassword.newPassword === this.userAccessResetPassword.confirmPassword)\r\n {\r\n this.resetPasswordForm.form.controls['newPassword'].setErrors(null);\r\n this.resetPasswordForm.form.controls['confirmPassword'].setErrors(null);\r\n }\r\n }\r\n\r\n public passwordChangeSuccess()\r\n {\r\n this.loading = false;\r\n this.showChangePasswordMessage = true;\r\n }\r\n\r\n public reset()\r\n {\r\n //We redirect to home and then reload the app.\r\n switch(this.sectionToRedirect){\r\n case Section.Ecommerce:\r\n window.location.href = \"/\";\r\n break;\r\n case Section.Backoffice:\r\n window.location.href = \"/dashboard\";\r\n break;\r\n }\r\n }\r\n}\r\n\r\n","
\r\n
\r\n
\r\n \"Logo\r\n
\r\n
\r\n

Recuperar contraseña

\r\n

{{showChangePasswordMessage ? 'La contraseña ha sido actualizada correctamente' : 'Escribe tu nueva contraseña'}}

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n  \r\n \r\n \r\n Ingresa tu contraseña\r\n {{newPasswordError}}\r\n \r\n \r\n \r\n  \r\n \r\n \r\n La contraseña debe coincidir.\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n","import { NgForm } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { isNullOrUndefined } from 'is-what';\r\nimport { ControllerBase } from '../../_appCommon/base/ControllerBase';\r\nimport { Component, Injector, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { BroadcastManager } from 'src/app/_appCommon/base/BroadcastManager';\r\nimport { AppClientContext } from 'src/app/_appCommon/base/AppClientContext';\r\nimport { UserAccess } from 'src/app/_appCommon/base/AppInterfaceAndBaseClasses';\r\nimport { AppEventNames, ECOMMERCE_USER_TOKEN } from '../../_appCommon/base/Constants';\r\nimport { AuthenticationService } from '../../_dataservices/security/AuthenticationService';\r\nimport { SystemServicesDataService } from '../../_dataservices/security/SystemServicesDataService';\r\n\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.css'],\r\n providers: [AuthenticationService, SystemServicesDataService]\r\n})\r\nexport class LoginComponent extends ControllerBase implements OnInit\r\n{\r\n @Input() public byPassEmailPasswordReset: boolean = false;\r\n\r\n @ViewChild(NgForm) public loginForm: NgForm;\r\n @ViewChild(NgForm) public forgotPasswordForm: NgForm;\r\n\r\n public loading = false;\r\n public showModal = true;\r\n public isUserValid = false;\r\n public isPasswordHide = true;\r\n public attemptCounter: number = 0;\r\n public showForgotMyPassword = false;\r\n public inputEmailForgotPassword: string = \"\";\r\n public userAccessLogin: UserAccess = { email: \"\", password: \"\" };\r\n\r\n\r\n constructor(private router: Router,\r\n private injector: Injector,\r\n private authenticationService: AuthenticationService,\r\n private systemServicesDataService: SystemServicesDataService\r\n )\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit(): void \r\n { \r\n this.getUserLoginFromCache()\r\n }\r\n\r\n public onHandleCloseModal(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnShowUserLogin, false);\r\n }\r\n\r\n public onHandleClickSignUp(): void\r\n {\r\n this.onHandleCloseModal();\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnShowUserSignUp, true);\r\n }\r\n\r\n public onHandleDisableByPass(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingByPassEmailPasswordChange, false);\r\n }\r\n\r\n public onHandleEmailPasswordChange(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingEmailPasswordChange, true);\r\n }\r\n public onHandlePasswordChange(loginData:any): void\r\n {\r\n let event =\r\n {\r\n show: true,\r\n key: loginData.Password,\r\n loginId: loginData.Email\r\n };\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingPasswordChange, event);\r\n }\r\n public onHandleCRUDShow(loginId:any, finalPassword:any): void\r\n {\r\n let event =\r\n {\r\n show: true,\r\n loginId: loginId,\r\n password: finalPassword\r\n };\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingCRUDData, event);\r\n }\r\n\r\n public onHandleCheckUserValid(): void\r\n {\r\n this.loading = true;\r\n this.authenticationService.validateUser(this.userAccessLogin.email)\r\n .subscribe((response) =>\r\n {\r\n if(isNullOrUndefined(response))\r\n {\r\n this.setInfoAlert('Usuario no encontrado');\r\n this.loading = false;\r\n }\r\n else\r\n {\r\n /**\r\n * Begins: Onboarding changes!\r\n */\r\n let body =\r\n {\r\n loginId: this.userAccessLogin.email\r\n };\r\n this.authenticationService.checkPasswordResetRequired(body).subscribe((passwordReset: any) =>\r\n {\r\n if (passwordReset && !this.byPassEmailPasswordReset)\r\n {\r\n this.authenticationService.forgotPasswordOnboarding(this.userAccessLogin.email).subscribe((response: any) =>\r\n {\r\n this.onHandleCloseModal();\r\n this.onHandleEmailPasswordChange();\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n }\r\n else\r\n {\r\n this.loading = false;\r\n this.isUserValid = true;\r\n }\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n /**\r\n * Ends: Onboarding changes!\r\n */\r\n }\r\n }, (fail) =>\r\n {\r\n var outputs = this.CreateErrorMessage(fail.error.failures);\r\n this.setDangerAlert(fail.error.message + outputs);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n public CreateErrorMessage(failures: any): String\r\n {\r\n var message = \"\";\r\n\r\n var array = Object.keys(failures);\r\n\r\n array.forEach(function (key, index)\r\n {\r\n message += \", \" + key + \":\";\r\n failures[key].forEach(element =>\r\n {\r\n message += ' ' + element;\r\n });\r\n });\r\n\r\n return message;\r\n }\r\n\r\n private resetPasswordCounterChecking()\r\n {\r\n ++this.attemptCounter;\r\n if (this.attemptCounter === 3)\r\n {\r\n // enviar a recuperación de contraseña\r\n this.showForgotMyPassword = true;\r\n this.attemptCounter = 0;\r\n }\r\n }\r\n\r\n public login(): void\r\n {\r\n if (this.userAccessLogin.email && this.userAccessLogin.password)\r\n {\r\n this.loading = true;\r\n const loginData = {\r\n Email: this.userAccessLogin.email,\r\n Password: this.userAccessLogin.password\r\n };\r\n let bodyPasswordReset =\r\n {\r\n loginId: this.userAccessLogin.email\r\n };\r\n this.authenticationService.loginNoLoginCount(loginData).subscribe((loginNoLoginCountResponse: any) =>\r\n {\r\n this.authenticationService.checkPasswordResetRequired(bodyPasswordReset).subscribe((passwordReset: any) =>\r\n {\r\n if (passwordReset)\r\n {\r\n this.onHandleCloseModal();\r\n this.onHandlePasswordChange(loginData);\r\n }\r\n else\r\n {\r\n let bodyIncompleteUser =\r\n {\r\n loginId: this.userAccessLogin.email\r\n };\r\n this.authenticationService.checkIncompleteUser(bodyIncompleteUser).subscribe((isIncompleteUser: any) =>\r\n {\r\n if (isIncompleteUser)\r\n {\r\n this.onHandleCloseModal();\r\n this.onHandleCRUDShow(loginData.Email, loginData.Password);\r\n }\r\n else\r\n {\r\n this.authenticationService.login(loginData).subscribe((response: any) =>\r\n {\r\n if (this.getUserLoginFromCache())\r\n {\r\n this.loading = false;\r\n this.setSuccessAlert('¡Bienvenido!');\r\n this.onHandleCloseModal();\r\n this.router.navigate(['/ecommerce']);\r\n }\r\n }, exception =>\r\n {\r\n this.loading = false;\r\n this.setDangerAlert(\"Inicio de sesión: \" + exception.error.message);\r\n this.resetPasswordCounterChecking();\r\n });\r\n }\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n\r\n }\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n }, (fail: any) =>\r\n {\r\n this.loading = false;\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n }\r\n else\r\n {\r\n this.setDangerAlert('Completa los datos del inicio de sesión');\r\n this.loading = false;\r\n }\r\n }\r\n\r\n public forgotPassword(): void\r\n {\r\n this.loading = true;\r\n this.authenticationService.forgotPassword(this.inputEmailForgotPassword)\r\n .subscribe((response: any) => {\r\n this.setInfoAlert(\"Se ha enviado un correo de recuperación de contraseña\");\r\n this.loading = false;\r\n this.onHandleCloseModal();\r\n }, fail => {\r\n this.setWarningAlert(\"Ha ocurrido un error al recuperar la contraseña: \" + fail.error.message);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n private getUserLoginFromCache(): boolean\r\n {\r\n let user = JSON.parse(localStorage.getItem('currentUser'));\r\n this.router.navigate(['/ecommerce']);\r\n return this.setSecurityToken(user);\r\n }\r\n\r\n private setSecurityToken(user: any): boolean\r\n {\r\n if (user && user.cacheToken)\r\n {\r\n // Remove Token\r\n AppClientContext.Instance.headerValues.delete(ECOMMERCE_USER_TOKEN);\r\n\r\n // Append Token\r\n AppClientContext.Instance.headerValues.set(ECOMMERCE_USER_TOKEN, user.cacheToken);\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n","
\r\n
\r\n
\r\n
\r\n \"Logo\r\n
\r\n
\r\n

{{!showForgotMyPassword ? 'Iniciar sesión' : '¡Ingresa el correo para ayudarte!'}}

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n  \r\n \r\n Ingresa un correo electrónico válido\r\n Completa este campo\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n

¿Aún no tienes cuenta? Regístrate

\r\n
\r\n
\r\n
\r\n
Bienvenido a nuestra nueva plataforma.
\r\n
Si es tu primera vez iniciando sesión en el nuevo sistema, es necesario que restablezcas tu contraseña.
\r\n
\r\n
\r\n \r\n \r\n  \r\n \r\n \r\n Ingresa tu contraseña\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n  \r\n \r\n Ingresa un correo valido\r\n Completa este campo\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n

\r\n ¿Ya tienes una cuenta?\r\n \r\n Inicia sesión\r\n \r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","import { Component, HostListener, Input, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { ClinicDataService } from '../../../../app-client/_dataservices/ClinicDataService';\r\nimport { CustomerDataService } from '../../../../app-client/_dataservices/CustomerDataService';\r\nimport { AppClientContext } from '../../../_appCommon/base/AppClientContext';\r\nimport { AppEventNames, ECOMMERCE_USER_TOKEN, STATES } from '../../../_appCommon/base/Constants';\r\nimport { ControllerBase } from '../../../_appCommon/base/ControllerBase';\r\nimport { AuthenticationService } from '../../../_dataservices/security/AuthenticationService';\r\nimport { Router } from '@angular/router';\r\nimport { BroadcastManager } from '../../../_appCommon/base/BroadcastManager';\r\nimport { IncompleteUsersDataService } from '../../../../app-client/_dataservices/IncompleteUsersDataService';\r\nimport { CustomerStatus } from 'src/app-admin/_appCommon/base/AppInterfaceAndBaseClasses';\r\nimport { LoadingService } from '../../../../shared/services/loading.service';\r\n\r\n\r\n@Component({\r\n selector: 'app-onboarding-crud',\r\n templateUrl: './onboardingCRUD.component.html',\r\n styleUrls: ['./onboardingCRUD.component.css'],\r\n providers: [CustomerDataService, AuthenticationService, ClinicDataService, IncompleteUsersDataService]\r\n})\r\n\r\nexport class OnboardingCRUDComponent extends ControllerBase\r\n{\r\n\r\n public specialtyInOrthodonticsNo: boolean = false;\r\n public specialtyInOrthodonticsYes: boolean = false;\r\n\r\n public showModal = true;\r\n public successMessage = false;\r\n\r\n public customerObject: any;\r\n public clinicObject: any;\r\n\r\n public currentEntity: any;\r\n\r\n public size700_1020 = false;\r\n\r\n public States = STATES;\r\n\r\n public doctorForm: FormGroup;\r\n public clinicForm: FormGroup;\r\n\r\n public userId: any;\r\n public customerId: any;\r\n public clinicId: any;\r\n\r\n @Input() public currentPassword: string = \"\";\r\n @Input() public loginId: string = \"\";\r\n\r\n @ViewChild('stepper') private myStepper: MatStepper;\r\n\r\n\r\n constructor(private _formBuilder: FormBuilder,\r\n private customerDataService: CustomerDataService,\r\n private authenticationService: AuthenticationService,\r\n private clinicDataService: ClinicDataService,\r\n private incompleteUsersDataService: IncompleteUsersDataService,\r\n private router: Router,\r\n private loadingService:LoadingService)\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n super.ngOnInit();\r\n this.initializeForms();\r\n this.doLogin();\r\n\r\n }\r\n /**\r\n * Method used to initialize the customer object and data\r\n */\r\n private initializeCustomer(response: any)\r\n {\r\n this.customerObject =\r\n {\r\n id: this.customerId,\r\n name: response.name,\r\n lastName: response.lastName,\r\n secondLastName: response.secondLastName,\r\n email: response.email,\r\n phone: response.phone,\r\n hasOrthodonticsSpecialty: response.hasOrthodonticsSpecialty,\r\n customerTypeId: response.customerTypeId,\r\n customerLevelId: response.customerLevelId,\r\n rightsAgreementId: null,\r\n promiseLetterId: null,\r\n fiscalDocumentId: null,\r\n isActive: true,\r\n customerStatus : CustomerStatus.Activo,\r\n };\r\n if (response.hasOrthodonticsSpecialty)\r\n {\r\n this.specialtyInOrthodonticsYes = true;\r\n this.specialtyInOrthodonticsNo = false;\r\n }\r\n else\r\n {\r\n this.specialtyInOrthodonticsYes = false;\r\n this.specialtyInOrthodonticsNo = true;\r\n }\r\n }\r\n /**\r\n * Method used to initialize the clinic data\r\n */\r\n private initializeClinic()\r\n {\r\n this.clinicDataService.getClinicByCustomerId(this.customerId).subscribe((response: any) =>\r\n {\r\n response;\r\n this.clinicObject =\r\n {\r\n id: response.id,\r\n code: response.code,\r\n name: response.name,\r\n description: response.description,\r\n contactName: response.contactName,\r\n zipCode: response.zipCode,\r\n phone: response.phone,\r\n street: response.street,\r\n number: response.number,\r\n subnumber: response.subnumber,\r\n city: response.city,\r\n state: response.state, //this.currentEntity.state,\r\n website: response.website,\r\n socialMedia: response.socialMedia,\r\n comments: response.comments,\r\n isActive: response.isActive,\r\n customerId: response.customerId,\r\n isDefault: response.isDefault\r\n };\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n }\r\n /**\r\n * Method used to retrieve the user id\r\n */\r\n private getData(): void\r\n {\r\n this.authenticationService.getCustomerByLoginId(this.loginId).subscribe((response: any) =>\r\n {\r\n this.userId = response.userId;\r\n this.customerId = response.id;\r\n this.initializeCustomer(response);\r\n this.initializeClinic();\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n }\r\n /**\r\n * Method used to intialize the forms.\r\n * Doctor and clinic form\r\n */\r\n private initializeForms(): void\r\n {\r\n this.doctorForm = this._formBuilder.group({\r\n firstName: [null, Validators.required],\r\n lastName: [null, Validators.required],\r\n secondLastName: [null, Validators.required],\r\n email: [null, Validators.required],\r\n phone: [null, Validators.required],\r\n specialtyInOrthodontics: [null, \"\"]\r\n });\r\n this.clinicForm = this._formBuilder.group({\r\n clinicName: [null, Validators.required],\r\n street: [null, Validators.required],\r\n clinicNumber: [null, Validators.required],\r\n clinicSubNumber: [null, \"\"],\r\n city: [null, Validators.required],\r\n state: [null, Validators.required],\r\n clinicZipCode: [null, Validators.required],\r\n contactName: [null, Validators.required],\r\n clinicPhone: [null, Validators.required],\r\n website: [null, \"\"],\r\n socialMedia: [null, \"\"]\r\n });\r\n }\r\n\r\n /**\r\n * Method used to handle the first form validation\r\n */\r\n public goForward(): void\r\n {\r\n if (this.doctorForm.valid)\r\n {\r\n this.customerDataService.updateCustomer(this.customerObject).subscribe((response: any) =>\r\n {\r\n this.setSuccessAlert(\"Información del cliente actualizada correctamente\");\r\n this.myStepper.next();\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n\r\n }\r\n else\r\n {\r\n this.doctorForm.markAllAsTouched();\r\n }\r\n }\r\n\r\n /**\r\n * Method used to validate both forms and save changes!\r\n */\r\n public saveNow(): void\r\n {\r\n if (this.doctorForm.valid && this.clinicForm.valid)\r\n {\r\n this.clinicDataService.updateClinic(this.clinicObject).subscribe((response: any) =>\r\n {\r\n this.setInfoAlert(\"Información de clínica actualizada correctamente\");\r\n\r\n let body =\r\n {\r\n UserId: this.userId\r\n };\r\n this.incompleteUsersDataService.deleteIncompleteUser(body).subscribe((response: any) =>\r\n {\r\n this.successMessage = true;\r\n //Refresh Storage\r\n const loginData =\r\n {\r\n Email: this.loginId,\r\n Password: this.currentPassword\r\n };\r\n this.authenticationService.login(loginData).subscribe((loginResponse: any) =>\r\n {\r\n //Refresh Storage\r\n this.goToECommerce();\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(\"Hubo un problema al refrescar sus datos\");\r\n });\r\n\r\n\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n\r\n\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n this.successMessage = true;\r\n }\r\n else\r\n {\r\n this.doctorForm.markAllAsTouched();\r\n this.clinicForm.markAllAsTouched();\r\n }\r\n }\r\n /**\r\n * Methods used to detect the changes in the radio groups\r\n */\r\n public specialtyInOrthodonticsYesChanged()\r\n {\r\n this.customerObject.hasOrthodonticsSpecialty = true;\r\n }\r\n\r\n public specialtyInOrthodonticsNoChanged()\r\n {\r\n this.customerObject.hasOrthodonticsSpecialty = false;\r\n }\r\n\r\n /**\r\n * Method used to login the current user!\r\n */\r\n private doLogin():void\r\n {\r\n const loginData =\r\n {\r\n Email: this.loginId,\r\n Password: this.currentPassword\r\n };\r\n this.authenticationService.login(loginData).subscribe((response: any) =>\r\n {\r\n if (this.getUserLoginFromCache())\r\n {\r\n this.setSuccessAlert('¡Bienvenido!');\r\n let bodyIncompleteUser =\r\n {\r\n loginId: loginData.Email\r\n };\r\n this.authenticationService.checkIncompleteUser(bodyIncompleteUser).subscribe((isIncompleteUser: any) =>\r\n {\r\n if (isIncompleteUser)\r\n {\r\n this.getData();\r\n }\r\n else\r\n {\r\n this.goToECommerce();\r\n }\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n\r\n }\r\n }, exception =>\r\n {\r\n this.setDangerAlert(\"Inicio de sesión: \" + exception.error.message);\r\n });\r\n }\r\n private getUserLoginFromCache(): boolean\r\n {\r\n let user = JSON.parse(localStorage.getItem('currentUser'));\r\n return this.setSecurityToken(user);\r\n }\r\n private setSecurityToken(user: any): boolean\r\n {\r\n if (user && user.cacheToken)\r\n {\r\n // Remove Token\r\n AppClientContext.Instance.headerValues.delete(ECOMMERCE_USER_TOKEN);\r\n\r\n // Append Token\r\n AppClientContext.Instance.headerValues.set(ECOMMERCE_USER_TOKEN, user.cacheToken);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Method used to redirect the user to the E-Commerce after 5 seconds\r\n */\r\n private goToECommerce(): void\r\n {\r\n this.setInfoAlert(\"Redireccionando...\");\r\n\r\n this.loadingService.hide();\r\n let event =\r\n {\r\n show: false,\r\n loginId: \"\",\r\n password: \"\"\r\n };\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingCRUDData, event);\r\n this.router.navigate(['/ecommerce']);\r\n }\r\n /*\r\n * Methods used to detect the screen resolution */\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event)\r\n {\r\n this.checkResolution();\r\n }\r\n private checkResolution(): void\r\n {\r\n if (window.innerWidth < 700 && window.innerHeight < 1020)\r\n {\r\n this.size700_1020 = true;\r\n }\r\n else\r\n {\r\n this.size700_1020 = false;\r\n }\r\n }\r\n}\r\n\r\n","\r\n \r\n
\r\n
\r\n
\r\n

¡Bienvenido de vuelta!

\r\n
\r\n
\r\n
\r\n
\r\n

A continuación, te recomendamos actualizar tus datos para tener una mejor experiencia

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n Datos del médico\r\n
\r\n \r\n Datos del médico\r\n \r\n
\r\n
\r\n
\r\n
\r\n Nombre(s)*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Apellido Paterno*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Apellido Materno*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Email*\r\n \r\n \r\n Completa este campo.\r\n Introduce un email válido.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Teléfono*\r\n \r\n \r\n Completa este campo.\r\n Introduce un número de teléfono válido a 10 digitos.\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n ¿Tiene especialidad en ortodoncia?*\r\n Si\r\n No\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n Datos del Consultorio\r\n
\r\n
\r\n
\r\n
\r\n \r\n Datos del consultorio\r\n \r\n
\r\n
\r\n
\r\n Nombre*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Calle*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Número exterior*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n Número interior\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Ciudad*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Estado*\r\n \r\n \r\n {{item.name}}\r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Código postal*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Contacto con consultorio\r\n \r\n
\r\n
\r\n
\r\n Nombre de contacto*\r\n \r\n \r\n Completa este campo.\r\n \r\n
\r\n
\r\n
\r\n Teléfono*\r\n \r\n \r\n Completa este campo.\r\n Introduce un número de teléfono válido a 10 digitos.\r\n \r\n
\r\n
\r\n
\r\n
\r\n Sitio web\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Redes sociales\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n

¡Felicidades!

\r\n
\r\n
\r\n
\r\n
\r\n

Tus datos y tu contraseña han sido actualizados correctamente.

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","import { Component } from '@angular/core';\r\nimport { BroadcastManager } from '../../../_appCommon/base/BroadcastManager';\r\nimport { AppEventNames } from '../../../_appCommon/base/Constants';\r\nimport { ControllerBase } from '../../../_appCommon/base/ControllerBase';\r\n\r\n@Component({\r\n selector: 'app-onboarding-email-password-reset',\r\n templateUrl: './emailPasswordReset.component.html',\r\n styleUrls: ['./emailPasswordReset.component.css']\r\n})\r\n\r\nexport class EmailPasswordResetComponent extends ControllerBase\r\n{\r\n public showModal = true;\r\n\r\n constructor()\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n\r\n }\r\n public onHandleCloseModal(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingEmailPasswordChange, false);\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingByPassEmailPasswordChange, false);\r\n }\r\n public doLogin(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingEmailPasswordChange, false);\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnShowUserLogin, true);\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingByPassEmailPasswordChange, true);\r\n }\r\n}\r\n\r\n","\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \"Logo\r\n
\r\n
\r\n check\r\n
\r\n
\r\n

Hemos enviado a tu correo una contraseña temporal.

\r\n
\r\n
\r\n

Estamos migrando de plataforma, será necesario que restablezcas tu contraseña al ingresar.

\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, Input } from '@angular/core';\r\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { PasswordErrorMessage, PasswordValidationType } from '../../../_appCommon/base/AppInterfaceAndBaseClasses';\r\nimport { BroadcastManager } from '../../../_appCommon/base/BroadcastManager';\r\nimport { AppEventNames } from '../../../_appCommon/base/Constants';\r\nimport { ControllerBase } from '../../../_appCommon/base/ControllerBase';\r\nimport { AuthenticationService } from '../../../_dataservices/security/AuthenticationService';\r\n\r\n@Component({\r\n selector: 'app-onboarding-password-reset',\r\n templateUrl: './passwordReset.component.html',\r\n styleUrls: ['./passwordReset.component.css'],\r\n providers: [AuthenticationService]\r\n})\r\n\r\nexport class PasswordResetComponent extends ControllerBase\r\n{\r\n @Input() public passwordKey: string = \"\";\r\n @Input() public loginId: string = \"\";\r\n\r\n public showModal = true;\r\n public hide = true;\r\n\r\n public changePasswordForm: FormGroup;\r\n\r\n public newPasswordError = \"\";\r\n private passwordErrorType: Map;\r\n\r\n public finalPassword: string = \"\";\r\n\r\n constructor(private _formBuilder: FormBuilder,\r\n private authenticationService: AuthenticationService)\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.initializeForm();\r\n this.passwordErrorType = PasswordErrorMessage;\r\n }\r\n /**\r\n * Method used to initialize the only form\r\n */\r\n public initializeForm(): void\r\n {\r\n this.changePasswordForm = this._formBuilder.group({\r\n confirmNewPassword: [null, Validators.required],\r\n newPassword: [null, Validators.required]\r\n });\r\n }\r\n /**\r\n * Method used to process the new password\r\n *\r\n */\r\n public changePassword(): void\r\n {\r\n if (this.changePasswordForm.valid && this.validatePasswordEqual())\r\n {\r\n const resetPasswordData =\r\n {\r\n LoginId: this.loginId,\r\n OldPassword: this.passwordKey,\r\n NewPassword: this.changePasswordForm.get('newPassword').value,\r\n };\r\n this.authenticationService.changePassword(resetPasswordData).subscribe((response: any) =>\r\n {\r\n this.setSuccessAlert(\"Contraseña cambiada correctamente\");\r\n this.finalPassword = resetPasswordData.NewPassword;\r\n this.onHandleEmailPasswordChange();\r\n }, (fail: any) =>\r\n {\r\n this.setDangerAlert(fail.error.message);\r\n });\r\n\r\n }\r\n else\r\n {\r\n this.setWarningAlert(\"Completa todos los cambios\");\r\n this.changePasswordForm.markAllAsTouched();\r\n }\r\n\r\n }\r\n /**\r\n * Method used to validate if the passwords are equal\r\n */\r\n public validatePasswordEqual(): boolean\r\n {\r\n if (this.changePasswordForm.get('newPassword').value == this.changePasswordForm.get('confirmNewPassword').value)\r\n {\r\n return true;\r\n }\r\n else\r\n {\r\n this.changePasswordForm.controls[\"confirmNewPassword\"].setErrors({\r\n validateEqual: false\r\n });\r\n return false;\r\n }\r\n }\r\n /**\r\n * Method used to validate the user password\r\n */\r\n public validatePassword(valueInput: string)\r\n {\r\n this.newPasswordError = \"\";\r\n this.passwordErrorType.forEach(\r\n (value, key) =>\r\n {\r\n if (!new RegExp(key).test(valueInput))\r\n {\r\n this.newPasswordError = value;\r\n }\r\n }\r\n );\r\n if (this.newPasswordError != \"\") this.changePasswordForm.controls['newPassword'].setErrors({ 'incorrect': true });\r\n }\r\n /**\r\n * Method used to show up the CRUD onboarding data\r\n */\r\n public onHandleEmailPasswordChange(): void\r\n {\r\n let event1 =\r\n {\r\n show: true,\r\n loginId: this.loginId,\r\n password: this.finalPassword\r\n };\r\n let event2 =\r\n {\r\n show: false,\r\n key: \"\",\r\n loginId: \"\"\r\n };\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingCRUDData, event1);\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnboardingPasswordChange, event2);\r\n }\r\n}\r\n\r\n","\r\n
\r\n
\r\n
\r\n \"Logo\r\n
\r\n
\r\n

Establece una nueva contraseña

\r\n
\r\n
\r\n \r\n Contraseña\r\n lock\r\n \r\n Completa este campo.\r\n {{newPasswordError}}\r\n {{hide ? 'visibility_off' : 'visibility'}}\r\n \r\n
\r\n
\r\n \r\n Confimar contraseña\r\n lock\r\n \r\n Completa este campo.\r\n La contraseña debe coincidir.\r\n {{hide ? 'visibility_off' : 'visibility'}}\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-user-onboarding',\r\n templateUrl: './user-onboarding.component.html',\r\n styleUrls: ['./user-onboarding.component.css']\r\n})\r\n\r\nexport class UserOnboardingComponent implements OnInit\r\n{\r\n @Input() public isShowPasswordEmailReset: boolean = false;\r\n @Input() public isShowPasswordReset: boolean = false;\r\n @Input() public isShowCRUD:boolean = false;\r\n @Input() public passwordKey: string = \"\";\r\n @Input() public currentPassword: string = \"\";\r\n @Input() public loginId: string = \"\";\r\n\r\n\r\n constructor(private router: Router, private activeRoute: ActivatedRoute) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n\r\n","\r\n\r\n\r\n","import { NgForm } from '@angular/forms';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { AppEventNames, STATES } from 'src/app/_appCommon/base/Constants';\r\nimport { StringTools } from 'src/app/_appCommon/util/StringTools';\r\nimport { ControllerBase } from '../../_appCommon/base/ControllerBase';\r\nimport { BroadcastManager } from 'src/app/_appCommon/base/BroadcastManager';\r\nimport { CustomerAccessDataService } from '../../_dataservices/security/CustomerAccessDataService';\r\n\r\n@Component({\r\n selector: 'app-register',\r\n templateUrl: './register.component.html',\r\n styleUrls: ['./register.component.css'],\r\n providers: [CustomerAccessDataService]\r\n})\r\n\r\nexport class RegisterComponent extends ControllerBase implements OnInit\r\n{\r\n @ViewChild(NgForm) public residentForm: NgForm;\r\n @ViewChild(NgForm) public specialistForm: NgForm;\r\n\r\n public nowDate;\r\n public interval: any;\r\n public play: boolean;\r\n public action: string;\r\n public loading = false;\r\n public showModal = true;\r\n public time: number = 0;\r\n public clearField: string;\r\n public isSignUpComplete = false;\r\n public showSpecialistForm = true;\r\n public userSignUpResident: any = {};\r\n public userSignUpSpecialist: any = {};\r\n public States = STATES;\r\n public showError: boolean = false;\r\n constructor(private customerAccessDataService: CustomerAccessDataService)\r\n {\r\n super();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.initStartDate();\r\n }\r\n\r\n public startTimer()\r\n {\r\n this.play = true;\r\n this.interval = setInterval(() =>\r\n {\r\n this.time++;\r\n if (this.clearField === \"userSignUpResidentEmail\")\r\n {\r\n if (this.action.includes(\"set@CountTo0\"))\r\n {\r\n this.userSignUpResident.email = StringTools.removeChars(this.userSignUpResident.email, \"@\");\r\n }\r\n if (this.action.includes(\"clearBadChars\"))\r\n {\r\n this.userSignUpResident.email = StringTools.removeChars(this.userSignUpResident.email, StringTools.emailBadChars);\r\n }\r\n if (this.action.includes(\"set@CountTo1\"))\r\n {\r\n this.userSignUpResident.email = StringTools.setCharCountTo1(this.userSignUpResident.email, \"@\");\r\n }\r\n }\r\n else if (this.clearField === \"userSignUpSpecialistEmail\")\r\n {\r\n if (this.action.includes(\"set@CountTo0\"))\r\n {\r\n this.userSignUpSpecialist.email = StringTools.removeChars(this.userSignUpResident.email, \"@\");\r\n }\r\n if (this.action.includes(\"clearBadChars\"))\r\n {\r\n this.userSignUpSpecialist.email = StringTools.removeChars(this.userSignUpSpecialist.email, StringTools.emailBadChars);\r\n }\r\n if (this.action.includes(\"set@CountTo1\"))\r\n {\r\n this.userSignUpSpecialist.email = StringTools.setCharCountTo1(this.userSignUpSpecialist.email, \"@\");\r\n }\r\n }\r\n else if (this.clearField === \"userSignUpResidentPhone\")\r\n {\r\n if (this.action.includes(\"clearBadChars\"))\r\n {\r\n this.userSignUpResident.phone = StringTools.removeChars(this.userSignUpResident.phone, StringTools.phoneBadChars);\r\n }\r\n }\r\n else if (this.clearField === \"userSignUpSpecialistPhone\")\r\n {\r\n if (this.action.includes(\"clearBadChars\"))\r\n {\r\n this.userSignUpSpecialist.phone = StringTools.removeChars(this.userSignUpSpecialist.phone, StringTools.phoneBadChars);\r\n }\r\n }\r\n this.pauseTimer();\r\n }, 1000);\r\n }\r\n\r\n public pauseTimer()\r\n {\r\n this.play = false;\r\n clearInterval(this.interval);\r\n }\r\n\r\n public userSignUpResidentEmailChanged()\r\n {\r\n this.clearField = \"userSignUpResidentEmail\";\r\n let doWork: boolean = false;\r\n this.action = \"\";\r\n if (this.userSignUpResident.email[0] === \"@\")\r\n {\r\n this.action += \" set@CountTo0\";\r\n doWork = true;\r\n }\r\n if (StringTools.emailHasBadChars(this.userSignUpResident.email))\r\n {\r\n this.action += \" clearBadChars\";\r\n doWork = true;\r\n }\r\n if (StringTools.stringCharCount(this.userSignUpResident.email, \"@\") > 1)\r\n {\r\n this.action += \" set@CountTo1\";\r\n doWork = true;\r\n }\r\n if (doWork)\r\n {\r\n if (!this.play)\r\n {\r\n this.startTimer();\r\n }\r\n }\r\n }\r\n\r\n public userSignUpSpecialistEmailChanged()\r\n {\r\n this.clearField = \"userSignUpSpecialistEmail\";\r\n let doWork: boolean = false;\r\n this.action = \"\";\r\n if (this.userSignUpSpecialist.email[0] === \"@\")\r\n {\r\n this.action += \" set@CountTo0\";\r\n doWork = true;\r\n }\r\n if (StringTools.emailHasBadChars(this.userSignUpSpecialist.email))\r\n {\r\n this.action += \" clearBadChars\";\r\n doWork = true;\r\n }\r\n if (StringTools.stringCharCount(this.userSignUpSpecialist.email, \"@\") > 1)\r\n {\r\n this.action += \" set@CountTo1\";\r\n doWork = true;\r\n }\r\n if (doWork)\r\n {\r\n if (!this.play)\r\n {\r\n this.startTimer();\r\n }\r\n }\r\n }\r\n\r\n public userSignUpSpecialistPhoneChanged()\r\n {\r\n this.clearField = \"userSignUpSpecialistPhone\";\r\n let doWork: boolean = false;\r\n this.action = \"\";\r\n if (StringTools.phoneHasBadChars(this.userSignUpSpecialist.phone))\r\n {\r\n this.action += \" clearBadChars\";\r\n doWork = true;\r\n }\r\n if (doWork)\r\n {\r\n if (!this.play)\r\n {\r\n this.startTimer();\r\n }\r\n }\r\n }\r\n\r\n public userSignUpResidentPhoneChanged()\r\n {\r\n this.clearField = \"userSignUpResidentPhone\";\r\n let doWork: boolean = false;\r\n this.action = \"\";\r\n if (StringTools.phoneHasBadChars(this.userSignUpResident.phone))\r\n {\r\n this.action += \" clearBadChars\";\r\n doWork = true;\r\n }\r\n if (doWork)\r\n {\r\n if (!this.play)\r\n {\r\n this.startTimer();\r\n }\r\n }\r\n }\r\n\r\n public signUp(): void\r\n {\r\n let signUpData = {};\r\n\r\n if((this.specialistForm.valid&&this.userSignUpSpecialist.hasOrthodonticsSpecialty) || this.residentForm.valid)\r\n {\r\n if (!this.showSpecialistForm)\r\n this.userSignUpResident.isResident = true;\r\n\r\n signUpData = this.showSpecialistForm ? this.userSignUpSpecialist : this.userSignUpResident;\r\n signUpData['loginId'] = this.showSpecialistForm ? this.userSignUpSpecialist.email : signUpData['loginId'] = this.userSignUpResident.email;\r\n\r\n this.loading = true;\r\n }\r\n else\r\n {\r\n this.showError=true;\r\n this.residentForm.form.markAllAsTouched();\r\n this.specialistForm.form.markAllAsTouched();\r\n return;\r\n }\r\n\r\n this.customerAccessDataService.createAccount(signUpData)\r\n .subscribe((response: any) =>\r\n {\r\n this.setSuccessAlert('¡Registro completado!');\r\n this.isSignUpComplete = true;\r\n this.loading = false;\r\n }, error =>\r\n {\r\n this.setWarningAlert(\"Se produjo un error al intentar crear tu cuenta. Detalle: \" + error.error.message);\r\n this.loading = false;\r\n });\r\n }\r\n\r\n public reset(): void\r\n {\r\n this.residentForm?.reset();\r\n this.specialistForm?.reset();\r\n this.onHandleCloseModal();\r\n }\r\n\r\n public onHandleCloseModal(): void\r\n {\r\n BroadcastManager.Instance.broadcast(AppEventNames.OnShowUserSignUp, false);\r\n }\r\n\r\n public setGraduationDate(event: any)\r\n {\r\n let start = new Date(event.value.toString());\r\n this.userSignUpResident.startDate = new Date(event.value.toString());\r\n this.userSignUpResident.startDate.setHours(0, 0, 0, 0);\r\n }\r\n\r\n public initStartDate()\r\n {\r\n const date = this.userSignUpResident.startDate ? new Date(this.userSignUpResident.startDate) : new Date();\r\n date.setDate(date.getDate());\r\n date.setHours(0, 0, 0, 0);\r\n this.nowDate = date;\r\n this.userSignUpResident.startDate = date;\r\n }\r\n\r\n public getCheckBoxError(): boolean {\r\n\r\n if (this.userSignUpSpecialist.hasOrthodonticsSpecialty) {\r\n this.showError = false;\r\n return false;\r\n }\r\n else \r\n {\r\n this.showError = true;\r\n return true;\r\n }\r\n }\r\n}\r\n\r\n","
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \"\"\r\n
\r\n
\r\n

Registro

\r\n

Únete y descubre Aliwell®

\r\n \r\n
\r\n

Soy especialista

\r\n \r\n

Soy residente

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n ¿Cuenta con especialidad en ortodoncia? *\r\n \r\n Completa este campo\r\n\r\n \r\n  \r\n \r\n Completa este campo\r\n Ingresa un correo electrónico valido\r\n \r\n
\r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n Ingresa un número válido (10 dígitos)\r\n \r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n
\r\n \r\n  \r\n Selecciona un estado\r\n \r\n {{state.name}}\r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n \r\n \r\n  \r\n \r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n
\r\n \r\n Fecha graduación\r\n \r\n \r\n \r\n La fecha de graduación debe ser mayor o igual a la fecha actual\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n Ingresa un correo electrónico valido\r\n \r\n
\r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n Ingresa un número válido (10 dígitos)\r\n \r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n
\r\n \r\n  \r\n Selecciona un estado\r\n \r\n {{state.name}}\r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n Completa este campo\r\n \r\n \r\n  \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n

Dando clic en \"Registrarme\" estoy de acuerdo con los Avisos de Privacidad

\r\n
\r\n \r\n
\r\n

¡Tu registro se ha completado exitosamente!

\r\n \"Registro\r\n

Te hemos enviado un correo electrónico con tu información.

\r\n

Favor de consultar nuestro aviso de privacidad

\r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-user-access',\r\n templateUrl: './user-access.component.html',\r\n styleUrls: ['./user-access.component.css']\r\n})\r\n\r\nexport class UserAccessComponent implements OnInit\r\n{\r\n @Input() public isShowLogin = true;\r\n @Input() public byPassEmailPasswordReset = false;\r\n public showLogin = false;\r\n\r\n constructor(private router: Router, private activeRoute: ActivatedRoute) { }\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n\r\n","\r\n\r\n\r\n","import { CommonModule } from \"@angular/common\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { RecaptchaModule } from \"ng-recaptcha\";\r\nimport { AppRoutingModule } from \"../app-routing.module\";\r\nimport { AppComponent } from \"../app.component\";\r\nimport { AppMaterialModule } from \"../layouts/material/app.material.module\";\r\nimport { UserAccessComponent } from \"../user-access/user-access.component\";\r\nimport { ShareModule } from \"../_appCommon/share.module\";\r\nimport { LoginComponent } from \"./login/login.component\";\r\nimport { RegisterComponent } from \"./register/register.component\";\r\nimport { AppShareModule } from '../../shared/app.module';\r\nimport { UserOnboardingComponent } from \"./onboarding/user-onboarding.component\";\r\nimport { IncompleteUsersDataService } from \"../../app-client/_dataservices/IncompleteUsersDataService\";\r\nimport { OnboardingCRUDComponent } from \"./onboarding/dataCRUD/onboardingCRUD.component\";\r\nimport { EmailPasswordResetComponent } from \"./onboarding/emailPasswordReset/emailPasswordReset.component\";\r\nimport { PasswordResetComponent } from \"./onboarding/passwordReset/passwordReset.component\";\r\nimport { LoadingGeneralModule } from \"src/shared/components/loading-general/loading-general.module\";\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n RegisterComponent,\r\n LoginComponent,\r\n UserAccessComponent,\r\n OnboardingCRUDComponent,\r\n EmailPasswordResetComponent,\r\n PasswordResetComponent,\r\n UserOnboardingComponent\r\n ],\r\n exports: [\r\n RecaptchaModule,\r\n LoginComponent,\r\n RegisterComponent,\r\n UserAccessComponent,\r\n UserOnboardingComponent\r\n ],\r\n imports: [\r\n FormsModule,\r\n AppRoutingModule,\r\n ShareModule,\r\n AppShareModule,\r\n AppMaterialModule,\r\n CommonModule,\r\n BrowserModule,\r\n ReactiveFormsModule,\r\n LoadingGeneralModule\r\n ],\r\n providers: [\r\n IncompleteUsersDataService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\n\r\nexport class UserAccessModule { }\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false,\r\n googleMapsApiKey : \"AIzaSyBiwhv-1-KqqULpk7clxJXlYqH9EIrCslc\"\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production)\r\n{\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","import { AppMaterialModule } from \"src/app/layouts/material/app.material.module\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { NgModule } from \"@angular/core\";\r\nimport { RouterModule } from \"@angular/router\";\r\n\r\nimport { CustomInputNumberComponent } from './components/custom-input-number/custom-input-number.component';\r\nimport { DebounceClickDirective } from \"./directives/debounce-click.directive\";\r\nimport { DialogComponent } from \"./components/dialog/dialog.component\";\r\nimport { DragAndDropComponent } from './components/drag-and-drop/drag-and-drop.component';\r\nimport { DragAndDropFilesDirective } from \"./directives/drag-and-drop-files.directive\";\r\nimport { EqualValidatorDirective } from './directives/equal-validator.directive';\r\nimport { FooterComponent } from \"./components/footer/footer.component\";\r\nimport { InnerLinksDirective } from './directives/inner-links.directive';\r\nimport { IntegerSpinnerComponent } from \"./components/integer-spinner/integer-spinner.component\";\r\nimport { LoadingComponent } from \"./components/loading/loading.component\";\r\nimport { PieceCheckboxDirective } from './directives/piece-checkbox.directive';\r\nimport { PiecesContainerComponent } from './components/pieces-container/pieces-container.component';\r\nimport { LoadingGeneralComponent } from \"./components/loading-general/loading-general.component\";\r\nimport { LoadingStaticComponent } from './components/loading-static/loading-static.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n CustomInputNumberComponent,\r\n DebounceClickDirective,\r\n DialogComponent,\r\n DragAndDropComponent,\r\n DragAndDropFilesDirective,\r\n EqualValidatorDirective,\r\n FooterComponent,\r\n InnerLinksDirective,\r\n IntegerSpinnerComponent,\r\n LoadingComponent,\r\n PieceCheckboxDirective,\r\n PiecesContainerComponent,\r\n ],\r\n imports: [\r\n AppMaterialModule,\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n RouterModule,\r\n ],\r\n exports: [\r\n CustomInputNumberComponent,\r\n DebounceClickDirective,\r\n DialogComponent,\r\n DragAndDropComponent,\r\n DragAndDropFilesDirective,\r\n EqualValidatorDirective,\r\n FooterComponent,\r\n InnerLinksDirective,\r\n IntegerSpinnerComponent,\r\n LoadingComponent,\r\n PieceCheckboxDirective,\r\n PiecesContainerComponent,\r\n ],\r\n providers: [\r\n\r\n ]\r\n})\r\nexport class AppShareModule { }\r\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-custom-input-number',\r\n templateUrl: './custom-input-number.component.html',\r\n styleUrls: ['./custom-input-number.component.css'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CustomInputNumberComponent implements OnInit\r\n{\r\n @Input() public maxValue: number = 9999;\r\n @Input() public minValue: number = 0;\r\n @Input() public disabled: boolean = false;\r\n @Output() public valueChanged = new EventEmitter();\r\n\r\n @Input() public counter: number = this.minValue;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n\r\n public increment(): void\r\n {\r\n if (this.counter === this.maxValue)\r\n return;\r\n\r\n this.counter += 1;\r\n this.emitValueChanged();\r\n }\r\n\r\n public decrement(): void\r\n {\r\n if (this.counter === this.minValue)\r\n return;\r\n\r\n this.counter -= 1;\r\n this.emitValueChanged();\r\n }\r\n\r\n public reset(): void\r\n {\r\n this.counter = this.minValue;\r\n this.emitValueChanged();\r\n }\r\n\r\n public emitValueChanged(): void\r\n {\r\n this.valueChanged.emit(this.counter);\r\n }\r\n\r\n}\r\n","\r\n \r\n \r\n \r\n\r\n","import { Component, ElementRef, EventEmitter, Input, OnChanges, Output, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-dialog',\r\n template: `
\r\n
\r\n
\r\n \r\n close\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
`,\r\n styleUrls: ['./dialog.component.css'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class DialogComponent implements OnChanges\r\n{\r\n @Input() public enableCloseDialogButton: boolean = true;\r\n @Input() public enableConfirmButton: boolean = false;\r\n @Input() public cancelButtonText: string = \"Cancelar\";\r\n @Input() public cancelButtonIcon: string = \"\";\r\n @Input() public cancelButtonClass: string = \"info-button\";\r\n @Input() public confirmButtonText: string = \"Confirmar\";\r\n @Input() public confirmButtonIcon: string = \"\";\r\n @Input() public confirmButtonClass: string = \"primary-button\";\r\n @Input() public hasCallBack: boolean = false;\r\n @Input() public callBackFunction: Function;\r\n @Input() public cancelCallBackFunction: Function;\r\n @Input() public width: string;\r\n @Input() public height: string;\r\n @Input() public top: string;\r\n\r\n @ViewChild('modal') modal: ElementRef;\r\n\r\n /*Show/Hide*/\r\n @Output() showChange = new EventEmitter();\r\n\r\n private _show: boolean = false;\r\n\r\n @Input() set show(show: boolean)\r\n {\r\n this._show = show;\r\n this.showChange.emit(this._show);\r\n }\r\n\r\n get show(): boolean\r\n {\r\n return this._show;\r\n }\r\n\r\n private _preventCloseFromBackDrop: boolean = false;\r\n @Input() set preventCloseFromBackDrop(preventCloseFromBackDrop: boolean)\r\n {\r\n this._preventCloseFromBackDrop = preventCloseFromBackDrop;\r\n }\r\n\r\n get preventCloseFromBackDrop(): boolean\r\n {\r\n return this._preventCloseFromBackDrop;\r\n }\r\n\r\n constructor(private renderer: Renderer2)\r\n {\r\n this.renderer.listen('window', 'click', (e: Event) =>\r\n {\r\n if (e.target === this.modal?.nativeElement && !this._preventCloseFromBackDrop)\r\n {\r\n this.show = false;\r\n this.showChange.emit(this._show);\r\n }\r\n });\r\n }\r\n\r\n ngOnChanges(): void\r\n {\r\n this._show = this.show;\r\n }\r\n\r\n public getStyles() : string\r\n {\r\n let styles = `max-width: ${this.width}; max-height: ${this.height};`;\r\n if(top!=undefined && top != null)\r\n {\r\n styles += `top: ${this.top}`\r\n }\r\n\r\n return styles;\r\n \r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { FileInfo, ValidImageExtensions } from 'src/app-client/_appCommon/base/AppInterfaceAndBaseClasses';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Alert, AlertType } from '../../../app/_appCommon/base/Alert';\r\nimport { Router } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'app-drag-and-drop',\r\n templateUrl: './drag-and-drop.component.html',\r\n styleUrls: ['./drag-and-drop.component.css']\r\n})\r\nexport class DragAndDropComponent implements OnInit\r\n{\r\n @ViewChild('fileInput', { static: true }) fileInput: ElementRef;\r\n @Input() textWElipsis: boolean = false;\r\n @Input() fileTitle: string;\r\n @Input() downloadFilePreview: boolean = true;\r\n @Input() isGenericFileType: boolean = false;\r\n @Input() accept: string;\r\n @Input() text: string;\r\n @Input() isRequired: boolean = false;\r\n @Input() parentForm: FormGroup;\r\n @Input() nameControl;\r\n @Input() pdfOnly: boolean = false;\r\n @Input() isReadOnly: boolean = false;\r\n @Output()\r\n public onSelectFile: EventEmitter = new EventEmitter();\r\n @Output()\r\n public onDeleteFile: EventEmitter = new EventEmitter();\r\n\r\n private file: File;\r\n\r\n public isFileSelected = false;\r\n\r\n public isLoading = true;\r\n\r\n public form: FormGroup;\r\n\r\n ngOnInit(): void { }\r\n\r\n constructor(private router: Router) { }\r\n\r\n private _fileSelected: FileInfo;\r\n\r\n @Input() set fileSelected(fileSelected: FileInfo | null)\r\n {\r\n this._fileSelected = fileSelected;\r\n if (fileSelected != null)\r\n this.parentForm.controls[this.nameControl].setValue(fileSelected.name);\r\n\r\n if (fileSelected)\r\n {\r\n if (!fileSelected.name && !fileSelected.url)\r\n {\r\n this.isFileSelected = false;\r\n this._fileSelected = null;\r\n this.fileInput.nativeElement.value = null;\r\n }\r\n }\r\n }\r\n\r\n get fileSelected(): FileInfo\r\n {\r\n return this._fileSelected;\r\n }\r\n\r\n public deleteFile()\r\n {\r\n this.isFileSelected = false;\r\n this.parentForm.controls[this.nameControl].reset();\r\n this.fileInput.nativeElement.value = null;\r\n this.onDeleteFile.emit(true);\r\n }\r\n\r\n public changeFileListener(event): void\r\n {\r\n if (event.srcElement.files[0].size > 524288000)\r\n {\r\n this.deleteFile();\r\n new Alert(AlertType.Warning, \"No se aceptan archivos mayores a 500MB\");\r\n }\r\n else if (this.pdfOnly && event.srcElement.files[0].type != \"application/pdf\")\r\n {\r\n new Alert(AlertType.Warning, \"Solo se aceptan archivos PDF\");\r\n }\r\n else\r\n {\r\n this.uploadFiles(event.srcElement.files[0]);\r\n }\r\n }\r\n\r\n public uploadFiles(file: File): void\r\n {\r\n this.fileInput.nativeElement.value = '';\r\n\r\n this.file = file;\r\n this.isFileSelected = true;\r\n this.onSelectFile.emit(this.file);\r\n }\r\n\r\n public openFileBrowser(): void\r\n {\r\n this.fileInput.nativeElement.click();\r\n }\r\n\r\n public downloadFile(): void\r\n {\r\n var url = this.fileSelected.url.toString();\r\n var s = url.split('.');\r\n var ext = '.' + s[s.length - 1];\r\n\r\n if (ValidImageExtensions.includes(ext))\r\n {\r\n url = this.router.serializeUrl(\r\n this.router.createUrlTree(['/img'], { queryParams: { path: this.fileSelected.url.toString() } })\r\n );\r\n }\r\n\r\n window.open(url, '_blank', 'noreferrer');\r\n }\r\n}\r\n","
\r\n
\r\n system_update_alt\r\n close\r\n
\r\n \r\n
\r\n save_alt\r\n

{{text}}

\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \"{{fileSelected.name}}\"\r\n \r\n
\r\n task\r\n

Archivo guardado

\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n

{{fileTitle}}{{isRequired?'*':''}}

\r\n
\r\n","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { CONTACTDATA, SITEMAPURLS } from \"src/shared/constants\";\r\n\r\n@Component({\r\n selector: 'app-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.css']\r\n})\r\n\r\nexport class FooterComponent implements OnInit\r\n{\r\n @Input() hasSitemap:boolean = false;\r\n\r\n public sitemapUrls = SITEMAPURLS;\r\n public contactData = CONTACTDATA;\r\n todayDate : Date;\r\n\r\n constructor() { \r\n this.todayDate = new Date();\r\n }\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n","
\r\n
\r\n \r\n
\r\n \r\n
\r\n \"Logo\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n

Sitemap

\r\n
\r\n {{item.name}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n

{{contactItem.content}}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n

Aliwell® {{todayDate | date:'YYYY' }}

\r\n

\r\n Avisos de privacidad\r\n

\r\n
\r\n
\r\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-integer-spinner',\r\n templateUrl: './integer-spinner.component.html',\r\n styleUrls: ['./integer-spinner.component.css']\r\n})\r\nexport class IntegerSpinnerComponent implements OnInit\r\n{\r\n public counter: number = 1;\r\n public minValue: number = 1;\r\n public maxValue: number = 9999;\r\n @Output() public valueChanged = new EventEmitter();\r\n\r\n constructor()\r\n {\r\n\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n\r\n }\r\n\r\n public plusClicked()\r\n {\r\n if (this.counter === this.maxValue)\r\n {\r\n\r\n }\r\n else\r\n {\r\n this.counter += 1;\r\n this.valueChanged.emit(this.counter);\r\n }\r\n }\r\n\r\n public minusClicked()\r\n {\r\n if (this.counter === this.minValue)\r\n {\r\n\r\n }\r\n else\r\n {\r\n this.counter -= 1;\r\n this.valueChanged.emit(this.counter);\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n
","import { Component, ElementRef, Input, ViewChild } from \"@angular/core\";\r\nimport { LoadingService } from \"src/shared/services/loading.service\";\r\n\r\n\r\n@Component({\r\n selector: 'app-loading-general',\r\n template: `\r\n
\r\n
\r\n
`,\r\n styles: [`\r\n .loading-general{\r\n width: 20vw !important; \r\n height: 20vw !important;\r\n border-width: 3vh !important;\r\n }\r\n `]\r\n})\r\nexport class LoadingGeneralComponent {\r\n loading: boolean = false;\r\n\r\n constructor(private loadingService: LoadingService) { }\r\n\r\n ngOnInit(): void {\r\n this.loadingService.isLoading$\r\n .subscribe(response => {\r\n this.loading = response;\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { LoadingGeneralComponent } from './loading-general.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [LoadingGeneralComponent],\r\n imports: [\r\n CommonModule\r\n ], exports:[LoadingGeneralComponent]\r\n})\r\nexport class LoadingGeneralModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-loading',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.css']\r\n})\r\n\r\nexport class LoadingComponent implements OnInit\r\n{\r\n @Input() size: string = \"36px\";\r\n @Input() borderWidth: string = \"4px\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n\r\n}\r\n","
\r\n","import { Component, ElementRef, Input, OnInit, Output, Renderer2, ViewChild, EventEmitter, OnChanges, SimpleChanges, ChangeDetectorRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'app-pieces-container',\r\n templateUrl: './pieces-container.component.html',\r\n styleUrls: ['./pieces-container.component.css']\r\n})\r\nexport class PiecesContainerComponent implements OnInit, OnChanges\r\n{\r\n @Input() public axesPointValueCustom:number|null = null;\r\n @Input() public numberPieces: number = 2;\r\n @Input() public axes = [1, 2, 4, 3];\r\n @Input() public axesDisabled = [];\r\n @Output() public piecesSelected: EventEmitter = new EventEmitter();\r\n\r\n @ViewChild('piecesContainer', { static: true }) public piecesContainer: ElementRef;\r\n\r\n public pieces: any = [];\r\n\r\n public numberPicesItems: number[] = [];\r\n\r\n @Input('selectedPieces') selectedPieces: string[] = [];\r\n\r\n constructor(private renderer: Renderer2, private cdr: ChangeDetectorRef) { }\r\n\r\n ngOnInit(): void\r\n {\r\n this.renderer.setStyle(this.piecesContainer.nativeElement, 'grid-template-columns', `repeat(${this.numberPieces*2}, 1fr)`);\r\n this.numberPicesItems = [...Array(this.numberPieces)].map((_, i) => i + 1);\r\n for (let index = 1; index <= this.axes.length; index++)\r\n {\r\n let tempPieces = [ ];\r\n this.numberPicesItems.forEach( item =>\r\n {\r\n tempPieces.push(\r\n {\r\n id: `axis${index}-item${item}`,\r\n value: `${this.axes[index-1]}.${this.axesPointValueCustom!=null?this.axesPointValueCustom:item}`,\r\n checked: false\r\n });\r\n });\r\n this.pieces = index % 2 == 0 ? this.pieces.concat(tempPieces) : this.pieces.concat(tempPieces.reverse());\r\n \r\n }\r\n this.selectedPieces.forEach(e => {\r\n let found = this.pieces.find(p=> p.value == e);\r\n if(found) found.checked = true;\r\n });\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes['selectedPieces']){\r\n this.pieces.forEach(e=> {\r\n e.checked=false;\r\n })\r\n if(this.pieces.length>0){\r\n changes['selectedPieces'].currentValue.forEach(e => {\r\n let found = this.pieces.find(p=> p.value == e);\r\n if(found) found.checked = true;\r\n });\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n \r\n public isDisabledAxis(value: string): boolean\r\n {\r\n return this.axesDisabled.contains(+value.split('.')[0]);\r\n }\r\n\r\n public onCheckboxChange(event: any): void\r\n {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n let input = this.pieces.find(x => x.id == event.target.id);\r\n if(input != undefined){\r\n let isInputChecked = this.pieces.find(x => x.id == event.target.id).checked;\r\n this.pieces.find(x => x.id == event.target.id).checked = !isInputChecked;\r\n this.piecesSelected.emit(this.result);\r\n }\r\n }\r\n\r\n public get result(): string[]\r\n {\r\n return this.pieces.filter(x => x.checked == true).map((x) => x.value);\r\n }\r\n}\r\n","
\r\n
\r\n {{item.value}}\r\n \r\n
\r\n
\r\n","export const SITEMAPURLS = [\r\n {name: 'Inicio', url: ''},\r\n {name: 'Encuentra un Ortodoncista', url: 'encuentra-ortodoncista'},\r\n {name: 'Soy Ortodoncista', url: 'soy-ortodoncista'},\r\n {name: 'FAQ', url: 'faq'}\r\n];\r\n\r\nexport const CONTACTDATA = [\r\n {content: \"Av. Vasconcelos 124 Col. Tampiquito, San Pedro Garza Garcia, Mexico.\", iconClass: \"fa fa-map-marker\"},\r\n {content: \"(81) 8683 - 4840\", iconClass: \"fa fa-phone\"},\r\n {content: \"(81) 8683 - 4840\", iconClass: \"fa fa-whatsapp\"},\r\n {content: \"hola@aliwell.mx\", iconClass: \"fa fa-envelope\"},\r\n];\r\n","import { Directive, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output} from '@angular/core';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[appDebounceClick]'\r\n})\r\nexport class DebounceClickDirective implements OnInit, OnDestroy\r\n{\r\n @Input()\r\n debounceTime = 500;\r\n\r\n @Output()\r\n debounceClick = new EventEmitter();\r\n\r\n private clicks = new Subject();\r\n private subscription: Subscription;\r\n\r\n constructor() { }\r\n\r\n ngOnInit()\r\n {\r\n this.subscription = this.clicks.pipe(\r\n debounceTime(this.debounceTime)\r\n ).subscribe(e => this.debounceClick.emit(e));\r\n }\r\n\r\n ngOnDestroy()\r\n {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n clickEvent(event)\r\n {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.clicks.next(event);\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, OnInit, EventEmitter, HostBinding, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appDragAndDrop2]'\r\n})\r\nexport class DragAndDropFilesDirective implements OnInit\r\n{\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() filesDropped = new EventEmitter();\r\n\r\n @HostListener('dragover', ['$event'])\r\n public onHandleDragOver(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n const p = this.elementRef.nativeElement.querySelector('p');\r\n p.innerText=\"Suelta para subir los archivos\";\r\n }\r\n\r\n @HostListener('dragleave', ['$event'])\r\n public onHandleDragLeave(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n const p = this.elementRef.nativeElement.querySelector('p');\r\n p.innerText=\"Inserta tu imagen aquí\";\r\n }\r\n\r\n @HostListener('drop', ['$event'])\r\n public onHandleDrop(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n const p = this.elementRef.nativeElement.querySelector('p');\r\n p.innerText=\"Inserta tu imagen aquí\";\r\n const files = evt.dataTransfer.files;\r\n if (files.length > 1)\r\n this.filesDropped.emit(files);\r\n else if(files.length == 1)\r\n this.filesDropped.emit(files[0]);\r\n }\r\n\r\n\r\n\r\n ngOnInit(): void { }\r\n\r\n constructor(private elementRef: ElementRef) { }\r\n}\r\n","import { Directive, forwardRef, Attribute } from '@angular/core';\r\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => EqualValidatorDirective), multi: true }\r\n ]\r\n})\r\nexport class EqualValidatorDirective implements Validator\r\n{\r\n constructor(@Attribute('validateEqual') public validateEqual: string,\r\n @Attribute('reverse') public reverse: string) { }\r\n\r\n private get isReverse()\r\n {\r\n if (!this.reverse) return false;\r\n return this.reverse === 'true' ? true : false;\r\n }\r\n\r\n public validate(c: AbstractControl): { [key: string]: any }\r\n {\r\n // self value (e.g. retype password)\r\n let v = c.value;\r\n\r\n // control value\r\n let e = c.root.get(this.validateEqual);\r\n\r\n // value not equal\r\n if (e && v !== e.value && !this.isReverse)\r\n {\r\n return {\r\n validateEqual: false\r\n };\r\n }\r\n\r\n // value equal and reverse\r\n if (e && v === e.value && this.isReverse)\r\n {\r\n delete e.errors['validateEqual'];\r\n if (!Object.keys(e.errors).length) e.setErrors(null);\r\n }\r\n\r\n // value not equal and reverse\r\n if (e && v !== e.value && this.isReverse)\r\n {\r\n e.setErrors({ validateEqual: false });\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n","import { Directive, HostListener } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Directive({\r\n selector: \"[innerLinks]\"\r\n})\r\nexport class InnerLinksDirective\r\n{\r\n constructor(private router: Router) {}\r\n\r\n @HostListener(\"click\", [\"$event\"])\r\n handle(event: MouseEvent)\r\n {\r\n const target = event.target as HTMLElement;\r\n if (target.nodeName === \"A\")\r\n {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n const href = target.getAttribute(\"href\");\r\n this.router.navigateByUrl(href);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, OnInit, HostBinding, Renderer2, Input, OnChanges, SimpleChanges } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[pieceCheckbox]'\r\n})\r\nexport class PieceCheckboxDirective implements OnInit, OnChanges\r\n{\r\n @Input() active :boolean;\r\n\r\n public input;\r\n\r\n @HostListener('click', ['$event'])\r\n public onHandleDragOver(evt): void\r\n {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.active = !this.active;\r\n this.input.click();\r\n }\r\n\r\n ngOnInit(): void\r\n {\r\n this.input = this.elementRef.nativeElement.children.item(0);\r\n this.input.checked = this.active;\r\n }\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\r\n\r\n ngOnChanges(changes: SimpleChanges){\r\n this.input = this.elementRef.nativeElement.children.item(0);\r\n this.input.checked = this.active;\r\n }\r\n \r\n}\r\n","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { LoadingService } from \"../services/loading.service\";\r\nimport { Observable, throwError as observableThrowError, throwError } from 'rxjs';\r\nimport { finalize } from \"rxjs/operators\";\r\n\r\n@Injectable()\r\nexport class LoadingInterceptor implements HttpInterceptor {\r\n \r\n private requests: HttpRequest[] = [];\r\n\r\n constructor(private loadingService: LoadingService) { }\r\n\r\n public removeRequest(req: HttpRequest) {\r\n const index = this.requests.indexOf(req);\r\n if (index >= 0) {\r\n this.requests.splice(index, 1);\r\n }\r\n this.loadingService.isLoading$.next(this.requests.length > 0)\r\n }\r\n\r\n public intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n\r\n this.requests.push(request);\r\n this.loadingService.isLoading$.next(true);\r\n\r\n return new Observable(observer => {\r\n const subscription = next.handle(request).subscribe(event => {\r\n if (event instanceof HttpResponse) {\r\n this.removeRequest(request);\r\n observer.next(event);\r\n }\r\n }, err => {\r\n this.removeRequest(request);\r\n observer.error(err);\r\n })\r\n });\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({providedIn : 'root'})\r\nexport class LoadingService {\r\n isLoading$ = new Subject();\r\n\r\n show(): void\r\n {\r\n this.isLoading$.next(true);\r\n }\r\n\r\n hide(): void\r\n {\r\n this.isLoading$.next(false);\r\n }\r\n}\r\n"],"names":[],"sourceRoot":"webpack:///"}