{"version":3,"sources":["webpack:///$_lazy_route_resource lazy namespace object","webpack:///node_modules/@ionic/core/dist/esm lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","webpack:///src/app/app.component.html","webpack:///src/app/pages/cart-new/cart-new.page.html","webpack:///src/app/pages/cart-new/user-information/user-information.page.html","webpack:///src/app/pages/dialog-scanner-page/dialog-scanner-page.component.html","webpack:///src/app/pages/home/home.page.html","webpack:///src/app/pages/home/orders/orders.page.html","webpack:///src/app/pages/item/item.page.html","webpack:///src/app/pages/login/login.page.html","webpack:///src/app/pages/qrcode-scanner/qrcode-scanner.page.html","webpack:///src/app/shared/components/check-details/check-details.component.html","webpack:///src/app/shared/components/set-details/set-details.component.html","webpack:///src/app/shared/components/v2/add-address/add-address.page.html","webpack:///src/app/shared/components/v2/camera-page/camera-page.component.html","webpack:///src/app/shared/components/v2/input-datetime/input-datetime.component.html","webpack:///src/app/shared/components/v2/picture-viewer/picture-viewer.component.html","webpack:///src/app/shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page.html","webpack:///src/app/shared/components/v2/v2-item/v2-item.page.html","webpack:///src/app/shared/components/v2/v2-top-bar/v2-top-bar.component.html","webpack:///src/app/v2/finishing-pages/comanda-scan/comanda-scan.page.html","webpack:///src/app/v2/finishing-pages/table-page/table-page.page.html","webpack:///src/app/v2/finishing-pages/user-info-drive/user-info-drive.page.html","webpack:///src/app/v2/finishing-pages/user-info-request-card/user-info-request-card.page.html","webpack:///src/app/v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page.html","webpack:///src/app/v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page.html","webpack:///src/app/v2/finishing-pages/user-info-request-zap/user-info-request-zap.page.html","webpack:///src/app/app-routing.module.ts","webpack:///src/app/app.component.scss","webpack:///src/app/app.component.ts","webpack:///src/app/app.module.ts","webpack:///src/app/interfaces/itemCart.interface.ts","webpack:///src/app/interfaces/product-option.interface.ts","webpack:///src/app/models/address/localizacao.model.ts","webpack:///src/app/models/base-class.model.ts","webpack:///src/app/models/cart/cart.model.ts","webpack:///src/app/models/payment/card.model.ts","webpack:///src/app/models/payment/consumo.model.ts","webpack:///src/app/models/user.model.ts","webpack:///src/app/models/zimmerStorage.model.ts","webpack:///src/app/pages/cart-new/cart-new-routing.module.ts","webpack:///src/app/pages/cart-new/cart-new.module.ts","webpack:///src/app/pages/cart-new/cart-new.page.scss","webpack:///src/app/pages/cart-new/cart-new.page.ts","webpack:///src/app/pages/cart-new/user-information/user-information-routing.module.ts","webpack:///src/app/pages/cart-new/user-information/user-information.module.ts","webpack:///src/app/pages/cart-new/user-information/user-information.page.scss","webpack:///src/app/pages/cart-new/user-information/user-information.page.ts","webpack:///src/app/pages/dialog-scanner-page/dialog-scanner-page.component.scss","webpack:///src/app/pages/dialog-scanner-page/dialog-scanner-page.component.ts","webpack:///src/app/pages/home/home-routing.module.ts","webpack:///src/app/pages/home/home.module.ts","webpack:///src/app/pages/home/home.page.scss","webpack:///src/app/pages/home/home.page.ts","webpack:///src/app/pages/home/orders/orders.page.scss","webpack:///src/app/pages/home/orders/orders.page.ts","webpack:///src/app/pages/item/item.page.scss","webpack:///src/app/pages/item/item.page.ts","webpack:///src/app/pages/login/login-routing.module.ts","webpack:///src/app/pages/login/login.module.ts","webpack:///src/app/pages/login/login.page.scss","webpack:///src/app/pages/login/login.page.ts","webpack:///src/app/pages/qrcode-scanner/qrcode-scanner-routing.module.ts","webpack:///src/app/pages/qrcode-scanner/qrcode-scanner.module.ts","webpack:///src/app/pages/qrcode-scanner/qrcode-scanner.page.scss","webpack:///src/app/pages/qrcode-scanner/qrcode-scanner.page.ts","webpack:///src/app/services/camera.service.ts","webpack:///src/app/services/cart.service.ts","webpack:///src/app/services/category.service.ts","webpack:///src/app/services/configuration.service.ts","webpack:///src/app/services/html5qrcodescanner.service.ts","webpack:///src/app/services/order.service.ts","webpack:///src/app/services/payment.service.ts","webpack:///src/app/services/product.service.ts","webpack:///src/app/services/providers/address.service.ts","webpack:///src/app/services/providers/gallery.service.ts","webpack:///src/app/services/providers/mask.service.ts","webpack:///src/app/services/qrcode.service.ts","webpack:///src/app/services/restaurant.service.ts","webpack:///src/app/services/storage.service.ts","webpack:///src/app/services/toastadd.service.ts","webpack:///src/app/services/user.service.ts","webpack:///src/app/services/usergestor.service.ts","webpack:///src/app/services/wallet.service.ts","webpack:///src/app/shared/auth.service.ts","webpack:///src/app/shared/base.service.ts","webpack:///src/app/shared/components/check-details/check-details.component.scss","webpack:///src/app/shared/components/check-details/check-details.component.ts","webpack:///src/app/shared/components/check-details/check-details.module.ts","webpack:///src/app/shared/components/set-details/set-details.component.scss","webpack:///src/app/shared/components/set-details/set-details.component.ts","webpack:///src/app/shared/components/set-details/set-details.module.ts","webpack:///src/app/shared/components/v2/add-address/add-address.page.scss","webpack:///src/app/shared/components/v2/add-address/add-address.page.ts","webpack:///src/app/shared/components/v2/camera-page/camera-page.component.scss","webpack:///src/app/shared/components/v2/camera-page/camera-page.component.ts","webpack:///src/app/shared/components/v2/input-datetime/input-datetime.component.scss","webpack:///src/app/shared/components/v2/input-datetime/input-datetime.component.ts","webpack:///src/app/shared/components/v2/picture-viewer/picture-viewer.component.scss","webpack:///src/app/shared/components/v2/picture-viewer/picture-viewer.component.ts","webpack:///src/app/shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page.scss","webpack:///src/app/shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page.ts","webpack:///src/app/shared/components/v2/v2-item/v2-item.page.scss","webpack:///src/app/shared/components/v2/v2-item/v2-item.page.ts","webpack:///src/app/shared/components/v2/v2-top-bar/v2-top-bar.component.scss","webpack:///src/app/shared/components/v2/v2-top-bar/v2-top-bar.component.ts","webpack:///src/app/shared/guards/operation.guard.ts","webpack:///src/app/shared/guards/scanner.guard.ts","webpack:///src/app/shared/interceptor/lower-case-url-serializer.interceptor.ts","webpack:///src/app/shared/util.ts","webpack:///src/app/shared/whats-msg.service.ts","webpack:///src/app/v2/finishing-pages/comanda-scan/comanda-scan.page.scss","webpack:///src/app/v2/finishing-pages/comanda-scan/comanda-scan.page.ts","webpack:///src/app/v2/finishing-pages/table-page/table-page.page.scss","webpack:///src/app/v2/finishing-pages/table-page/table-page.page.ts","webpack:///src/app/v2/finishing-pages/user-info-drive/user-info-drive.page.scss","webpack:///src/app/v2/finishing-pages/user-info-drive/user-info-drive.page.ts","webpack:///src/app/v2/finishing-pages/user-info-request-card/user-info-request-card.page.scss","webpack:///src/app/v2/finishing-pages/user-info-request-card/user-info-request-card.page.ts","webpack:///src/app/v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page.scss","webpack:///src/app/v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page.ts","webpack:///src/app/v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page.scss","webpack:///src/app/v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page.ts","webpack:///src/app/v2/finishing-pages/user-info-request-zap/user-info-request-zap.page.scss","webpack:///src/app/v2/finishing-pages/user-info-request-zap/user-info-request-zap.page.ts","webpack:///src/environments/environment.ts","webpack:///src/main.ts"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","map","webpackAsyncContext","__webpack_require__","o","ids","all","slice","webpackAsyncContextKeys","Object","routes","path","pathMatch","redirectTo","loadChildren","m","HomePageModule","canActivate","routePaths","scanner","ScannerPageModule","ClosedPageModule","V2Module","SorryPageModule","GalleryPageModule","BreedPageModule","AppComponent","alertCtrl","auth","cartService","modalController","platform","restaurantService","route","router","splashScreen","statusBar","storage","userService","utils","wallet","isMouseHover","selectedIndex","title","baseUrl","BASE_URL","appPages","appPagesOthers","url","icon","iconLarge","size","notification","getOrders","length","condition","getRestaurant","get","verificaUrl","initializeApp","oldHref","document","location","href","split","newHref","setInterval","method","evento","facePixelID","sessionStorage","getItem","getElementById","innerHTML","clearInterval","ready","styleDefault","hide","logout","navigate","cnpj","create","component","modal","present","backdropDismiss","getElementsByClassName","display","setTimeout","filter","page","type","scanQr","result","results","text","table","changeTable","Number","tableNumber","getTable","setTable","getUser","getUserRestaurant","zimmer","mode","appModes","prepare","navigateToCategories","error","header","message","JSON","stringify","alert","selector","template","window","AppModule","declarations","entryComponents","imports","forRoot","providers","provide","useClass","useValue","bootstrap","ItemCart","values","cartItemOpcoes","meiomeios","forEach","key","item","total","option","valor","quantidade","produto","numberMeiomeio","valorVenda","mostExpensive","reduce","lastHalf","half","valorPromocao","valorVendaComplemento","preco","valorRegular","number","toFixed","ProductOptionType","ProductOption","Localizacao","address","errors","cep","replace","push","bairro","logradouro","localidade","numero","isValid","subLocality","postalCode","subAdministrativeArea","thoroughfare","uf","find","administrativeArea","AC","AL","AM","AP","BA","CE","DF","ES","GO","MA","MG","MS","MT","PA","PB","PE","PI","PR","RJ","RN","RO","RR","RS","SC","SE","SP","TO","BaseModel","value","Cart","items","discount","Card","cardConsumo","User","ZimmerStorage","preferences","CartNewPageRoutingModule","forChild","CartNewPageModule","CartNewPage","alertController","orderService","qrCodeScanner","readOnly","orders$","comandaId$","getComandaId","getAllItems","order","pedidoItens","pedidoItemOpcoes","nome","produtosOpcaoId","pedidoItemOpcaoId","produtosOpcaoTipoId","tipo","pedidoMeioMeios","observacao","produtoId","dismiss","modals","cartNewId","componentProps","itemCart","openCartFn","closeCart","cssClass","removeItem","appMode","zap","onDidDismiss","data","success","doOrder","onlinePayment","comanda","inputs","table_number_input_id","buttons","handler","confirmTableAndSendOrder","tableInput","confirm","subScan","scan","useNativePlugin","validation","subscribe","next","comandaId","complete","unsubscribe","clear","setStateLoading","sendOrder","r","err","mesage","UserInformationPageRoutingModule","UserInformationPageModule","UserInformationPage","cart","modalCtrl","endereco","label","minLength","inputId","mask","options","aquisition","trocoPara","slide","paymentMethod","getSessionData","addressFormIsOpen","inputValue","setFocus","trocoFormatted","getTotalValue","showToast","entries","index","field","cpfIsValid","cpf","showAlert","setSessionData","submitting","userZimmer","aceitaMarketing","marketing","cidade","email","estado","fone","userName","restauranteId","response","card","dateExp","expiration","cvv","cardCvv","num","cardNumber","titular","monthExp","yExp","yearExp","extraData","doOrderWithOnlinePayment","save","pedido","undefined","phone","foneCelular","pagamento","payment","troco","userFone","observation","sendOrderWhats","trim","nameValue","askCep","localizacao","minLengthIsValid","DialogScannerPageComponent","openQrCodePage","OrderDetailsPageModule","OrdersPageModule","ProductDetailPageModule","TablePageModule","CategoryNewPageModule","routeParams","prodCardStyle","phoneNumber","HomePageRoutingModule","HomePage","appComponent","config","categoryService","productService","qrcodeScanner","web","is","params","pipe","getByCnpj","rest","setRestaurant","restaurant","loadCategories","categories","setCategories","load","console","log","configs","getConfig","side","substr","includes","parameters","cardStyle","jsonConfigs","parse","categoryProdCardStyle","showCart","getAll","v","category","categoria","produtos","OrdersPage","ordersService","loadOrders","date","dateObj","Date","getHours","getMinutes","pedidoId","ItemPage","options$","getOptions","prod","meios$","getHalfs","obs","product","animate","sub_options","qtd","getQtdSelected","obrigatorio","qtdeMax","setItem","editItem","closeItemDetails","color","selectedOption","optionType","productOptionIndex","findIndex","oldOption","firstOptionFromType","indexToRemove","h","halfId","operation","optionId","optionTypeId","i","optionsIndex","event","stopPropagation","optionIndex","op","LoginPageRoutingModule","LoginPageModule","LoginPage","asRestaurant","isLogin","fb","buildForm","form","group","sobrenome","senha","lin","login","password","QrcodeScannerPageRoutingModule","QrcodeScannerPageModule","QrcodeScannerPage","asModal","backDevices","frontDevices","checkedDevices","qrcodeScannerElementId","html5qrcode","qrcodeScanElement","status$","currentImg","currentLabel","currentNavigation","getCurrentNavigation","urlSegments","extractedUrl","root","children","primary","segments","getCamera","Html5Qrcode","getCameras","devices","device","toLowerCase","camera","stop","getDevice","start","facingMode","fps","scanned","notScanned","bkDevice","ftDevice","backDeviceNotChecked","dvc","frontDeviceNotChecked","str","USER_GUID","modalId","qrcodeConfigValidationLink","navigateByUrl","ngAfterViewInit","CameraService","subscriber","providedIn","CartService","http","paymentService","whatsMsgBuilder","alerta","orders","ficha$","ficha","itemExists","itemId","prodId","Math","floor","ceil","totalItems","totalValue","calcTotalItemValue","entrega","success$","isOpen","orderObj","adress","cartTotal","discount_total","shipping_total","subtotal","taxTotal","frete","total_tax","cartItens","maxHalf","prev","current","cartMeioMeios","souvinir","valorentrega","valorprodutos","valortotal","usuarioGuid","isEntrega","restaurante","isPagamentoOnline","nsu","referencia","paymentNsu","orderType","formaPagamento","toLocaleString","style","currency","userDados","complemento","pedidoURL","post","SERVERHOST","res","getPhoneDataGestor","dadosUsuario","userID","totenId","unshift","setComandaId","asObservable","userData","msg","buildMsg","restaurantName","pedidoTotal","fonecomercial","open","extra","user","cartao","payment$","pay","getRest","getTableV2","getV2","v2","prepareOrderObj","makeOrder","askZapInformation","gestor","askGestorInformation","consumo","askPaymentInformationConsumo","paymentResult","makePayment","makeConsumo","askPaymentInformation","askComanda","askTableNumber1","forkData","drive","askDriveThruInfo","driveInfo","licensePlate","menu","restId","rest$","numeroCartao","saldo","tipoMov","payConsumo","aproved","mensage","extras","role","comandaScannerId","animated","tableNumberInput","userId","fichaNumber","CategoryService","cats","c","categoriaId","ConfigurationService","restService","modoApp","isNroTable","isTablet","isSmall","isConsumo","configs$","getMany","saveV2","reference","jsonConfig","storageQuerys","deleteV2","storageKey","saveQuerys","init","breed","Html5qrcodescannerService","orderStatus","ARRIVED_AT_ORIGIN","CANCELLATION_REQUESTED","CANCELLED","CLOSED_TABLE","COMANDAID_NOT_FOUND","CONCLUDED","CONFIRMED","DISPATCHED","DELIVERED","ERROR_OPMESA1","ERROR_OPMESA2","GOING_TO_ORIGIN","INTEGRATED","INVISIBLE","ITEM_NOT_INSERTED","PLACED","PRODUCT_NOT_FOUND","READYTODELIVER","TOTENID_NOT_FOUND","UNKNOWN_ERROR","WAITING_PAYMENT","labels","OrderService","initOrdersStates","restToken","production","intervalLoadOrders","getOpenOrdersByComandaId","mesaId","PaymentService","PagSeguroDirectPayment","setSessionId","subject","getBrand","cardBin","cardBrand","brand","name","dateExpiration","getCardToken","createCardToken","expirationMonth","expirationYear","token","cardNro","ProductService","productId","deepLevel","headers","rota","catId","quantity","lastProdName","AddressService","geolocation","nativeGeocoder","_context","address$","userAddress","_address","saveAddress$","sub_set","getAddressFromCoodinates","add","newAddress","getCurrentPosition","position","coordinates$","forwardGeocode","maxResults","useLocale","geocoderResult","reverseGeocode","coords","latitude","longitude","assignLocation","sub","searchLocation","GalleryService","images","img64","gallery","picture","pic","refreshImages","MaskService","customMasks","cepGestor","phoneGestor13","phoneGestor14","cardExpDate","regexArr","Array","RegExp","maskName","invalidIndex","test","QrcodeService","barcodeScanner","html5qrcodeScanner","disableSuccessBeep","preferFrontCamera","showFlipCameraButton","showTorchButton","formats","disableAnimations","scanOptions","RestaurantService","restaurant$","handleError","senhaMaster","toastController","duration","toast","put","themecolor","theme","updateRestaurant","isOperation","rate","StorageService","zimmerObj","set","storageSearchsObj","remove","valueToPush","arr","filterCondition","ToastaddService","toastCtrl","alertContrl","texto","msg2","UserService","httpOptions","Accept","UsergestorService","user$","getValue","restauranteid","userid","WalletService","favoriteMethod","cards","cardId","methodId","AuthService","passwordAttempts","tableNumber$","as","authenticated","usuario","accessToken","userRestaurant","localStorage","userFavs","userFavorites","newUserFavorites","fav","placeholder","min","blockTableChange","checkTablePassword","tablePassword","authorization","reportProgress","observe","responseType","BaseService","classPath","toastErrorActive","model","msgAux","suport","statusCode","keyboardClose","t","CheckDetailsComponent","tableNum","tab","incomplete","CheckDetailsModule","SetDetailsComponent","waiterPassword","successCount","RES_CNPJ","tableId","pwd","toString","SetDetailsModule","AddAddressPage","addressService","formBuilder","subs","required","patchValue","showAllInfo","valueChanges","L","setView","jawg_streets","tileLayer","addTo","attributionControl","addAttribution","addAddressModalId","locating","locateUser","delayToSearchPosition","clearTimeout","sub_address","getCoordinatesFromAddress","addressResult","marker","removeFrom","validCep","getAddressFromCep","CameraPreview","CameraPageComponent","parent","className","height","documentElement","clientHeight","width","clientWidth","cameraActive","cameraPreviewPictureOptions","quality","capture","image","flip","ngOnInit","InputDatetimeComponent","dateNow","cancelText","dayNames","dayShortNames","disabled","displayFormat","doneText","getFullYear","max","monthNames","monthShortNames","readonly","dayNamesBr","dayShortNamesBr","monthNamesBr","monthShortNamesBr","PictureViewerComponent","V2ItemComplementosmeiomeioPage","complementsSubTotal","buttonAvailability","getProductsHalfComplements","complements","processButtonAvailability","subTotal","halfIndex","complementos","complementId","CartComplementosMeioMeios","Quantidade","splice","ComplementosMeioMeiosArr","reverse","getHalfsComplementsQuantity","itemIndex","itemComplementIndex","i2","produtoDesc","produtoPdv","opt","meioMeio","produtoGuid","complement","k","produtoOpcaos","toggleOption","closeItemDetailsMeioMeio","img","V2ItemPage","topbar","optionsMeioMeio$","produtoOpcoes","prodHalfEnab","appMode$","getMode","tokenRestaurante","replay","toCallOrder","Descricao","halfSubtotal","complementsValue","callOrder","hideFooterTimeout","V2TopBarComponent","cameraService","toastAdd","userGestorController","getFichaV2","version","back","ionMenu","getTotalItems","displayToastAdd","userGestor","LABEL","takePicture","include","restPwdInput","home","OperationGuard","state","promiseRest","toPromise","createUrlTree","closed","sorry","ScannerGuard","LowerCaseUrlSerializer","Utils","barcodeScn","loadingCtrl","convert","valNtpbr","lengthAfterComma","indexOf","valsa","join","valCn","chunkSubstr","valCnh","valNtc","valExpDate","valCvv","valueNtcj","valueOn","valuePn","numChunks","chunks","animateName","element","getBy","timer","elements","price","subHeader","subheader","a","translucent","spinner","cpfValue","cpfNumbersString","cpfNumbers","x","y","b","d","f","g","somaX","rX","x2","y2","a2","b2","c2","d2","e2","f2","g2","h2","somaY","rY","xCorreto","yCorreto","cpfCorreto","correction","rect","getBoundingClientRect","top","left","bottom","innerHeight","right","innerWidth","toUpperCase","WhatsMsgService","getDate","getMonth","halfStr","optStr","numberToPriceBr","calcTotalValue","numberToCep","ComandaScanPage","qrScanner","isNroMesa","logoZimmer","restImagem","imagemRest","imagem","alertaMsg","cancelAction","testMonitorID","monitor","verificaComanda","testCardID","parseInt","ativo","aberto","TablePagePage","inputNro","inputNumber","characterCode","which","keyCode","UserInfoDrivePage","formattedData","cardNumberField","cvvField","dateExpField","cpfField","clearValidators","setValidators","updateValueAndValidity","confirmData","UserInfoRequestCardPage","appmode","UserInfoRequestConsumoPage","consumoField","restid","nroCard","totalCart","saldoCartao$","getSaldoConsumo","cardCliente","cartaoid","cartaoConsumoId","nro","saldoAtual","UserInfoRequestGestorPage","isDisabled","confirmado","totalFinal","totalFrete","bFrete","btn_mensagem","fechado","retirada","tempoEntrega","tempoRetira","cartProds","getCart","controls","setValue","userPhone","change","checked","valorFinal","aquisitionMethod","sendOrderGestor","pedidoMinimo","confirmInfo","getByToken","valorEntrega","isNaN","status","abreAs","toLocaleTimeString","getAddressDataUsingCEP","freteCalcv","getPhoneData","UserInfoRequestZapPage","environment","configAppId","cnpjRest","bootstrapModule"],"mappings":"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","file":"main-es5.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","var map = {\n\t\"./ion-action-sheet.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-action-sheet.entry.js\",\n\t\t\"common\",\n\t\t0\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-alert.entry.js\",\n\t\t\"common\",\n\t\t1\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-app_8.entry.js\",\n\t\t\"common\",\n\t\t2\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-avatar_3.entry.js\",\n\t\t\"common\",\n\t\t3\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-back-button.entry.js\",\n\t\t\"common\",\n\t\t4\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-backdrop.entry.js\",\n\t\t5\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-button_2.entry.js\",\n\t\t\"common\",\n\t\t6\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-card_5.entry.js\",\n\t\t\"common\",\n\t\t7\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-checkbox.entry.js\",\n\t\t\"common\",\n\t\t8\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-chip.entry.js\",\n\t\t\"common\",\n\t\t9\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-col_3.entry.js\",\n\t\t10\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-datetime_3.entry.js\",\n\t\t\"common\",\n\t\t11\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-fab_3.entry.js\",\n\t\t\"common\",\n\t\t12\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-img.entry.js\",\n\t\t13\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-infinite-scroll_2.entry.js\",\n\t\t14\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-input.entry.js\",\n\t\t\"common\",\n\t\t15\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-item-option_3.entry.js\",\n\t\t\"common\",\n\t\t16\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-item_8.entry.js\",\n\t\t\"common\",\n\t\t17\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-loading.entry.js\",\n\t\t\"common\",\n\t\t18\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-menu_3.entry.js\",\n\t\t\"common\",\n\t\t19\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-modal.entry.js\",\n\t\t\"common\",\n\t\t20\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-nav_2.entry.js\",\n\t\t\"common\",\n\t\t21\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-popover.entry.js\",\n\t\t\"common\",\n\t\t22\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-progress-bar.entry.js\",\n\t\t\"common\",\n\t\t23\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-radio_2.entry.js\",\n\t\t\"common\",\n\t\t24\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-range.entry.js\",\n\t\t\"common\",\n\t\t25\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-refresher_2.entry.js\",\n\t\t\"common\",\n\t\t26\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-reorder_2.entry.js\",\n\t\t\"common\",\n\t\t27\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-ripple-effect.entry.js\",\n\t\t28\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-route_4.entry.js\",\n\t\t\"common\",\n\t\t29\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-searchbar.entry.js\",\n\t\t\"common\",\n\t\t30\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-segment_2.entry.js\",\n\t\t\"common\",\n\t\t31\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-select_3.entry.js\",\n\t\t\"common\",\n\t\t32\n\t],\n\t\"./ion-slide_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-slide_2.entry.js\",\n\t\t33\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-spinner.entry.js\",\n\t\t\"common\",\n\t\t34\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-split-pane.entry.js\",\n\t\t35\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-tab-bar_2.entry.js\",\n\t\t\"common\",\n\t\t36\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-tab_2.entry.js\",\n\t\t\"common\",\n\t\t37\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-text.entry.js\",\n\t\t\"common\",\n\t\t38\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-textarea.entry.js\",\n\t\t\"common\",\n\t\t39\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-toast.entry.js\",\n\t\t\"common\",\n\t\t40\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-toggle.entry.js\",\n\t\t\"common\",\n\t\t41\n\t],\n\t\"./ion-virtual-scroll.entry.js\": [\n\t\t\"./node_modules/@ionic/core/dist/esm/ion-virtual-scroll.entry.js\",\n\t\t42\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = \"./node_modules/@ionic/core/dist/esm lazy recursive ^\\\\.\\\\/.*\\\\.entry\\\\.js$ include: \\\\.entry\\\\.js$ exclude: \\\\.system\\\\.entry\\\\.js$\";\nmodule.exports = webpackAsyncContext;","export default \"\\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 {{ p.descricao }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n Confira seu Pedido\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Pedidos realizados\\r\\n \\r\\n \\r\\n\\r\\n 0 || readOnly\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ item.produto.nome }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ item.number }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n 1/{{ item.produto.numberMeiomeio }} {{ half.nome || half.descricao }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ option.nome }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ option.quantidade }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Obs: {{ item.observacao }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Remover\\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 Vazio\\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 {{ cartService.getMode() == 'pedido' ? 'Continuar' : 'Confirmar' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n R$ {{ utils.convert(cartService.getTotalValue(), 'numberToPriceBr') }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\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 {{ slide == 0 ? 'Para confirmar o seu pedido preciso de algumas informações' : 'Confira seus dados abaixo e clique em confirmar se estiver tudo certo' }}\\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 Deseja receber promoções?\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Crédito\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Débito ou Dinheiro\\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 Retirada\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Entrega\\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 Não sei meu cep\\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 Pagamento\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Dinheiro\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Cartão\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Troco para\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Não preciso\\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 {{ field.label }}: {{ data[field.key] }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Nome: {{ data.userName }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Fone: {{ data.fone }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Nome: {{ data.userName }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email: {{ data.email }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Nome: {{ data.userName }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Endereço: {{ data.endereco.logradouro + ', ' + data.endereco.numero + ' - ' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Bairro: {{ data.endereco.bairro }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Cidade: {{ data.endereco.localidade + ' - ' + data.endereco.uf }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Complemento: {{ data.endereco.complemento }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Enviar pedido para: {{ utils.convert(restaurantService.getRestaurant().foneCelular, 'phoneNumber') }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Valor\\r\\n \\r\\n \\r\\n R$ {{ utils.convert(cart.getTotalValue(), 'numberToPriceBr') }}\\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 Prosseguir\\r\\n \\r\\n \\r\\n Confirmar\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Agora...\\r\\n \\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Aponte sua câmera para o QR Code da sua COMANDA de entrada\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Ler QR Code\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n ZIMMER\\r\\n \\r\\n \\r\\n 0\\\" style=\\\"font-size: 12px; background-color: yellow; color: black;\\\">{{cart.getTotalItems()}}\\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 {{ message }}\\r\\n \\r\\n
\\r\\n
\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Meus Pedidos\\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 Pedidos em andamento\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ getDateFromOrder(order.dataHora) }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n R$ {{ utils.convert(order.total, 'numberToPriceBr') }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\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 {{ item?.produto?.nome.toUpperCase() || '...' }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n R$ {{ utils.convert(cart.calcTotalItemValue(item), 'numberToPriceBr') }}\\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 0\\\" style=\\\"border-radius: 5px; background-color: var(--ion-color-light); margin-bottom: .7em;\\\">\\r\\n \\r\\n \\r\\n {{ item.produto.descricao }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n 1\\\">\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Meio a meio\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Obrigatório {{ getHalfsQuantity() }} / {{ item.produto.numberMeiomeio }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n 0 ? 'success' : 'light'\\\"\\r\\n >\\r\\n \\r\\n \\r\\n {{ item.meiomeios.includes(half) ? getHalfQuantityInItem(half) + '/' + item.produto.numberMeiomeio : '' }} {{ half.nome }}\\r\\n \\r\\n\\r\\n \\r\\n \\r\\n {{ half.valorVenda ? 'R$ ' + utils.numberToPriceBr(half.valorPromocao || half.valorVenda) : '' }}\\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 {{ getHalfsQuantity(half.produtoId) }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n = item.produto.numberMeiomeio || getHalfsQuantity(half.produtoId) >= (item.produto.numberMeiomeio - 1)\\\">\\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 0\\\" class=\\\"option-list\\\">\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ utils.firstCharUpperOnly(optionType.nome) }} \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ (optionType.obrigatorio ? 'Obrigatório ' : '') + getQtdSelected(optionType.produtosOpcaoTipoId) + ' / ' + optionType.qtdeMax }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ option.nome }}\\r\\n \\r\\n \\r\\n R$ {{ utils.convert(option.valor, 'numberToPriceBr') }}\\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 {{ getOptionQtd(option.produtosOpcaoId) }}\\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 Observação\\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 {{ item.number || 0 }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n Confirmar item\\r\\n \\r\\n \\r\\n Fechar\\r\\n \\r\\n
\\r\\n
\\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Login\\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 Email\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n CNPJ\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Senha\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Registrar\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Nome\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Sobrenome\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Email\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Senha\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Voltar\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Entrar\\r\\n \\r\\n \\r\\n \\r\\n Entrar como restaurante\\r\\n \\r\\n \\r\\n Entrar como cliente\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Registrar\\r\\n \\r\\n \\r\\n \\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Scanner\\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 {{ status.currentLabel }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\";","export default \"\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n QR Code\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Credenciais\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\r\\n \\r\\n Ajustes iniciais\\r\\n \\r\\n\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Modo\\r\\n \\r\\n \\r\\n \\r\\n Normal\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Estilo de Item\\r\\n \\r\\n \\r\\n \\r\\n Normal\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n zFood\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n CNPJ\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Senha master\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Mesa\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Senha garçom\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Fone\\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 Confirmar\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Alterar endereço\\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 Salvar\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Não sei meu CEP\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";","export default \"\\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\";","export default \"\\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n Complemente o seu pedido\\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 {{ half?.nome.toUpperCase() || '...' }} \\r\\n \\r\\n\\r\\n \\r\\n 0\\\" size=\\\"12\\\">\\r\\n \\r\\n {{ half.descricao }}\\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 {{complement.nome}} \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ complement.obrigatorio ? 'Obrigatório' : ''}} {{\\r\\n getHalfsComplementsQuantity(complement.produtosOpcaoTipoId) }} /\\r\\n {{ complement.qtdeMax }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ option.nome }} \\r\\n \\r\\n R$ {{ utils.convert(option.valor, 'numberToPriceBr') }}\\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 {{ getOptionQtd(option, option.produtosOpcaoId) }}\\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 {{ complementsSubTotal | currency : 'R$' }} \\r\\n \\r\\n \\r\\n Confirmar complementos \\r\\n \\r\\n \\r\\n Fechar \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n Detalhes do Produto \\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 {{ item?.produto?.nome.toUpperCase() || '...' }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n 0\\\" size=\\\"12\\\">\\r\\n \\r\\n {{ item.produto.descricao }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n 1\\\" class=\\\"option-list\\\">\\r\\n \\r\\n \\r\\n \\r\\n Meio a meio \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Obrigatório {{ getHalfsQuantity() }} / {{\\r\\n item.produto.numberMeiomeio }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n = item.produto.numberMeiomeio || getHalfsQuantity(half.produtoId) >= (item.produto.numberMeiomeio - 1)) ? null : addHalf(half)\\\"\\r\\n (click)=\\\"verifyComplementsRequired(half)\\\" class=\\\"addline\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ half.nome }}\\r\\n \\r\\n \\r\\n {{ half.valorVenda ? 'R$ ' +\\r\\n utils.numberToPriceBr(half.valorPromocao || half.valorVenda)\\r\\n : '' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Extras \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ getHalfsQuantity(half.produtoId) }}\\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 0\\\" class=\\\"option-list\\\">\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ utils.firstCharUpperOnly(optionType.nome) }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n {{ (optionType.obrigatorio ? 'Obrigatório ' : '') +\\r\\n getQtdSelected(optionType.produtosOpcaoTipoId) + ' / ' +\\r\\n optionType.qtdeMax }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ option.nome }} \\r\\n \\r\\n R$ {{ utils.convert(option.valor, 'numberToPriceBr') }}\\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 {{ getOptionQtd(option.produtosOpcaoId) }}\\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 Observação\\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 {{ item | itemValue | currency : 'R$' }} \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ item.number || 0 }}\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n Confirmar item \\r\\n \\r\\n \\r\\n Fechar \\r\\n \\r\\n
\\r\\n
\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Mesa {{ tableNumber }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n Senha {{ ficha$ | async }}\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n Voltar \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n {{ authenticationState() }}\\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 Confirmar \\r\\n \\r\\n\\r\\n \\r\\n Cardápio\\r\\n \\r\\n\\r\\n \\r\\n Pedido Vazio\\r\\n 0\\\" class=\\\"label-menu-text\\\">Pedido\\r\\n \\r\\n \\r\\n {{ totalItens }}\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n Meus Pedidos \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\\"logo\\\"\\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 Leia o QR code da comanda com sua camera\\r\\n Ler Comanda \\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\";","export default \"\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\\"logo\\\"\\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 DIGITE O NÚMERO DA SUA MESA PARA FAZER O SEU PEDIDO!\\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n Prosseguir\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n\";","export default \"\\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 Nome\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Placa do veículo\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Fone\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Crédito\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Débito ou Dinheiro\\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 CPF\\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 Prosseguir\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\";","export default \"\\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 \\\"logo\\\"\\r\\n
\\r\\n

{{config.imagemRest.nome}}

\\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 Escolha a forma de Pagamento\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Débito ou Dinheiro\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Crédito\\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 Prosseguir\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";","export default \"\\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
\\r\\n \\\"logo\\\"\\r\\n
\\r\\n

{{config.imagemRest.nome}}

\\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 Escolha a forma de Pagamento\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Crédito\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Consumo\\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 Prosseguir\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\";","export default \"\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\\"logo\\\"\\r\\n
\\r\\n
\\r\\n \\\"logo\\\"\\r\\n
\\r\\n

{{config.imagemRest.nome}}

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

FINALIZAÇÃO DO PEDIDO

\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n DADOS DO CLIENTE\\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 ENTREGA {{this.retirada ? 'OU RETIRADA' : ''}}\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Retirada {{ tempoRetira ? '(' + tempoRetira + ')' : '' }}\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Entrega {{ tempoEntrega ? '(' + tempoEntrega + ')' : '' }}\\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 Limpar Endereço\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n FORMA DE PAGAMENTO\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Crédito ou Débito\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Dinheiro\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n Precisa de Troco?\\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 {{btn_mensagem}}\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\";","export default \"\\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 \\\"logo\\\"\\r\\n
\\r\\n

{{config.imagemRest.nome}}

\\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 Escolha a forma de Retirada\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Retirada\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Entrega\\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 Escolha a forma de Pagamento\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Crédito ou Débito\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Dinheiro\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n Precisa de Troco?\\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 Prosseguir\\r\\n \\r\\n \\r\\n\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n\";","import { NgModule } from '@angular/core';\r\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\r\n\r\nimport { ScannerGuard } from './shared/guards/scanner.guard';\r\nimport { environment } from '../environments/environment';\r\nimport { BreedGuard } from './shared/guards/breed.guard';\r\nimport { ScannerV2Guard } from './shared/guards/scanner-v2.guard';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n pathMatch: 'full',\r\n redirectTo: 'v2'\r\n },\r\n {\r\n path: 'home',\r\n loadChildren: () => import('./pages/home/home.module').then(m => m.HomePageModule),\r\n canActivate: [ScannerGuard]\r\n },\r\n {\r\n path: environment.routePaths.scanner,\r\n loadChildren: () => import('./pages/scanner/scanner.module').then(m => m.ScannerPageModule)\r\n },\r\n {\r\n path: 'closed',\r\n loadChildren: () => import('./pages/closed/closed.module').then( m => m.ClosedPageModule)\r\n },\r\n {\r\n path: 'v2',\r\n loadChildren: () => import('./v2/v2.module').then(m => m.V2Module),\r\n //canActivate: [BreedGuard]\r\n },\r\n {\r\n path: 'sorry',\r\n loadChildren: () => import('./pages/sorry/sorry.module').then( m => m.SorryPageModule)\r\n },\r\n {\r\n path: ':mode/:cnpj',\r\n loadChildren: () => import('./pages/home/home.module').then(m => m.HomePageModule),\r\n canActivate: [ScannerGuard]\r\n },\r\n {\r\n path: 'gallery',\r\n loadChildren: () => import('./v2/gallery/gallery.module').then( m => m.GalleryPageModule)\r\n },\r\n {\r\n path: 'scanner',\r\n loadChildren: () => import('./pages/scanner/scanner.module').then( m => m.ScannerPageModule)\r\n },\r\n {\r\n path: 'breed',\r\n loadChildren: () => import('./v2/breed/breed.module').then( m => m.BreedPageModule)\r\n },\r {\n path: 'v2-item-complementosmeiomeio',\n loadChildren: () => import('./shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.module').then( m => m.V2ItemComplementosmeiomeioPageModule)\n },\n\n\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })\r\n ],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule {}\r\n","export default \"ion-content {\\n --background: var(--ion-item-background, var(--ion-background-color, #fff));\\n}\\n\\nion-content {\\n --padding-start: 8px;\\n --padding-end: 8px;\\n --padding-top: 20px;\\n --padding-bottom: 20px;\\n}\\n\\nion-list {\\n padding: 20px 0;\\n}\\n\\nion-note {\\n margin-bottom: 30px;\\n}\\n\\nion-list-header,\\nion-note {\\n padding-left: 10px;\\n}\\n\\nion-list#inbox-list {\\n border-bottom: 1px solid var(--ion-color-step-150, #d7d8da);\\n}\\n\\nion-list#inbox-list ion-list-header {\\n font-size: 22px;\\n font-weight: 600;\\n min-height: 20px;\\n}\\n\\nion-list#labels-list ion-list-header {\\n font-size: 16px;\\n margin-bottom: 18px;\\n color: #757575;\\n min-height: 26px;\\n}\\n\\nion-item {\\n --padding-start: 10px;\\n --padding-end: 10px;\\n border-radius: 4px;\\n}\\n\\nion-item.selected {\\n --background: rgba(var(--ion-color-primary-rgb), 0.14);\\n}\\n\\nion-item.selected ion-icon {\\n color: var(--ion-color-primary);\\n}\\n\\nion-item ion-icon {\\n color: #616e7e;\\n}\\n\\nion-item ion-label {\\n font-weight: 500;\\n}\\n\\nion-content {\\n --padding-bottom: 20px;\\n}\\n\\nion-list {\\n padding: 20px 0 0 0;\\n}\\n\\nion-note {\\n line-height: 24px;\\n margin-bottom: 20px;\\n}\\n\\nion-item {\\n --padding-start: 16px;\\n --padding-end: 16px;\\n --min-height: 50px;\\n}\\n\\nion-item.selected ion-icon {\\n color: var(--ion-color-primary);\\n}\\n\\nion-item ion-icon {\\n font-size: 24px;\\n color: #73849a;\\n}\\n\\nion-list#labels-list ion-list-header {\\n margin-bottom: 8px;\\n}\\n\\nion-list-header,\\nion-note {\\n padding-left: 16px;\\n padding-right: 16px;\\n}\\n\\nion-note {\\n margin-bottom: 8px;\\n}\\n\\nion-note {\\n display: inline-block;\\n font-size: 16px;\\n color: var(--ion-color-medium-shade);\\n}\\n\\nion-item.selected {\\n --color: var(--ion-color-primary);\\n}\\n\\nhtml {\\n scroll-behavior: smooth;\\n}\\n\\n::-webkit-scrollbar-thumb {\\n border-radius: 5px;\\n}\\n\\n.using-menu .large-menu-list ion-item {\\n --padding-end: 0;\\n --padding-start: 0;\\n --inner-padding-end: 0px;\\n --text-align: center;\\n cursor: pointer;\\n}\\n\\n.using-menu .large-menu-list ion-item ion-label i {\\n transition-duration: 0.3s;\\n color: var(--ion-color-primary);\\n}\\n\\n.using-menu .large-menu-list ion-item .item-native {\\n --padding: 0 !important;\\n}\\n\\n.using-menu .large-menu-list ion-item:hover {\\n --background: var(--ion-color-primary);\\n}\\n\\n.using-menu .large-menu-list ion-item:hover ion-label i {\\n color: white;\\n}\\n\\n.using-menu .large-menu-list ion-item.selectedRoute {\\n --background: var(--ion-color-tertiary);\\n}\\n\\n.using-menu .large-menu-list ion-item.selectedRoute ion-label i {\\n color: white;\\n}\\n\\n.dropdown-item i {\\n color: var(--ion-color-primary);\\n}\\n\\n.selectedRoute {\\n --background: var(--ion-color-tertiary);\\n --color: white;\\n}\\n\\n.selectedRoute i {\\n color: white;\\n}\\n\\n.selectedRoute:hover {\\n color: white;\\n background-color: var(--ion-color-tertiary);\\n}\\n\\n.dropdown-menu {\\n position: relative;\\n display: inline-block;\\n width: 100%;\\n}\\n\\n.dropdown-content {\\n position: absolute;\\n display: none;\\n background-color: var(--ion-color-primary);\\n z-index: 2000;\\n left: 10%;\\n top: 10vh;\\n padding: 1em;\\n height: -moz-fit-content;\\n height: fit-content;\\n background-color: transparent;\\n}\\n\\n.dropdown-content ion-list {\\n border-radius: 5px;\\n background-color: #f8f8ff;\\n width: -moz-fit-content;\\n width: fit-content;\\n max-height: 80vh;\\n overflow-y: scroll;\\n}\\n\\n.dropdown-content ion-list::-webkit-scrollbar-track {\\n background-color: transparent;\\n border-radius: 10px;\\n}\\n\\n.dropdown-content ion-list::-webkit-scrollbar {\\n width: 10px;\\n background-color: transparent;\\n}\\n\\n.dropdown-content ion-list::-webkit-scrollbar-thumb {\\n border-radius: 10px;\\n background-color: #FFF;\\n background-image: -webkit-gradient(linear, 40% 0%, 75% 84%, from(rgba(156, 65, 65, 0.6)), to(rgba(145, 25, 25, 0.6)), color-stop(0.6, rgba(222, 84, 84, 0.6)));\\n}\\n\\n.dropdown-menu:hover ~ .dropdown-content {\\n display: block;\\n}\\n\\nmain {\\n padding-top: 0;\\n}\\n\\nimg {\\n height: 56px;\\n margin-top: -20px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcYXBwLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSwyRUFBQTtBQ0NGOztBREVBO0VBQ0Usb0JBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esc0JBQUE7QUNDRjs7QURFQTtFQUNFLGVBQUE7QUNDRjs7QURFQTtFQUNFLG1CQUFBO0FDQ0Y7O0FERUE7O0VBRUUsa0JBQUE7QUNDRjs7QURFQTtFQUNFLDJEQUFBO0FDQ0Y7O0FERUE7RUFDRSxlQUFBO0VBQ0EsZ0JBQUE7RUFFQSxnQkFBQTtBQ0FGOztBREdBO0VBQ0UsZUFBQTtFQUVBLG1CQUFBO0VBRUEsY0FBQTtFQUVBLGdCQUFBO0FDSEY7O0FETUE7RUFDRSxxQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUNIRjs7QURNQTtFQUNFLHNEQUFBO0FDSEY7O0FETUE7RUFDRSwrQkFBQTtBQ0hGOztBRE1BO0VBQ0UsY0FBQTtBQ0hGOztBRE1BO0VBQ0UsZ0JBQUE7QUNIRjs7QURNQTtFQUNFLHNCQUFBO0FDSEY7O0FETUE7RUFDRSxtQkFBQTtBQ0hGOztBRE1BO0VBQ0UsaUJBQUE7RUFDQSxtQkFBQTtBQ0hGOztBRE1BO0VBQ0UscUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0FDSEY7O0FETUE7RUFDRSwrQkFBQTtBQ0hGOztBRE1BO0VBQ0UsZUFBQTtFQUNBLGNBQUE7QUNIRjs7QURNQTtFQUNFLGtCQUFBO0FDSEY7O0FETUE7O0VBRUUsa0JBQUE7RUFDQSxtQkFBQTtBQ0hGOztBRE1BO0VBQ0Usa0JBQUE7QUNIRjs7QURNQTtFQUNFLHFCQUFBO0VBQ0EsZUFBQTtFQUVBLG9DQUFBO0FDSkY7O0FET0E7RUFDRSxpQ0FBQTtBQ0pGOztBRFFBO0VBQ0UsdUJBQUE7QUNMRjs7QURRQTtFQUNFLGtCQUFBO0FDTEY7O0FEU0U7RUFDRSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0Esd0JBQUE7RUFDQSxvQkFBQTtFQUNBLGVBQUE7QUNOSjs7QURRTTtFQUNFLHlCQUFBO0VBQ0EsK0JBQUE7QUNOUjs7QURTSTtFQUNFLHVCQUFBO0FDUE47O0FEVUU7RUFDRSxzQ0FBQTtBQ1JKOztBRFNJO0VBQ0UsWUFBQTtBQ1BOOztBRFVFO0VBQ0UsdUNBQUE7QUNSSjs7QURTSTtFQUNFLFlBQUE7QUNQTjs7QURhRTtFQUNFLCtCQUFBO0FDVko7O0FEY0E7RUFDRSx1Q0FBQTtFQUNBLGNBQUE7QUNYRjs7QURZRTtFQUNFLFlBQUE7QUNWSjs7QURjQTtFQUNFLFlBQUE7RUFDQSwyQ0FBQTtBQ1hGOztBRGNBO0VBQ0Usa0JBQUE7RUFDQSxxQkFBQTtFQUNBLFdBQUE7QUNYRjs7QURjQTtFQUNFLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLDBDQUFBO0VBQ0EsYUFBQTtFQUNBLFNBQUE7RUFDQSxTQUFBO0VBQ0EsWUFBQTtFQUNBLHdCQUFBO0VBQUEsbUJBQUE7RUFDQSw2QkFBQTtBQ1hGOztBRGFFO0VBQ0Usa0JBQUE7RUFDQSx5QkFBQTtFQUNBLHVCQUFBO0VBQUEsa0JBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0FDWEo7O0FEYUU7RUFDRSw2QkFBQTtFQUNBLG1CQUFBO0FDWEo7O0FEYUU7RUFDRSxXQUFBO0VBQ0EsNkJBQUE7QUNYSjs7QURhRTtFQUNFLG1CQUFBO0VBQ0Esc0JBQUE7RUFDQSw4SkFBQTtBQ1hKOztBRG9CQTtFQUNFLGNBQUE7QUNqQkY7O0FEb0JBO0VBQ0UsY0FBQTtBQ2pCRjs7QURvQkE7RUFDRSxZQUFBO0VBQ0EsaUJBQUE7QUNqQkYiLCJmaWxlIjoic3JjL2FwcC9hcHAuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJpb24tY29udGVudCB7XHJcbiAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24taXRlbS1iYWNrZ3JvdW5kLCB2YXIoLS1pb24tYmFja2dyb3VuZC1jb2xvciwgI2ZmZikpO1xyXG59XHJcblxyXG5pb24tY29udGVudCB7XHJcbiAgLS1wYWRkaW5nLXN0YXJ0OiA4cHg7XHJcbiAgLS1wYWRkaW5nLWVuZDogOHB4O1xyXG4gIC0tcGFkZGluZy10b3A6IDIwcHg7XHJcbiAgLS1wYWRkaW5nLWJvdHRvbTogMjBweDtcclxufVxyXG5cclxuaW9uLWxpc3Qge1xyXG4gIHBhZGRpbmc6IDIwcHggMDtcclxufVxyXG5cclxuaW9uLW5vdGUge1xyXG4gIG1hcmdpbi1ib3R0b206IDMwcHg7XHJcbn1cclxuXHJcbmlvbi1saXN0LWhlYWRlcixcclxuaW9uLW5vdGUge1xyXG4gIHBhZGRpbmctbGVmdDogMTBweDtcclxufVxyXG5cclxuaW9uLWxpc3QjaW5ib3gtbGlzdCB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1zdGVwLTE1MCwgI2Q3ZDhkYSk7XHJcbn1cclxuXHJcbmlvbi1saXN0I2luYm94LWxpc3QgaW9uLWxpc3QtaGVhZGVyIHtcclxuICBmb250LXNpemU6IDIycHg7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuXHJcbiAgbWluLWhlaWdodDogMjBweDtcclxufVxyXG5cclxuaW9uLWxpc3QjbGFiZWxzLWxpc3QgaW9uLWxpc3QtaGVhZGVyIHtcclxuICBmb250LXNpemU6IDE2cHg7XHJcblxyXG4gIG1hcmdpbi1ib3R0b206IDE4cHg7XHJcblxyXG4gIGNvbG9yOiAjNzU3NTc1O1xyXG5cclxuICBtaW4taGVpZ2h0OiAyNnB4O1xyXG59XHJcblxyXG5pb24taXRlbSB7XHJcbiAgLS1wYWRkaW5nLXN0YXJ0OiAxMHB4O1xyXG4gIC0tcGFkZGluZy1lbmQ6IDEwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcblxyXG5pb24taXRlbS5zZWxlY3RlZCB7XHJcbiAgLS1iYWNrZ3JvdW5kOiByZ2JhKHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LXJnYiksIDAuMTQpO1xyXG59XHJcblxyXG5pb24taXRlbS5zZWxlY3RlZCBpb24taWNvbiB7XHJcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcclxufVxyXG5cclxuaW9uLWl0ZW0gaW9uLWljb24ge1xyXG4gIGNvbG9yOiAjNjE2ZTdlO1xyXG59XHJcblxyXG5pb24taXRlbSBpb24tbGFiZWwge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbmlvbi1jb250ZW50IHtcclxuICAtLXBhZGRpbmctYm90dG9tOiAyMHB4O1xyXG59XHJcblxyXG5pb24tbGlzdCB7XHJcbiAgcGFkZGluZzogMjBweCAwIDAgMDtcclxufVxyXG5cclxuaW9uLW5vdGUge1xyXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xyXG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XHJcbn1cclxuXHJcbmlvbi1pdGVtIHtcclxuICAtLXBhZGRpbmctc3RhcnQ6IDE2cHg7XHJcbiAgLS1wYWRkaW5nLWVuZDogMTZweDtcclxuICAtLW1pbi1oZWlnaHQ6IDUwcHg7XHJcbn1cclxuXHJcbmlvbi1pdGVtLnNlbGVjdGVkIGlvbi1pY29uIHtcclxuICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xyXG59XHJcblxyXG5pb24taXRlbSBpb24taWNvbiB7XHJcbiAgZm9udC1zaXplOiAyNHB4O1xyXG4gIGNvbG9yOiAjNzM4NDlhO1xyXG59XHJcblxyXG5pb24tbGlzdCNsYWJlbHMtbGlzdCBpb24tbGlzdC1oZWFkZXIge1xyXG4gIG1hcmdpbi1ib3R0b206IDhweDtcclxufVxyXG5cclxuaW9uLWxpc3QtaGVhZGVyLFxyXG5pb24tbm90ZSB7XHJcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xyXG4gIHBhZGRpbmctcmlnaHQ6IDE2cHg7XHJcbn1cclxuXHJcbmlvbi1ub3RlIHtcclxuICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbn1cclxuXHJcbmlvbi1ub3RlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgZm9udC1zaXplOiAxNnB4O1xyXG5cclxuICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSk7XHJcbn1cclxuXHJcbmlvbi1pdGVtLnNlbGVjdGVkIHtcclxuICAtLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XHJcbn1cclxuXHJcblxyXG5odG1sIHtcclxuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcclxufVxyXG5cclxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG59XHJcblxyXG4udXNpbmctbWVudSAubGFyZ2UtbWVudS1saXN0IHtcclxuICBpb24taXRlbSB7XHJcbiAgICAtLXBhZGRpbmctZW5kOiAwO1xyXG4gICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xyXG4gICAgLS1pbm5lci1wYWRkaW5nLWVuZDogMHB4O1xyXG4gICAgLS10ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBpb24tbGFiZWwge1xyXG4gICAgICBpIHtcclxuICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAuM3M7XHJcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLml0ZW0tbmF0aXZlIHtcclxuICAgICAgLS1wYWRkaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlvbi1pdGVtOmhvdmVyIHtcclxuICAgIC0tYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xyXG4gICAgaW9uLWxhYmVsIGkge1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGlvbi1pdGVtLnNlbGVjdGVkUm91dGUge1xyXG4gICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnkpO1xyXG4gICAgaW9uLWxhYmVsIGkge1xyXG4gICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZHJvcGRvd24taXRlbSB7XHJcbiAgaSB7XHJcbiAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xyXG4gIH1cclxufVxyXG5cclxuLnNlbGVjdGVkUm91dGUge1xyXG4gIC0tYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5KTtcclxuICAtLWNvbG9yOiB3aGl0ZTtcclxuICBpIHtcclxuICAgIGNvbG9yOiB3aGl0ZTtcclxuICB9XHJcbn1cclxuXHJcbi5zZWxlY3RlZFJvdXRlOmhvdmVyIHtcclxuICBjb2xvcjogd2hpdGU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXRlcnRpYXJ5KTtcclxufVxyXG5cclxuLmRyb3Bkb3duLW1lbnUge1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5kcm9wZG93bi1jb250ZW50IHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XHJcbiAgei1pbmRleDogMjAwMDtcclxuICBsZWZ0OiAxMCU7XHJcbiAgdG9wOiAxMHZoO1xyXG4gIHBhZGRpbmc6IDFlbTtcclxuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG5cclxuICBpb24tbGlzdCB7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGZmO1xyXG4gICAgd2lkdGg6IGZpdC1jb250ZW50O1xyXG4gICAgbWF4LWhlaWdodDogODB2aDtcclxuICAgIG92ZXJmbG93LXk6IHNjcm9sbDtcclxuICB9XHJcbiAgaW9uLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICB9XHJcbiAgaW9uLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcclxuICAgIHdpZHRoOiAxMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgfVxyXG4gIGlvbi1saXN0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIDQwJSAwJSxcclxuICAgICAgICAgICAgICAgICAgICAgICA3NSUgODQlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIGZyb20ocmdiKDE1NiwgNjUsIDY1LCAuNikpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgIHRvKHJnYigxNDUsIDI1LCAyNSwgLjYpKSxcclxuICAgICAgICAgICAgICAgICAgICAgICBjb2xvci1zdG9wKC42LHJnYigyMjIsIDg0LCA4NCwgLjYpKSlcclxuICB9XHJcbn1cclxuXHJcbi5kcm9wZG93bi1tZW51OmhvdmVyIH4gLmRyb3Bkb3duLWNvbnRlbnQge1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG5tYWluIHtcclxuICBwYWRkaW5nLXRvcDogMDtcclxufVxyXG5cclxuaW1nIHtcclxuICBoZWlnaHQ6IDU2cHg7XHJcbiAgbWFyZ2luLXRvcDogLTIwcHg7XHJcbn0iLCJpb24tY29udGVudCB7XG4gIC0tYmFja2dyb3VuZDogdmFyKC0taW9uLWl0ZW0tYmFja2dyb3VuZCwgdmFyKC0taW9uLWJhY2tncm91bmQtY29sb3IsICNmZmYpKTtcbn1cblxuaW9uLWNvbnRlbnQge1xuICAtLXBhZGRpbmctc3RhcnQ6IDhweDtcbiAgLS1wYWRkaW5nLWVuZDogOHB4O1xuICAtLXBhZGRpbmctdG9wOiAyMHB4O1xuICAtLXBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG5pb24tbGlzdCB7XG4gIHBhZGRpbmc6IDIwcHggMDtcbn1cblxuaW9uLW5vdGUge1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuXG5pb24tbGlzdC1oZWFkZXIsXG5pb24tbm90ZSB7XG4gIHBhZGRpbmctbGVmdDogMTBweDtcbn1cblxuaW9uLWxpc3QjaW5ib3gtbGlzdCB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3Itc3RlcC0xNTAsICNkN2Q4ZGEpO1xufVxuXG5pb24tbGlzdCNpbmJveC1saXN0IGlvbi1saXN0LWhlYWRlciB7XG4gIGZvbnQtc2l6ZTogMjJweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWluLWhlaWdodDogMjBweDtcbn1cblxuaW9uLWxpc3QjbGFiZWxzLWxpc3QgaW9uLWxpc3QtaGVhZGVyIHtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBtYXJnaW4tYm90dG9tOiAxOHB4O1xuICBjb2xvcjogIzc1NzU3NTtcbiAgbWluLWhlaWdodDogMjZweDtcbn1cblxuaW9uLWl0ZW0ge1xuICAtLXBhZGRpbmctc3RhcnQ6IDEwcHg7XG4gIC0tcGFkZGluZy1lbmQ6IDEwcHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbn1cblxuaW9uLWl0ZW0uc2VsZWN0ZWQge1xuICAtLWJhY2tncm91bmQ6IHJnYmEodmFyKC0taW9uLWNvbG9yLXByaW1hcnktcmdiKSwgMC4xNCk7XG59XG5cbmlvbi1pdGVtLnNlbGVjdGVkIGlvbi1pY29uIHtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbn1cblxuaW9uLWl0ZW0gaW9uLWljb24ge1xuICBjb2xvcjogIzYxNmU3ZTtcbn1cblxuaW9uLWl0ZW0gaW9uLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuaW9uLWNvbnRlbnQge1xuICAtLXBhZGRpbmctYm90dG9tOiAyMHB4O1xufVxuXG5pb24tbGlzdCB7XG4gIHBhZGRpbmc6IDIwcHggMCAwIDA7XG59XG5cbmlvbi1ub3RlIHtcbiAgbGluZS1oZWlnaHQ6IDI0cHg7XG4gIG1hcmdpbi1ib3R0b206IDIwcHg7XG59XG5cbmlvbi1pdGVtIHtcbiAgLS1wYWRkaW5nLXN0YXJ0OiAxNnB4O1xuICAtLXBhZGRpbmctZW5kOiAxNnB4O1xuICAtLW1pbi1oZWlnaHQ6IDUwcHg7XG59XG5cbmlvbi1pdGVtLnNlbGVjdGVkIGlvbi1pY29uIHtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbn1cblxuaW9uLWl0ZW0gaW9uLWljb24ge1xuICBmb250LXNpemU6IDI0cHg7XG4gIGNvbG9yOiAjNzM4NDlhO1xufVxuXG5pb24tbGlzdCNsYWJlbHMtbGlzdCBpb24tbGlzdC1oZWFkZXIge1xuICBtYXJnaW4tYm90dG9tOiA4cHg7XG59XG5cbmlvbi1saXN0LWhlYWRlcixcbmlvbi1ub3RlIHtcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxNnB4O1xufVxuXG5pb24tbm90ZSB7XG4gIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuaW9uLW5vdGUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtc2l6ZTogMTZweDtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0tc2hhZGUpO1xufVxuXG5pb24taXRlbS5zZWxlY3RlZCB7XG4gIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbn1cblxuaHRtbCB7XG4gIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuXG4udXNpbmctbWVudSAubGFyZ2UtbWVudS1saXN0IGlvbi1pdGVtIHtcbiAgLS1wYWRkaW5nLWVuZDogMDtcbiAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAtLWlubmVyLXBhZGRpbmctZW5kOiAwcHg7XG4gIC0tdGV4dC1hbGlnbjogY2VudGVyO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4udXNpbmctbWVudSAubGFyZ2UtbWVudS1saXN0IGlvbi1pdGVtIGlvbi1sYWJlbCBpIHtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4zcztcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbn1cbi51c2luZy1tZW51IC5sYXJnZS1tZW51LWxpc3QgaW9uLWl0ZW0gLml0ZW0tbmF0aXZlIHtcbiAgLS1wYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG59XG4udXNpbmctbWVudSAubGFyZ2UtbWVudS1saXN0IGlvbi1pdGVtOmhvdmVyIHtcbiAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG59XG4udXNpbmctbWVudSAubGFyZ2UtbWVudS1saXN0IGlvbi1pdGVtOmhvdmVyIGlvbi1sYWJlbCBpIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuLnVzaW5nLW1lbnUgLmxhcmdlLW1lbnUtbGlzdCBpb24taXRlbS5zZWxlY3RlZFJvdXRlIHtcbiAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItdGVydGlhcnkpO1xufVxuLnVzaW5nLW1lbnUgLmxhcmdlLW1lbnUtbGlzdCBpb24taXRlbS5zZWxlY3RlZFJvdXRlIGlvbi1sYWJlbCBpIHtcbiAgY29sb3I6IHdoaXRlO1xufVxuXG4uZHJvcGRvd24taXRlbSBpIHtcbiAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbn1cblxuLnNlbGVjdGVkUm91dGUge1xuICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeSk7XG4gIC0tY29sb3I6IHdoaXRlO1xufVxuLnNlbGVjdGVkUm91dGUgaSB7XG4gIGNvbG9yOiB3aGl0ZTtcbn1cblxuLnNlbGVjdGVkUm91dGU6aG92ZXIge1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci10ZXJ0aWFyeSk7XG59XG5cbi5kcm9wZG93bi1tZW51IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xufVxuXG4uZHJvcGRvd24tY29udGVudCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgZGlzcGxheTogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICB6LWluZGV4OiAyMDAwO1xuICBsZWZ0OiAxMCU7XG4gIHRvcDogMTB2aDtcbiAgcGFkZGluZzogMWVtO1xuICBoZWlnaHQ6IGZpdC1jb250ZW50O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbi5kcm9wZG93bi1jb250ZW50IGlvbi1saXN0IHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGZmO1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIG1heC1oZWlnaHQ6IDgwdmg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbn1cbi5kcm9wZG93bi1jb250ZW50IGlvbi1saXN0Ojotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuLmRyb3Bkb3duLWNvbnRlbnQgaW9uLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDEwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmRyb3Bkb3duLWNvbnRlbnQgaW9uLWxpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDQwJSAwJSwgNzUlIDg0JSwgZnJvbShyZ2JhKDE1NiwgNjUsIDY1LCAwLjYpKSwgdG8ocmdiYSgxNDUsIDI1LCAyNSwgMC42KSksIGNvbG9yLXN0b3AoMC42LCByZ2JhKDIyMiwgODQsIDg0LCAwLjYpKSk7XG59XG5cbi5kcm9wZG93bi1tZW51OmhvdmVyIH4gLmRyb3Bkb3duLWNvbnRlbnQge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxubWFpbiB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuXG5pbWcge1xuICBoZWlnaHQ6IDU2cHg7XG4gIG1hcmdpbi10b3A6IC0yMHB4O1xufSJdfQ== */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\n\r\nimport {\r\n Platform,\r\n ModalController,\r\n AlertController,\r\n IonApp,\r\n IonRouterOutlet,\r\n} from \"@ionic/angular\";\r\nimport { SplashScreen } from \"@ionic-native/splash-screen/ngx\";\r\nimport { StatusBar } from \"@ionic-native/status-bar/ngx\";\r\n\r\nimport { AuthService } from \"./shared/auth.service\";\r\nimport { Category } from \"./interfaces/category.interface\";\r\nimport { CartService } from \"./services/cart.service\";\r\nimport { environment } from \"../environments/environment\";\r\nimport { LoginPage } from \"./pages/login/login.page\";\r\nimport { RestaurantService } from \"./services/restaurant.service\";\r\nimport { SetDetailsComponent } from \"./shared/components/set-details/set-details.component\";\r\nimport { StorageService } from \"./services/storage.service\";\r\nimport { UserService } from \"./services/user.service\";\r\nimport { Utils } from \"./shared/util\";\r\nimport { WalletService } from \"./services/wallet.service\";\r\nimport { ZimmerStorage } from \"./models/zimmerStorage.model\";\r\n\r\ninterface MenuItem {\r\n title: string;\r\n url?: string;\r\n icon: string;\r\n iconLarge: string;\r\n size?: string;\r\n notification?: any;\r\n condition?: any;\r\n customUrl?: any;\r\n click?: any;\r\n}\r\n\r\n@Component({\r\n selector: \"app-root\",\r\n templateUrl: \"app.component.html\",\r\n styleUrls: [\"app.component.scss\"],\r\n})\r\nexport class AppComponent implements OnInit {\r\n /**\r\n * Checa se o mouse está sobre o menu lateral de telas grandes\r\n */\r\n isMouseHover: boolean = false;\r\n /**\r\n * Index de página selecionado - revisar necessidade\r\n */\r\n public selectedIndex = -1;\r\n /**\r\n * Título da página\r\n */\r\n public title = \"Zimmer\";\r\n /**\r\n * Url base do app\r\n */\r\n public baseUrl = environment.BASE_URL;\r\n /**\r\n * Categorias do restaurante\r\n */\r\n public appPages: Category[] = [];\r\n /**\r\n * Outros menus\r\n */\r\n public appPagesOthers: MenuItem[] = [\r\n {\r\n title: \"Meus Pedidos\",\r\n url: \"orders\",\r\n icon: \"archive\",\r\n iconLarge: \"fab fa-jedi-order\",\r\n size: \"20px\",\r\n notification: () => this.cartService.getOrders()?.length || 0,\r\n condition: () =>\r\n this.restaurantService.getRestaurant() &&\r\n this.storage.get(\"mode\") != \"zap\",\r\n },\r\n ]; // botões do menu lateral\r\n /**\r\n * Número da mesa para exibição no menu lateral\r\n */\r\n public tableNumber: number;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private auth: AuthService,\r\n protected cartService: CartService,\r\n private modalController: ModalController,\r\n private platform: Platform,\r\n public restaurantService: RestaurantService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private splashScreen: SplashScreen,\r\n private statusBar: StatusBar,\r\n private storage: StorageService,\r\n protected userService: UserService,\r\n public utils: Utils,\r\n protected wallet: WalletService\r\n ) {\r\n this.initializeApp();\r\n }\r\n\r\n verificaUrl: any = ''\r\n /**\r\n * Chama o componente de configuração do app\r\n */\r\n ngOnInit() {\r\n /* Verificação da url para implementar o pixel do maxBurguer */\r\n var oldHref = document.location.href.split('/')[document.location.href.split('/').length - 1]\r\n var newHref = ''\r\n\r\n this.verificaUrl = setInterval(() => {\r\n newHref = document.location.href.split('/')[document.location.href.split('/').length - 1]\r\n\r\n if(oldHref != newHref){\r\n let method = 'PageView'\r\n let evento = ''\r\n oldHref = newHref\r\n\r\n let facePixelID = sessionStorage.getItem('pixelFace')\r\n\r\n if(newHref == 'cardapio') {\r\n method = 'Purchase'\r\n evento = `, {\r\n currency: 'BRL'\r\n }`\r\n } else {\r\n method = 'PageView'\r\n evento = ''\r\n }\r\n\r\n if(facePixelID != 'null') {\r\n document.getElementById('pixelscript').innerHTML = `\r\n \r\n `;\r\n document.getElementById('pixel'). innerHTML = ``\r\n }\r\n else {\r\n document.getElementById('pixelscript').innerHTML = ''\r\n document.getElementById('pixel'). innerHTML = ''\r\n clearInterval(this.verificaUrl)\r\n }\r\n }\r\n else{\r\n }\r\n\r\n }, 1000)\r\n /* Termino da verificação */\r\n \r\n }\r\n\r\n /**\r\n * Inicialização padrão do app\r\n */\r\n initializeApp() {\r\n this.platform.ready().then(() => {\r\n this.statusBar.styleDefault();\r\n this.splashScreen.hide();\r\n });\r\n }\r\n\r\n /**\r\n * Desloga do app\r\n * @deprecated Não tem mais login de usuário\r\n */\r\n logout() {\r\n this.auth.logout();\r\n this.cartService.logout();\r\n this.wallet.logout();\r\n this.router.navigate([\r\n this.restaurantService.getRestaurant()?.cnpj || \"home\",\r\n ]);\r\n }\r\n\r\n /**\r\n * Chama o componente de Login do app\r\n * @deprecated Não tem mais login de usuário\r\n */\r\n login() {\r\n this.modalController\r\n .create({\r\n component: LoginPage,\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n /**\r\n * Chama o componente que seta as configurações iniciais do app\r\n */\r\n requestDetails() {\r\n // chama o componente para inserção de dados por credenciais\r\n\r\n this.modalController\r\n .create({\r\n component: SetDetailsComponent,\r\n backdropDismiss: false,\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n /**\r\n * Mostra o popover com as categorias do restaurante\r\n */\r\n showPopover() {\r\n this.isMouseHover = true;\r\n document.getElementsByClassName(\"dropdown-content\")[0][\"style\"].display =\r\n \"block\"; // Muda o display do conteúdo com as categorias\r\n }\r\n\r\n /**\r\n * Esconde o popover com as categorias do restaurante\r\n */\r\n hidePopover() {\r\n this.isMouseHover = false;\r\n // O timeout é pra que tenha um delay ao retirar o mouse do menu com as categorias do restaurante, e não suma de repente\r\n setTimeout(() => {\r\n if (!this.isMouseHover)\r\n document.getElementsByClassName(\"dropdown-content\")[0][\r\n \"style\"\r\n ].display = \"none\";\r\n }, 300);\r\n }\r\n\r\n /**\r\n * Retorna os menus que devem ser mostrados. Eles serão filtrados pela condição (caso haja). Caso não exista condição, ele será renderizado\r\n */\r\n showedMenus() {\r\n // retorna os menus que serão mostrados no menu lateral do app e em telas grandes\r\n // obs.: filtra eles pela condição de cada um, especificada na declaração no ínicio da classe\r\n\r\n return this.appPagesOthers.filter(\r\n (page) => !page.condition || page.condition()\r\n );\r\n }\r\n\r\n /**\r\n * Evento do botão de troca de mesa\r\n */\r\n changeTableClick() {\r\n const type = this.storage.get(\"type\");\r\n // Caso o modo de uso seja por QRCode, chamará a câmera do celular (somente funcionará se estiver instalado como app)\r\n if (type == \"qrcode\")\r\n this.utils.scanQr().then((result) => {\r\n const results = result.text.split(\"qrcode/\")[1].split(\"/\");\r\n const table = results[1];\r\n this.auth.changeTable(Number(table));\r\n this.tableNumber = this.auth.getTable();\r\n });\r\n else this.setTable(); // Se não, chamará uma função de AuthService para a troca de mesa\r\n\r\n // A variável do componente responsável pela vizualição do número da mesa receberá o número vindo da função\r\n this.tableNumber = this.auth.getTable();\r\n }\r\n\r\n /**\r\n * Retorna o usuário logado\r\n * @deprecated Não tem mais login de usuário\r\n */\r\n getUser() {\r\n return this.auth.getUser();\r\n }\r\n\r\n /**\r\n * Retorna o restaurante logado\r\n * @deprecated Não tem mais login de restaurante\r\n */\r\n getUserRestaurant() {\r\n return this.auth.getUserRestaurant();\r\n }\r\n\r\n /**\r\n * Chama a função de AuthService que setára o número da mesa no storageLocal\r\n */\r\n setTable() {\r\n this.auth.setTable();\r\n this.tableNumber = this.auth.getTable();\r\n }\r\n\r\n /**\r\n * Chama a câmera para scanear um qrcode com o link com cnpj e o número da mmesa\r\n */\r\n scan() {\r\n this.utils\r\n .scanQr()\r\n .then((result) => {\r\n const results = result.text.split(\"qrcode/\")[1].split(\"/\");\r\n const cnpj = results[0];\r\n const table = results[1];\r\n const zimmer = new Object() as ZimmerStorage;\r\n zimmer.cnpj = cnpj;\r\n zimmer.tableNumber = Number(table);\r\n zimmer.mode = environment.appModes.table as any;\r\n\r\n this.storage.prepare(zimmer);\r\n\r\n this.navigateToCategories();\r\n\r\n return true;\r\n })\r\n .catch((error) => {\r\n this.alertCtrl\r\n .create({\r\n header: \"Error scanner\",\r\n message: JSON.stringify(error),\r\n })\r\n .then((alert) => alert.present());\r\n return false;\r\n });\r\n }\r\n\r\n /**\r\n * Vai para a página de categorias com TODOS os produtos do restaurante\r\n */\r\n navigateToCategories() {\r\n this.router.navigate([\"home\", \"categorias\"]);\r\n }\r\n}\r\n\r\nvar oldHref = window.location.href.split('/')[window.location.href.split('/').length - 1]\r\nvar newHref = ''\r\n\r\nconst verificaUrl = setInterval(() => {\r\n newHref = window.location.href.split('/')[window.location.href.split('/').length - 1]\r\n\r\n if(oldHref != newHref){\r\n let method = 'PageView'\r\n let evento = ''\r\n oldHref = newHref\r\n\r\n let facePixelID = sessionStorage.getItem('pixelFace')\r\n\r\n if(newHref == 'cardapio') {\r\n method = 'Purchase'\r\n evento = `, {\r\n currency: 'BRL'\r\n }`\r\n } else {\r\n method = 'PageView'\r\n evento = ''\r\n }\r\n\r\n if(facePixelID != 'null') {\r\n document.getElementById('pixelscript').innerHTML = `\r\n \r\n `;\r\n document.getElementById('pixel'). innerHTML = ``\r\n }\r\n else {\r\n document.getElementById('pixelscript').innerHTML = ''\r\n document.getElementById('pixel'). innerHTML = ''\r\n clearInterval(verificaUrl)\r\n }\r\n }\r\n else{\r\n }\r\n\r\n}, 1000)\r\n\r\nverificaUrl","import { NgModule, DEFAULT_CURRENCY_CODE, LOCALE_ID } from \"@angular/core\";\r\nimport { BrowserModule } from \"@angular/platform-browser\";\r\nimport { registerLocaleData } from \"@angular/common\";\r\nimport { HttpClientModule } from \"@angular/common/http\";\r\nimport { RouteReuseStrategy, UrlSerializer } from \"@angular/router\";\r\nimport localePt from \"@angular/common/locales/pt\";\r\n\r\nimport { IonicModule, IonicRouteStrategy } from \"@ionic/angular\";\r\nimport { SplashScreen } from \"@ionic-native/splash-screen/ngx\";\r\nimport { StatusBar } from \"@ionic-native/status-bar/ngx\";\r\nimport { SQLite } from \"@ionic-native/sqlite/ngx\";\r\nimport { IonicStorageModule } from \"@ionic/storage\";\r\nimport { Geolocation } from \"@ionic-native/geolocation/ngx\";\r\nimport { NativeGeocoder } from \"@ionic-native/native-geocoder/ngx\";\r\n// import { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';\r\n\r\nimport { AppComponent } from \"./app.component\";\r\nimport { AppRoutingModule } from \"./app-routing.module\";\r\nimport { LoginPageModule } from \"./pages/login/login.module\";\r\nimport { HomePageModule } from \"./pages/home/home.module\";\r\nimport { LowerCaseUrlSerializer } from \"./shared/interceptor/lower-case-url-serializer.interceptor\";\r\nimport { CartNewPageModule } from \"./pages/cart-new/cart-new.module\";\r\n\r\nregisterLocaleData(localePt, \"pt-BR\");\r\n@NgModule({\r\n declarations: [AppComponent],\r\n entryComponents: [],\r\n imports: [\r\n BrowserModule,\r\n IonicModule.forRoot({\r\n mode: \"md\",\r\n }),\r\n IonicStorageModule.forRoot(),\r\n AppRoutingModule,\r\n HttpClientModule,\r\n LoginPageModule,\r\n HomePageModule,\r\n CartNewPageModule,\r\n // CategoryNewPageModule\r\n ],\r\n providers: [\r\n StatusBar,\r\n SplashScreen,\r\n Geolocation,\r\n NativeGeocoder,\r\n { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },\r\n { provide: LOCALE_ID, useValue: \"pt-BR\" },\r\n { provide: UrlSerializer, useClass: LowerCaseUrlSerializer }, // Interceptor para que as rotas sejam caseInsensitive\r\n SQLite,\r\n // BarcodeScanner\r\n ],\r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule {}\r\n","import { Half } from \"../models/half.model\";\r\nimport { Product } from \"../models/produto.model\";\r\nimport { ProductOption } from \"./product-option.interface\";\r\n\r\nexport class ItemCart {\r\n id?: number;\r\n produtoId?: number;\r\n produto?: Product;\r\n number?: number;\r\n // complementos: Complemento[]\r\n cartItemOpcoes?: ProductOption[] = [];\r\n meiomeios?: Half[] = [];\r\n observacao?: string;\r\n\r\n constructor(values?: ItemCart) {\r\n if (values) {\r\n Object.keys(values).forEach((key) => {\r\n this[key] = values[key];\r\n });\r\n }\r\n }\r\n\r\n static calcTotalValue(item: ItemCart) {\r\n let total: number = 0;\r\n item.cartItemOpcoes.forEach(\r\n (option) => (total += option.valor * option.quantidade)\r\n ); \r\n if (\r\n item.produto.numberMeiomeio > 1 &&\r\n !item.produto.valorVenda &&\r\n item.meiomeios.length > 0\r\n ) {\r\n const mostExpensive = item.meiomeios.reduce((lastHalf, half) =>\r\n (lastHalf.valorPromocao || lastHalf.valorVenda) >\r\n (half.valorPromocao || half.valorVenda)\r\n ? lastHalf\r\n : half\r\n );\r\n total +=\r\n mostExpensive.valorPromocao || mostExpensive.valorVendaComplemento;\r\n }\r\n \r\n let preco =\r\n item.produto.valorPromocao ||\r\n item.produto.valorVenda ||\r\n item.produto.valorRegular ||\r\n 0;\r\n\r\n total += item.number * preco; \r\n\r\n return Number(total.toFixed(2));\r\n }\r\n}\r\n","// export interface Complemento {\r\n// complementoId?: number;\r\n// referenciaId?: number;\r\n// restauranteId?: number;\r\n// categoriaId?: number;\r\n// descricao?: string;\r\n// valor?: number;\r\n// }\r\n\r\nimport { BaseModel } from \"../models/base-class.model\";\r\n\r\nexport class ProductOptionType extends BaseModel {\r\n produtosOpcaoTipoId: number;\r\n restauranteId: string;\r\n tipo: number;\r\n nome: string;\r\n quantidade: number;\r\n qtdeMax: number;\r\n sequencia: number;\r\n obrigatorio: boolean;\r\n checked: boolean;\r\n produtoOpcaos: ProductOption[];\r\n}\r\n\r\nexport class ProductOption extends BaseModel {\r\n produtosOpcaoId: string;\r\n produtosOpcaoTipoId: number;\r\n restauranteId?: string;\r\n sequencia?: number;\r\n valor: number;\r\n quantidade: number;\r\n nome: string;\r\n}\r\n","import { BaseModel } from '../base-class.model'\r\nimport { LocationResult } from './location-result.model'\r\n\r\nexport class Localizacao extends BaseModel {\r\n bairro: string\r\n cep: string\r\n localidade: string\r\n logradouro: string\r\n numero?: string\r\n uf: string\r\n complemento?: string\r\n\r\n static isValid(address: Localizacao) {\r\n const errors = []\r\n if(address.cep && (address.cep || '').replace(/[^0-9]/gm, '').length != 8) errors.push('CEP inválido');\r\n if((address.bairro || '').length < 1) errors.push('Bairro vazio');\r\n if((address.logradouro || '').length < 1) errors.push('Logradouro vazio');\r\n if((address.localidade || '').length < 3) errors.push('Nome de cidade muito curto');\r\n if((address.numero || '').length < 1) errors.push('Número vazio');\r\n return { isValid: errors.length == 0, errors }\r\n }\r\n\r\n static assignLocation(location: LocationResult): Localizacao {\r\n const address = new Localizacao()\r\n address.bairro = location.subLocality\r\n address.cep = location.postalCode\r\n address.localidade = location.subAdministrativeArea\r\n address.logradouro = location.thoroughfare\r\n address.uf = Object.keys(Localizacao.uf).find(key => Localizacao.uf[key] == location.administrativeArea)\r\n return address\r\n }\r\n\r\n private static uf: {\r\n AC: 'Acre',\r\n AL: 'Alagoas',\r\n AM: 'Amazonas',\r\n AP: 'Amapá',\r\n BA: 'Bahia',\r\n CE: 'Ceará',\r\n DF: 'Distrito Federal',\r\n ES: 'Espírito Santo',\r\n GO: 'Goiás',\r\n MA: 'Maranhão',\r\n MG: 'Minas Gerais',\r\n MS: 'Mato Grosso do Sul',\r\n MT: 'Mato Grosso',\r\n PA: 'Pará',\r\n PB: 'Paraíba',\r\n PE: 'Pernambuco',\r\n PI: 'Piauí',\r\n PR: 'Pará',\r\n RJ: 'Rio de Janeiro',\r\n RN: 'Rio Grande do Norte',\r\n RO: 'Rondônia',\r\n RR: 'Roraima',\r\n RS: 'Rio Grande do Sul',\r\n SC: 'Santa Catarina',\r\n SE: 'Sergipe',\r\n SP: 'São Paulo',\r\n TO: 'Tocantins',\r\n } = {\r\n AC: 'Acre',\r\n AL: 'Alagoas',\r\n AM: 'Amazonas',\r\n AP: 'Amapá',\r\n BA: 'Bahia',\r\n CE: 'Ceará',\r\n DF: 'Distrito Federal',\r\n ES: 'Espírito Santo',\r\n GO: 'Goiás',\r\n MA: 'Maranhão',\r\n MG: 'Minas Gerais',\r\n MS: 'Mato Grosso do Sul',\r\n MT: 'Mato Grosso',\r\n PA: 'Pará',\r\n PB: 'Paraíba',\r\n PE: 'Pernambuco',\r\n PI: 'Piauí',\r\n PR: 'Pará',\r\n RJ: 'Rio de Janeiro',\r\n RN: 'Rio Grande do Norte',\r\n RO: 'Rondônia',\r\n RR: 'Roraima',\r\n RS: 'Rio Grande do Sul',\r\n SC: 'Santa Catarina',\r\n SE: 'Sergipe',\r\n SP: 'São Paulo',\r\n TO: 'Tocantins',\r\n }\r\n}","export abstract class BaseModel {\r\n\r\n constructor(value?: T) {\r\n Object.keys(value || {}).forEach(key => this[key] = value[key])\r\n }\r\n\r\n}","import { ItemCart } from '../../interfaces/itemCart.interface';\r\nimport { SendOrderApi } from '../../interfaces/order.interface'\r\nimport { BaseModel } from '../base-class.model';\r\n\r\nexport class Cart extends BaseModel {\r\n items: ItemCart[]\r\n discount: number\r\n date?\r\n orderObj?: SendOrderApi\r\n\r\n constructor(value?: Cart) {\r\n super()\r\n this.items = value?.items || []\r\n this.discount = value?.discount || 0\r\n }\r\n}","import { BaseModel } from '../base-class.model'\r\n\r\nexport class Card extends BaseModel {\r\n num: number\r\n cvv: string\r\n monthExp: number|string\r\n yearExp: number|string\r\n brand?: string\r\n token?: string\r\n titular: string\r\n cpf: number\r\n checked?: boolean\r\n userId?: string\r\n}","import { BaseModel } from '../base-class.model'\r\n\r\nexport class cardConsumo extends BaseModel {\r\n cartaoConsumoId?: string\r\n numero?: string\r\n descricao?: string\r\n valor?: number\r\n validade?: string\r\n cpf?: string\r\n desconto?: number\r\n nome?: string\r\n restauranteId?: number\r\n saldoAtual?: number\r\n\r\n}","import { BaseModel } from './base-class.model';\r\n\r\nexport class User extends BaseModel {\r\n\r\n accessKey?: string;\r\n nome?: string;\r\n sobrenome?: string;\r\n cpf?: string;\r\n senha?: string;\r\n fone?: string;\r\n email?: string;\r\n restauranteId?: number;\r\n facebook?: string;\r\n imagem?: string;\r\n isValid?: boolean;\r\n userID?: string;\r\n}","import { BaseModel } from \"./base-class.model\";\r\nimport { Cart } from \"./cart/cart.model\";\r\nimport { UserFavorite } from \"../interfaces/user-favorite.interface\";\r\n\r\nexport class ZimmerStorage extends BaseModel {\r\n // user: User;\r\n /**\r\n * @deprecated\r\n */\r\n userFavorites: UserFavorite[];\r\n /**\r\n * @deprecated\r\n */\r\n orders: Cart[];\r\n /**\r\n * Número da mesa\r\n */\r\n tableNumber: number;\r\n /**\r\n * Cnpj da empresa\r\n */\r\n cnpj: string;\r\n /**\r\n * Modo em que o app será executado\r\n */\r\n mode: \"zap\" | \"pedido\" | \"qrcode\" | \"menu\" | \"ficha\" | \"gestor\";\r\n /**\r\n * Número de telefone da empresa reserva. Só é usado na rota 'zap'\r\n * Só será utilizado caso o restaurante não tenha um número de telefone registrado em nosso DB\r\n */\r\n phoneNumber: number;\r\n /**\r\n * Preferências para a estilização do app\r\n */\r\n preferences: {\r\n /**\r\n * Estilo do card de produtos na página de categorias\r\n */\r\n categoryProdCardStyle?: number;\r\n };\r\n\r\n constructor(value?: ZimmerStorage) {\r\n super(value);\r\n if (!this.preferences) this.preferences = {};\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { CartNewPage } from './cart-new.page';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: CartNewPage\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class CartNewPageRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { CartNewPageRoutingModule } from './cart-new-routing.module';\r\n\r\nimport { CartNewPage } from './cart-new.page';\r\nimport { QrcodeScannerPageModule } from '../qrcode-scanner/qrcode-scanner.module';\r\nimport { UserInformationPageModule } from './user-information/user-information.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n CartNewPageRoutingModule,\r\n QrcodeScannerPageModule,\r\n UserInformationPageModule\r\n ],\r\n declarations: [CartNewPage],\r\n exports: [CartNewPage]\r\n})\r\nexport class CartNewPageModule {}\r\n","export default \":root {\\n --ion-safe-area-top: 20px;\\n --ion-safe-area-bottom: 22px;\\n}\\n\\n.cart-item {\\n border-radius: 5px;\\n background-color: var(--ion-color-light);\\n box-shadow: 2px 2px grey;\\n margin-bottom: 10px;\\n}\\n\\n.item-header {\\n background-color: gainsboro;\\n padding-left: 5px;\\n border-radius: 5px;\\n}\\n\\n.item-title-name {\\n white-space: normal;\\n}\\n\\n.item-remove-button {\\n font-weight: bold;\\n color: grey;\\n text-transform: uppercase;\\n}\\n\\n.item-option-quantity {\\n text-align: right;\\n}\\n\\n.item-option-quantity .text-box-quantity {\\n background-color: gainsboro;\\n}\\n\\n.item-quantity .text-box-quantity {\\n background-color: var(--ion-color-light);\\n}\\n\\n.text-box-quantity {\\n padding: 5px;\\n border-radius: 5px;\\n width: -moz-fit-content;\\n width: fit-content;\\n display: inline-block;\\n}\\n\\n.item-option-name {\\n white-space: normal;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvY2FydC1uZXcvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxccGFnZXNcXGNhcnQtbmV3XFxjYXJ0LW5ldy5wYWdlLnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2NhcnQtbmV3L2NhcnQtbmV3LnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLHlCQUFBO0VBQ0EsNEJBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0VBQ0Esd0NBQUE7RUFDQSx3QkFBQTtFQUNBLG1CQUFBO0FDQ0o7O0FERUE7RUFDSSwyQkFBQTtFQUNBLGlCQUFBO0VBQ0Esa0JBQUE7QUNDSjs7QURFQTtFQUVJLG1CQUFBO0FDQUo7O0FER0E7RUFDSSxpQkFBQTtFQUNBLFdBQUE7RUFDQSx5QkFBQTtBQ0FKOztBREdBO0VBRUksaUJBQUE7QUNESjs7QURFSTtFQUNJLDJCQUFBO0FDQVI7O0FETUk7RUFDSSx3Q0FBQTtBQ0hSOztBRE9BO0VBQ0ksWUFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7RUFBQSxrQkFBQTtFQUNBLHFCQUFBO0FDSko7O0FET0E7RUFDSSxtQkFBQTtBQ0pKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvY2FydC1uZXcvY2FydC1uZXcucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xyXG4gICAgLS1pb24tc2FmZS1hcmVhLXRvcDogMjBweDtcclxuICAgIC0taW9uLXNhZmUtYXJlYS1ib3R0b206IDIycHg7XHJcbn1cclxuXHJcbi5jYXJ0LWl0ZW0ge1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcclxuICAgIGJveC1zaGFkb3c6IDJweCAycHggZ3JleTtcclxuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XHJcbn1cclxuXHJcbi5pdGVtLWhlYWRlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBnYWluc2Jvcm87XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxufVxyXG5cclxuLml0ZW0tdGl0bGUtbmFtZSB7XHJcbiAgICAvLyBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG59XHJcblxyXG4uaXRlbS1yZW1vdmUtYnV0dG9uIHtcclxuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgY29sb3I6IGdyZXk7XHJcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG59XHJcblxyXG4uaXRlbS1vcHRpb24tcXVhbnRpdHkge1xyXG4gICAgLy8gYmFja2dyb3VuZC1jb2xvcjogZ2FpbnNib3JvO1xyXG4gICAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgICAudGV4dC1ib3gtcXVhbnRpdHkge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdhaW5zYm9ybztcclxuICAgIH1cclxufVxyXG5cclxuLml0ZW0tcXVhbnRpdHkge1xyXG4gICAgLy8gYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcclxuICAgIC50ZXh0LWJveC1xdWFudGl0eSB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcclxuICAgIH1cclxufVxyXG5cclxuLnRleHQtYm94LXF1YW50aXR5IHtcclxuICAgIHBhZGRpbmc6IDVweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuICAgIHdpZHRoOiBmaXQtY29udGVudDtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuLml0ZW0tb3B0aW9uLW5hbWUge1xyXG4gICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxufSIsIjpyb290IHtcbiAgLS1pb24tc2FmZS1hcmVhLXRvcDogMjBweDtcbiAgLS1pb24tc2FmZS1hcmVhLWJvdHRvbTogMjJweDtcbn1cblxuLmNhcnQtaXRlbSB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgYm94LXNoYWRvdzogMnB4IDJweCBncmV5O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuXG4uaXRlbS1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBnYWluc2Jvcm87XG4gIHBhZGRpbmctbGVmdDogNXB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5cbi5pdGVtLXRpdGxlLW5hbWUge1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufVxuXG4uaXRlbS1yZW1vdmUtYnV0dG9uIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGNvbG9yOiBncmV5O1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uaXRlbS1vcHRpb24tcXVhbnRpdHkge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5pdGVtLW9wdGlvbi1xdWFudGl0eSAudGV4dC1ib3gtcXVhbnRpdHkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBnYWluc2Jvcm87XG59XG5cbi5pdGVtLXF1YW50aXR5IC50ZXh0LWJveC1xdWFudGl0eSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG59XG5cbi50ZXh0LWJveC1xdWFudGl0eSB7XG4gIHBhZGRpbmc6IDVweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICB3aWR0aDogZml0LWNvbnRlbnQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuLml0ZW0tb3B0aW9uLW5hbWUge1xuICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xufSJdfQ== */\";","import { Component, Input, OnInit } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { BehaviorSubject, Observable, Subscription } from \"rxjs\";\r\n\r\nimport { ModalController, AlertController, IonInput } from \"@ionic/angular\";\r\n\r\nimport { ItemCart } from \"../../interfaces/itemCart.interface\";\r\nimport { ProductOption } from \"../../interfaces/product-option.interface\";\r\nimport { OrderResponse } from \"../../models/order/order-response.model\";\r\nimport { CartService } from \"../../services/cart.service\";\r\nimport { OrderService } from \"../../services/order.service\";\r\nimport { QrcodeService } from \"../../services/qrcode.service\";\r\nimport { RestaurantService } from \"../../services/restaurant.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { AuthService } from \"../../shared/auth.service\";\r\nimport { Utils } from \"../../shared/util\";\r\nimport { environment } from \"../../../environments/environment\";\r\nimport { UserInformationPage } from \"./user-information/user-information.page\";\r\nimport { ItemPage } from \"../item/item.page\";\r\nimport { OrdersPage } from \"../home/orders/orders.page\";\r\nimport { DialogScannerPageComponent } from \"../dialog-scanner-page/dialog-scanner-page.component\";\r\n\r\n@Component({\r\n selector: \"app-cart-new\",\r\n templateUrl: \"./cart-new.page.html\",\r\n styleUrls: [\"./cart-new.page.scss\"],\r\n})\r\nexport class CartNewPage implements OnInit {\r\n items: ItemCart[] = [];\r\n // items$: BehaviorSubject = new BehaviorSubject([]) // TODO mudar para observable\r\n orders$: Observable;\r\n comandaId$: Observable;\r\n @Input(\"readOnly\") readOnly: boolean;\r\n @Input(\"order\") order: OrderResponse;\r\n\r\n constructor(\r\n private auth: AuthService,\r\n public cartService: CartService,\r\n protected modalController: ModalController,\r\n private alertController: AlertController,\r\n private orderService: OrderService,\r\n private qrCodeScanner: QrcodeService,\r\n public restaurantService: RestaurantService,\r\n private router: Router,\r\n private storage: StorageService,\r\n public utils: Utils\r\n ) {}\r\n\r\n ngOnInit() {\r\n if (!this.readOnly) {\r\n this.orders$ = this.orderService.getOrders();\r\n this.comandaId$ = this.orderService.getComandaId();\r\n this.items = this.cartService.getAllItems();\r\n } else {\r\n this.items = this.order.pedidoItens.map(\r\n (item) =>\r\n new ItemCart({\r\n cartItemOpcoes: item.pedidoItemOpcoes.map(\r\n (option) =>\r\n new ProductOption({\r\n nome: option.nome,\r\n produtosOpcaoId: option.pedidoItemOpcaoId,\r\n produtosOpcaoTipoId: option.tipo,\r\n quantidade: option.quantidade,\r\n valor: option.valor,\r\n })\r\n ),\r\n meiomeios: item.pedidoMeioMeios,\r\n number: item.quantidade,\r\n produto: item.produto,\r\n observacao: item.observacao,\r\n produtoId: item.produtoId,\r\n })\r\n );\r\n }\r\n }\r\n\r\n /**\r\n * Fecha o modal atual (caso esteja Page esteja aberta como modal, será ela)\r\n */\r\n closeCart() {\r\n this.modalController.dismiss(null, null, environment.modals.cartNewId);\r\n }\r\n\r\n /**\r\n * Mostra os detalhes do item\r\n * @param item\r\n */\r\n showDetails(item: ItemCart) {\r\n this.modalController\r\n .create({\r\n component: ItemPage,\r\n componentProps: {\r\n itemCart: item,\r\n openCartFn: this.closeCart,\r\n },\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n /**\r\n * Retira o item do carrinho\r\n * @param item\r\n */\r\n throwFromCart(item: ItemCart) {\r\n this.cartService.removeItem(item.id);\r\n this.items = this.cartService.getAllItems();\r\n }\r\n\r\n /**\r\n * Chama um alert para que o pedido seja enviado via api ou whatsapp\r\n */\r\n sendOrder() {\r\n const mode = this.storage.get(environment.storage.appMode);\r\n // Caso seja pelo whats\r\n if (mode == environment.appModes.zap) {\r\n this.modalController\r\n .create({\r\n component: UserInformationPage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) =>\r\n modal.present().then(() =>\r\n modal.onDidDismiss().then((result) => {\r\n if (result.data.success) {\r\n this.closeCart();\r\n }\r\n })\r\n )\r\n );\r\n // Caso seja pela API\r\n } else if (mode == environment.appModes.table) {\r\n this.doOrder();\r\n } else if (mode == environment.appModes.onlinePayment) {\r\n this.modalController\r\n .create({\r\n component: UserInformationPage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) =>\r\n modal.present().then(() =>\r\n modal.onDidDismiss().then((result) => {\r\n if (result.data.success) {\r\n this.closeCart();\r\n }\r\n })\r\n )\r\n );\r\n } else if (mode == environment.appModes.comanda) {\r\n this.alertController\r\n .create({\r\n header: \"Qual a mesa?\",\r\n inputs: [\r\n {\r\n id: environment.table_number_input_id,\r\n cssClass: \"center-align\",\r\n },\r\n ],\r\n buttons: [\r\n {\r\n text: \"Confirmar\",\r\n handler: () => this.confirmTableAndSendOrder(),\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n }\r\n\r\n /**\r\n * Pede a identificação da mesa pro usuário e finaliza o pedido\r\n */\r\n confirmTableAndSendOrder() {\r\n const tableInput = document.getElementById(\r\n environment.table_number_input_id\r\n ) as any as IonInput;\r\n if (tableInput.value) {\r\n this.modalController\r\n .create({\r\n component: DialogScannerPageComponent,\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n if (dismiss.data.confirm) {\r\n const subScan: Subscription = this.qrCodeScanner\r\n .scan({\r\n useNativePlugin: false,\r\n validation: (text: string) => text.length == 36,\r\n })\r\n .subscribe({\r\n next: (comandaId) =>\r\n comandaId?.length !== 36 ||\r\n this.doOrder(comandaId, tableInput.value as string),\r\n complete: () => subScan.unsubscribe(),\r\n });\r\n }\r\n });\r\n modal.present();\r\n });\r\n } else {\r\n this.alertController\r\n .create({\r\n message: \"Digite em qual mesa está alocado\",\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n }\r\n\r\n /**\r\n * Retira todos os itens do carrinho\r\n */\r\n cleanOrder() {\r\n this.cartService.clear();\r\n this.closeCart();\r\n }\r\n\r\n /**\r\n * Realiza o pedido\r\n * @param comandaId\r\n */\r\n doOrder(comandaId?: string, tableNumber?: string) {\r\n this.utils.setStateLoading(true); // Carregando\r\n const mode = this.storage.get(environment.storage.appMode);\r\n this.cartService.sendOrder({ comandaId, tableNumber }).subscribe({\r\n next: (r) => {\r\n this.utils.setStateLoading(false);\r\n if (r) {\r\n this.alertController\r\n .create({\r\n header: \"Prontinho!\",\r\n message: \"Pedido encaminhado! Agora é só aguardar\",\r\n buttons: [\r\n { text: \"OK\", handler: () => this.modalController.dismiss() },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n } else {\r\n if (\r\n mode == environment.appModes.table ||\r\n mode == environment.appModes.comanda\r\n ) {\r\n this.alertController\r\n .create({\r\n header: \"Prontinho!\",\r\n message: \"Pedido encaminhado! Agora é só aguardar\",\r\n buttons: [\r\n { text: \"OK\", handler: () => this.modalController.dismiss() },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n } else {\r\n this.alertController\r\n .create({\r\n header: \"Ops!\",\r\n message: \"Algum erro ocorreu\",\r\n buttons: [\r\n {\r\n text: \"Fechar\",\r\n handler: () => this.modalController.dismiss(),\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n }\r\n // TODO fazer o bagulho de pedidos da comanda\r\n },\r\n error: (err) => {\r\n this.alertController\r\n .create({\r\n header: \"Ops!\",\r\n message: err?.error || err?.mesage || err,\r\n buttons: [{ text: \"Fechar\" }],\r\n })\r\n .then((alert) => alert.present());\r\n this.utils.setStateLoading(false);\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Abre os pedidos realizados\r\n */\r\n callOpenOrdersPage() {\r\n this.modalController\r\n .create({\r\n component: OrdersPage,\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { UserInformationPage } from './user-information.page';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: UserInformationPage\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class UserInformationPageRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { UserInformationPageRoutingModule } from './user-information-routing.module';\r\n\r\nimport { UserInformationPage } from './user-information.page';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n UserInformationPageRoutingModule,\r\n ],\r\n declarations: [UserInformationPage],\r\n exports: [UserInformationPage]\r\n})\r\nexport class UserInformationPageModule {}\r\n","export default \".fade-in {\\n animation: fade-in 1s linear forwards;\\n}\\n\\n@keyframes fade-in {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvY2FydC1uZXcvdXNlci1pbmZvcm1hdGlvbi9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxwYWdlc1xcY2FydC1uZXdcXHVzZXItaW5mb3JtYXRpb25cXHVzZXItaW5mb3JtYXRpb24ucGFnZS5zY3NzIiwic3JjL2FwcC9wYWdlcy9jYXJ0LW5ldy91c2VyLWluZm9ybWF0aW9uL3VzZXItaW5mb3JtYXRpb24ucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0kscUNBQUE7QUNDSjs7QURFQTtFQUNJO0lBQ0ksVUFBQTtFQ0NOO0VEQ0U7SUFDSSxVQUFBO0VDQ047QUFDRiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2NhcnQtbmV3L3VzZXItaW5mb3JtYXRpb24vdXNlci1pbmZvcm1hdGlvbi5wYWdlLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuZmFkZS1pbiB7XHJcbiAgICBhbmltYXRpb246IGZhZGUtaW4gMXMgbGluZWFyIGZvcndhcmRzO1xyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGUtaW4ge1xyXG4gICAgMCUge1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICB9XHJcbiAgICAxMDAlIHtcclxuICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgfVxyXG59IiwiLmZhZGUtaW4ge1xuICBhbmltYXRpb246IGZhZGUtaW4gMXMgbGluZWFyIGZvcndhcmRzO1xufVxuXG5Aa2V5ZnJhbWVzIGZhZGUtaW4ge1xuICAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59Il19 */\";","import { Component, OnInit, Input } from \"@angular/core\";\r\n\r\nimport { ModalController, IonInput, AlertController } from \"@ionic/angular\";\r\n\r\nimport { Card } from \"../../../models/payment/card.model\";\r\nimport { CartService } from \"../../../services/cart.service\";\r\nimport { Localizacao } from \"../../../models/address/localizacao.model\";\r\nimport { RestaurantService } from \"../../../services/restaurant.service\";\r\nimport { StorageService } from \"../../../services/storage.service\";\r\nimport { Utils } from \"../../../shared/util\";\r\nimport { environment } from \"../../../../environments/environment\";\r\n\r\n@Component({\r\n selector: \"app-user-information\",\r\n templateUrl: \"./user-information.page.html\",\r\n styleUrls: [\"./user-information.page.scss\"],\r\n})\r\nexport class UserInformationPage implements OnInit {\r\n data: {\r\n userName?: string;\r\n cardNumber?: number;\r\n cardCvv?: number;\r\n expiration?: string;\r\n cpf?: number;\r\n fone?: number;\r\n endereco?: Localizacao;\r\n email?: string;\r\n marketing?: boolean;\r\n } = new Object({ endereco: new Localizacao() });\r\n keys: {\r\n key: string;\r\n label: string;\r\n greetings?: string;\r\n mask?: string;\r\n minLength?: number;\r\n inputId: string;\r\n }[] = [\r\n { key: \"userName\", label: \"Nome\", minLength: 1, inputId: \"nome-input\" },\r\n {\r\n key: \"cpf\",\r\n label: \"CPF\",\r\n mask: \"numberToCpf\",\r\n minLength: 14,\r\n inputId: \"cpf-input\",\r\n },\r\n {\r\n key: \"cardNumber\",\r\n label: \"Cartão\",\r\n mask: \"cardNumber\",\r\n minLength: 19,\r\n inputId: \"numero-input\",\r\n },\r\n {\r\n key: \"cardCvv\",\r\n label: \"CVV\",\r\n mask: \"cardCvv\",\r\n minLength: 3,\r\n inputId: \"cvv-input\",\r\n },\r\n {\r\n key: \"expiration\",\r\n label: \"Validade\",\r\n mask: \"cardExpDate\",\r\n minLength: 5,\r\n inputId: \"exp-input\",\r\n },\r\n ];\r\n options: {\r\n aquisition?: number;\r\n payment?: number;\r\n trocoPara?: number;\r\n observation?: string;\r\n } = {\r\n aquisition: 1,\r\n trocoPara: 0,\r\n };\r\n public trocoFormatted: string;\r\n private inputValue: IonInput;\r\n public slide: number = 0;\r\n public submitting: boolean;\r\n public appMode: string;\r\n public addressFormIsOpen: boolean;\r\n public paymentMethod: number = 1;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n public cart: CartService,\r\n private modalCtrl: ModalController,\r\n public restaurantService: RestaurantService,\r\n private storage: StorageService,\r\n public utils: Utils\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.appMode = \"qrcode\";\r\n const data = this.storage.getSessionData(\"user-information\");\r\n if (data && !data.endereco) data.endereco = new Localizacao();\r\n if (data) this.data = data || new Object({ endereco: new Localizacao() });\r\n if (Localizacao.isValid(this.data.endereco).isValid)\r\n this.addressFormIsOpen = true;\r\n setTimeout(() => {\r\n this.inputValue = document.getElementById(\r\n \"nome-input\"\r\n ) as any as IonInput;\r\n this.inputValue.setFocus();\r\n }, 1000);\r\n }\r\n\r\n dismiss(success?: boolean) {\r\n this.modalCtrl.dismiss({ success });\r\n }\r\n\r\n next() {\r\n this.utils.setStateLoading(true);\r\n if (this.trocoFormatted != \"0\" && this.trocoFormatted)\r\n this.options.trocoPara = Number(\r\n this.trocoFormatted.replace(\", \", \".\").replace(\",\", \".\")\r\n );\r\n if (\r\n this.options.trocoPara < this.cart.getTotalValue() &&\r\n this.options.trocoPara != 0\r\n ) {\r\n this.utils.setStateLoading(false);\r\n return this.utils.showToast({\r\n message: \"Troco não pode ser menor que o valor do pedido\",\r\n });\r\n }\r\n\r\n for (const [index, field] of this.keys.entries()) {\r\n const inputValue = document.getElementById(\r\n field.inputId\r\n ) as any as IonInput;\r\n this.data[this.keys[index].key] = inputValue?.value;\r\n }\r\n if (\r\n this.appMode == \"pedido\" &&\r\n !this.utils.cpfIsValid(this.data.cpf) &&\r\n this.paymentMethod == 1\r\n ) {\r\n this.utils.setStateLoading(false);\r\n return this.utils.showAlert({ message: \"CPF inválido\" });\r\n }\r\n this.slide++;\r\n this.storage.setSessionData(\"user-information\", this.data);\r\n this.utils.setStateLoading(false);\r\n }\r\n\r\n back() {\r\n this.inputValue.value = this.data[this.keys[--this.slide].key];\r\n this.inputValue.setFocus();\r\n }\r\n\r\n prepareData() {\r\n this.utils.setStateLoading(true);\r\n this.submitting = true;\r\n\r\n if (this.appMode == \"qrcode\") {\r\n this.cart\r\n .sendOrder({\r\n userZimmer: {\r\n aceitaMarketing: this.data.marketing,\r\n bairro: this.data.endereco.bairro,\r\n cep: this.data.endereco.cep,\r\n cidade: this.data.endereco.localidade,\r\n email: this.data.email,\r\n estado: this.data.endereco.uf,\r\n fone: (this.data.fone + \"\").replace(/[^0-9]/gm, \"\"),\r\n logradouro: this.data.endereco.logradouro,\r\n nome: this.data.userName,\r\n restauranteId: this.restaurantService.getRestaurant().restauranteId,\r\n },\r\n })\r\n .subscribe((response) => {\r\n this.utils.setStateLoading(false);\r\n this.alertCtrl\r\n .create({\r\n header: \"Prontinho!\",\r\n message: \"Pedido encaminhado!\",\r\n buttons: [{ text: \"OK\", handler: () => this.dismiss() }],\r\n })\r\n .then((alert) => alert.present().then(() => alert.onDidDismiss()));\r\n });\r\n } else if (this.appMode == \"pedido\") {\r\n if (this.paymentMethod == 1) {\r\n const card = new Card();\r\n const dateExp = this.data.expiration.split(\"/\");\r\n\r\n card.cvv = (this.data.cardCvv + \"\").replace(/[^0-9]/gm, \"\");\r\n card.num = Number((this.data.cardNumber + \"\").replace(/[^0-9]/gm, \"\"));\r\n card.titular = this.data.userName;\r\n card.cpf = Number((this.data.cpf + \"\").replace(/[^0-9]/gm, \"\"));\r\n\r\n card.monthExp = Number(dateExp[0].replace(/[^0-9]/gm, \"\"));\r\n const yExp = \"0\" + dateExp[1].replace(/[^0-9]/gm, \"\");\r\n card.yearExp = Number(yExp.length == 2 ? \"20\" + yExp : \"2\" + yExp);\r\n\r\n const extraData = this.data;\r\n\r\n this.cart.doOrderWithOnlinePayment(card, extraData).subscribe({\r\n next: (result) => {\r\n this.utils.setStateLoading(false);\r\n\r\n if (result.success) {\r\n this.storage.save(\"ficha\", result.pedido);\r\n this.alertCtrl\r\n .create({\r\n header: result.pedido ? \"Senha: \" + result.pedido : \"\",\r\n message:\r\n \"Seu pedido foi encaminhado para o preparo!
No momento de retirá-lo chamaremos sua senha pelo painel!
Obrigado e Bom Apetite!\",\r\n buttons: [\r\n { text: \"OK\", handler: () => this.dismiss(result.success) },\r\n ],\r\n })\r\n .then((alert) =>\r\n alert\r\n .present()\r\n .then(() =>\r\n alert\r\n .onDidDismiss()\r\n .then(() =>\r\n this.modalCtrl.dismiss(\r\n undefined,\r\n undefined,\r\n environment.modals.cartNewId\r\n )\r\n )\r\n )\r\n );\r\n } else {\r\n this.alertCtrl\r\n .create({\r\n header: \"Algo deu errado!\",\r\n message: result.message,\r\n buttons: [{ text: \"FECHAR\", handler: () => this.dismiss() }],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n },\r\n error: () => {\r\n this.utils.setStateLoading(false);\r\n this.alertCtrl\r\n .create({\r\n header: \"Algo deu errado!\",\r\n buttons: [{ text: \"FECHAR\", handler: () => this.dismiss() }],\r\n })\r\n .then((alert) => alert.present());\r\n },\r\n });\r\n } else {\r\n this.cart\r\n .sendOrder({\r\n userZimmer: {\r\n aceitaMarketing: this.data.marketing,\r\n bairro: this.data.endereco.bairro,\r\n cep: this.data.endereco.cep,\r\n cidade: this.data.endereco.localidade,\r\n email: this.data.email,\r\n estado: this.data.endereco.uf,\r\n fone: (this.data.fone + \"\").replace(/[^0-9]/gm, \"\"),\r\n logradouro: this.data.endereco.logradouro,\r\n nome: this.data.userName,\r\n restauranteId:\r\n this.restaurantService.getRestaurant().restauranteId,\r\n },\r\n })\r\n .subscribe((response) => {\r\n this.utils.setStateLoading(false);\r\n this.alertCtrl\r\n .create({\r\n header: response ? \"Senha: \" + response : \"\",\r\n message:\r\n \"Seu pedido foi encaminhado ao caixa!
Dirija-se ao caixa e efetue o pagamento para que seu pedido seja preparado! Memorize sua senha!
Estamos aguardando você! Obrigado!\",\r\n buttons: [{ text: \"OK\", handler: () => this.dismiss(true) }],\r\n })\r\n .then((alert) => alert.present());\r\n });\r\n }\r\n } else {\r\n const phone = Number(\r\n \"55\" +\r\n (\r\n (this.restaurantService.getRestaurant().foneCelular ||\r\n this.storage.get(\"phoneNumber\")) + \"\"\r\n ).replace(/[^0-9]/, \"\")\r\n );\r\n const options = {\r\n aquisition: this.options.aquisition,\r\n endereco: this.data.endereco,\r\n number: phone,\r\n pagamento: this.options.payment,\r\n troco: this.options.trocoPara,\r\n userFone: this.data.fone,\r\n userName: this.data.userName,\r\n observation: this.options.observation,\r\n // paymentMethod: this.paymentMethod == 1 ? 'Dinheiro' : 'Cartão'\r\n };\r\n this.cart.sendOrderWhats(options);\r\n this.utils.setStateLoading(false);\r\n this.dismiss(true);\r\n }\r\n }\r\n\r\n minLengthIsValid(): boolean {\r\n if (this.appMode == \"pedido\") {\r\n if (this.paymentMethod == 1) {\r\n for (const field of this.keys) {\r\n const inputValue: IonInput = document.getElementById(\r\n field.inputId\r\n ) as any;\r\n if (field.minLength > (inputValue.value + \"\").trim().length)\r\n return false;\r\n }\r\n } else if (this.paymentMethod == 2) {\r\n const nameValue: IonInput = document.getElementById(\r\n \"nome-input\"\r\n ) as any;\r\n return (\r\n this.keys[0].minLength <= (nameValue.value + \"\").trim().length &&\r\n (this.data.fone + \"\").trim().length >= 14\r\n );\r\n }\r\n }\r\n if (this.appMode == \"zap\") {\r\n const inputValue: IonInput = document.getElementById(\r\n this.keys[0].inputId\r\n ) as any;\r\n if (this.keys[0].minLength > (inputValue.value + \"\").trim().length)\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n askCep(cep: string | number) {\r\n this.utils.setStateLoading(true);\r\n this.utils.askCep(cep).subscribe({\r\n next: (localizacao) => {\r\n this.data.endereco = localizacao;\r\n this.utils.setStateLoading(false);\r\n },\r\n error: (error) => {\r\n this.utils.showToast(error.message);\r\n this.utils.setStateLoading(false);\r\n },\r\n });\r\n }\r\n\r\n informationIsValid() {\r\n return (\r\n this.minLengthIsValid() &&\r\n (this.options.aquisition == 2\r\n ? Localizacao.isValid(this.data.endereco).isValid\r\n : true)\r\n );\r\n }\r\n}\r\n","export default \".bottom-div {\\n position: absolute;\\n width: 100%;\\n bottom: 0;\\n}\\n\\n.img-wrapper {\\n text-align: center;\\n}\\n\\n.img-wrapper img {\\n height: 256px;\\n}\\n\\n.text-dialog {\\n text-align: justify;\\n}\\n\\n.text-dialog ion-label {\\n font-size: 24px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvZGlhbG9nLXNjYW5uZXItcGFnZS9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxwYWdlc1xcZGlhbG9nLXNjYW5uZXItcGFnZVxcZGlhbG9nLXNjYW5uZXItcGFnZS5jb21wb25lbnQuc2NzcyIsInNyYy9hcHAvcGFnZXMvZGlhbG9nLXNjYW5uZXItcGFnZS9kaWFsb2ctc2Nhbm5lci1wYWdlLmNvbXBvbmVudC5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksa0JBQUE7RUFDQSxXQUFBO0VBQ0EsU0FBQTtBQ0NKOztBREVBO0VBQ0ksa0JBQUE7QUNDSjs7QURDSTtFQUNJLGFBQUE7QUNDUjs7QURHQTtFQUNJLG1CQUFBO0FDQUo7O0FERUk7RUFDSSxlQUFBO0FDQVIiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9kaWFsb2ctc2Nhbm5lci1wYWdlL2RpYWxvZy1zY2FubmVyLXBhZ2UuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuYm90dG9tLWRpdiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGJvdHRvbTogMDtcclxufVxyXG5cclxuLmltZy13cmFwcGVyIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHJcbiAgICBpbWcge1xyXG4gICAgICAgIGhlaWdodDogMjU2cHg7XHJcbiAgICB9XHJcbn1cclxuXHJcbi50ZXh0LWRpYWxvZyB7XHJcbiAgICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xyXG5cclxuICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgfVxyXG59IiwiLmJvdHRvbS1kaXYge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3R0b206IDA7XG59XG5cbi5pbWctd3JhcHBlciB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5pbWctd3JhcHBlciBpbWcge1xuICBoZWlnaHQ6IDI1NnB4O1xufVxuXG4udGV4dC1kaWFsb2cge1xuICB0ZXh0LWFsaWduOiBqdXN0aWZ5O1xufVxuLnRleHQtZGlhbG9nIGlvbi1sYWJlbCB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbn0iXX0= */\";","import { Component, OnInit } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\n\r\n@Component({\r\n selector: 'app-dialog-scanner-page',\r\n templateUrl: './dialog-scanner-page.component.html',\r\n styleUrls: ['./dialog-scanner-page.component.scss'],\r\n})\r\nexport class DialogScannerPageComponent implements OnInit {\r\n\r\n constructor(\r\n private modalCtrl: ModalController\r\n ) { }\r\n\r\n ngOnInit() {}\r\n\r\n dismiss(openQrCodePage: boolean = false) {\r\n this.modalCtrl.dismiss({\r\n confirm: openQrCodePage\r\n })\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { OperationGuard } from 'src/app/shared/guards/operation.guard';\r\nimport { environment } from 'src/environments/environment';\r\n\r\nimport { HomePage } from './home.page';\r\n\r\nconst routes: Routes = [\r\n { path: '', component: HomePage },\r\n {\r\n path: 'order',\r\n loadChildren: () => import('./order-details/order-details.module').then(m => m.OrderDetailsPageModule)\r\n },\r\n {\r\n path: 'orders',\r\n loadChildren: () => import('./orders/orders.module').then(m => m.OrdersPageModule)\r\n },\r\n {\r\n path: 'product-detail',\r\n loadChildren: () => import('../restaurant/products/product-detail/product-detail.module').then(m => m.ProductDetailPageModule)\r\n },\r\n {\r\n path: 'table',\r\n loadChildren: () => import('./table/table.module').then(m => m.TablePageModule)\r\n },\r\n {\r\n path: 'categorias',\r\n loadChildren: () => import('./category-new/category-new.module').then(m => m.CategoryNewPageModule),\r\n canActivate: [OperationGuard]\r\n },\r\n {\r\n path: `:${environment.routeParams.tableNumber}/:${environment.routeParams.prodCardStyle}`,\r\n component: HomePage\r\n },\r\n {\r\n path: `:${environment.routeParams.prodCardStyle}`,\r\n component: HomePage\r\n },\r\n {\r\n path: `:${environment.routeParams.phoneNumber}/:${environment.routeParams.prodCardStyle}`, // TODO Rota inalcançável - transfira para app component com phone number lá\r\n component: HomePage\r\n },\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class HomePageRoutingModule {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { BarcodeScanner } from '@ionic-native/barcode-scanner/ngx';\r\n\r\nimport { HomePageRoutingModule } from './home-routing.module';\r\nimport { HomePage } from './home.page';\r\nimport { SetDetailsModule } from '../../shared/components/set-details/set-details.module';\r\nimport { CheckDetailsModule } from '../../shared/components/check-details/check-details.module';\r\nimport { UserInformationPageModule } from '../cart-new/user-information/user-information.module';\r\nimport { CartNewPageModule } from '../cart-new/cart-new.module';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n HomePageRoutingModule,\r\n SetDetailsModule,\r\n CheckDetailsModule,\r\n UserInformationPageModule,\r\n CartNewPageModule\r\n ],\r\n providers: [\r\n BarcodeScanner,\r\n ],\r\n declarations: [HomePage]\r\n})\r\nexport class HomePageModule { }\r\n","export default \"~ .ion-radio .item-native {\\n padding-left: 0;\\n}\\n\\n.toolbar-container {\\n background-color: #f3f262 !important;\\n}\\n\\n.check-details-modal .modal-wrapper {\\n height: 250px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvaG9tZS9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxwYWdlc1xcaG9tZVxcaG9tZS5wYWdlLnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2hvbWUvaG9tZS5wYWdlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxlQUFBO0FDQ0o7O0FERUE7RUFDSSxvQ0FBQTtBQ0NKOztBREVBO0VBQ0ksYUFBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvcGFnZXMvaG9tZS9ob21lLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIn4uaW9uLXJhZGlvIC5pdGVtLW5hdGl2ZSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbn1cclxuXHJcbi50b29sYmFyLWNvbnRhaW5lciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMjYyICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi5jaGVjay1kZXRhaWxzLW1vZGFsIC5tb2RhbC13cmFwcGVyIHtcclxuICAgIGhlaWdodDogMjUwcHg7XHJcbn0iLCJ+IC5pb24tcmFkaW8gLml0ZW0tbmF0aXZlIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4udG9vbGJhci1jb250YWluZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmMjYyICFpbXBvcnRhbnQ7XG59XG5cbi5jaGVjay1kZXRhaWxzLW1vZGFsIC5tb2RhbC13cmFwcGVyIHtcbiAgaGVpZ2h0OiAyNTBweDtcbn0iXX0= */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { Router, ActivatedRoute } from \"@angular/router\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { flatMap, map, tap } from \"rxjs/operators\";\r\n\r\nimport { Platform } from \"@ionic/angular\";\r\n\r\nimport { AppComponent } from \"../../app.component\";\r\nimport { CartService } from \"../../services/cart.service\";\r\nimport { CategoryService } from \"../../services/category.service\";\r\nimport { RestaurantService } from \"../../services/restaurant.service\";\r\nimport { Category } from \"../../interfaces/category.interface\";\r\nimport { ProductService } from \"../../services/product.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { ConfigurationService } from \"../../services/configuration.service\";\r\nimport { environment } from \"../../../environments/environment\";\r\nimport { QrcodeService } from \"../../services/qrcode.service\";\r\nimport { ZimmerStorage } from \"../../models/zimmerStorage.model\";\r\nimport { Utils } from \"src/app/shared/util\";\r\n\r\n@Component({\r\n selector: \"app-home\",\r\n templateUrl: \"./home.page.html\",\r\n styleUrls: [\"./home.page.scss\"],\r\n})\r\nexport class HomePage implements OnInit {\r\n /**\r\n * Usado para dizer quando tudo foi carregado e renderizado para mostrar o ion-header\r\n */\r\n load: boolean;\r\n web: boolean;\r\n /**\r\n * Não é pra abrir o cardápio\r\n */\r\n notOpen: boolean;\r\n /**\r\n * Mensagem a ser mostrada caso a página fique na home\r\n */\r\n message: string;\r\n /**\r\n * Caminho do gif que será renderizado na home\r\n */\r\n cat: string;\r\n\r\n constructor(\r\n protected appComponent: AppComponent,\r\n public cart: CartService,\r\n private config: ConfigurationService,\r\n private categoryService: CategoryService,\r\n private productService: ProductService,\r\n private qrcodeScanner: QrcodeService,\r\n private restaurantService: RestaurantService,\r\n private route: ActivatedRoute,\r\n private router: Router,\r\n private storage: StorageService,\r\n private utils: Utils,\r\n platform: Platform\r\n ) {\r\n this.web = platform.is(\"mobileweb\") || platform.is(\"desktop\");\r\n }\r\n\r\n /**\r\n * Configura o app conforme a url\r\n */\r\n ngOnInit() {\r\n this.route.params\r\n .pipe(\r\n flatMap((params) => {\r\n const config = {\r\n mode: params[environment.routeParams.appMode],\r\n cnpj: params[environment.routeParams.cnpj],\r\n phoneNumber: params[environment.routeParams.phoneNumber],\r\n prodCardStyle: params[environment.routeParams.prodCardStyle],\r\n tableNumber: params[environment.routeParams.tableNumber],\r\n };\r\n return this.config.config(config).pipe(map(() => params));\r\n }),\r\n flatMap((params) =>\r\n this.restaurantService\r\n .getByCnpj(params[environment.routeParams.cnpj])\r\n .pipe(tap((rest) => this.restaurantService.setRestaurant(rest)))\r\n ),\r\n flatMap((restaurant) => this.loadCategories(restaurant.restauranteId))\r\n )\r\n .subscribe({\r\n next: (categories) => {\r\n this.categoryService.setCategories(categories);\r\n this.load = true;\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Redireciona pra página de categorias\r\n */\r\n ionViewDidEnter() {\r\n console.log(\"Entrou no scan\");\r\n\r\n const configs = this.config.getConfig();\r\n if (configs?.mode) {\r\n const rest = this.restaurantService.getRestaurant();\r\n /*if(rest.isOperation && rest.estaAtendendo)*/ this.router.navigate([\r\n \"home\",\r\n \"categorias\",\r\n ]);\r\n } else {\r\n this.qrcodeScanner\r\n .scan({\r\n useNativePlugin: !this.web,\r\n side: \"back\",\r\n })\r\n .subscribe({\r\n next: (text) => {\r\n if (text.substr(0, 4).includes(\"http\")) {\r\n if (this.web) window.location.href = text;\r\n else {\r\n const parameters = text.split(\"/\");\r\n const mode = parameters[3] as\r\n | \"zap\"\r\n | \"qrcode\"\r\n | \"pedido\"\r\n | \"menu\"\r\n | \"ficha\"\r\n | \"gestor\";\r\n const cnpj = parameters[4];\r\n const cardStyle =\r\n mode == environment.appModes.table\r\n ? parameters[5]\r\n : parameters[6];\r\n const tableNumber =\r\n mode == environment.appModes.table\r\n ? Number(parameters[6] || parameters[5] || 0)\r\n : undefined;\r\n const phoneNumber =\r\n mode == environment.appModes.zap\r\n ? Number(parameters[5])\r\n : undefined;\r\n\r\n this.config\r\n .config({\r\n cnpj,\r\n mode,\r\n prodCardStyle: Number(cardStyle),\r\n tableNumber,\r\n phoneNumber,\r\n })\r\n .subscribe({\r\n next: () => {\r\n this.router.navigate([\"home\", \"categorias\"]);\r\n },\r\n error: (e) => alert(e),\r\n });\r\n }\r\n } else if (text.includes(environment.storage.appMode + \": \")) {\r\n const jsonConfigs: ZimmerStorage = JSON.parse(text);\r\n this.config\r\n .config({\r\n cnpj: jsonConfigs.cnpj,\r\n mode: jsonConfigs.mode,\r\n phoneNumber: jsonConfigs.phoneNumber,\r\n prodCardStyle: jsonConfigs.preferences.categoryProdCardStyle,\r\n tableNumber: jsonConfigs.tableNumber,\r\n })\r\n .subscribe({\r\n next: () => this.router.navigate([\"home\", \"categorias\"]),\r\n error: (e) => this.utils.showToast(e),\r\n });\r\n }\r\n },\r\n error: (e) => this.utils.showToast(e),\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Abre o um modal do carrinho\r\n */\r\n openCart() {\r\n const items = this.cart.getAllItems();\r\n this.cart.showCart(items);\r\n }\r\n\r\n /**\r\n * @returns Subscription de um observable das categorias com os produtos\r\n */\r\n loadCategories(restauranteId: number): Observable {\r\n return this.productService.getAll().pipe(\r\n map((r) => {\r\n // retira os resultados da requisiçao\r\n const result: any[] = (r as any).results;\r\n\r\n // Mapeia os resultados e retorna as categorias com os campos organizados para o funcionamento do app\r\n const categories = result.map((v) => {\r\n let category: Category = new Object() as Category;\r\n const keys = Object.keys(v.categoria);\r\n keys.forEach((key) => {\r\n category[key] = v.categoria[key];\r\n });\r\n category.produtos = v.produtos;\r\n // category.complementos = v.complemento;\r\n return category;\r\n });\r\n return categories;\r\n })\r\n );\r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2hvbWUvb3JkZXJzL29yZGVycy5wYWdlLnNjc3MifQ== */\";","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { ModalController } from '@ionic/angular';\r\n\r\nimport { CartService } from '../../../services/cart.service';\r\nimport { ItemPage } from '../../item/item.page';\r\nimport { ItemCart } from '../../../interfaces/itemCart.interface';\r\nimport { AuthService } from '../../../shared/auth.service';\r\nimport { Utils } from '../../../shared/util';\r\nimport { OrderService } from '../../../services/order.service';\r\nimport { OrderResponse } from 'src/app/models/order/order-response.model';\r\nimport { Observable } from 'rxjs';\r\nimport { CartNewPage } from '../../cart-new/cart-new.page';\r\n\r\n// Página de vizualização de pedidos já realizados\r\n@Component({\r\n selector: 'app-orders',\r\n templateUrl: './orders.page.html',\r\n styleUrls: ['./orders.page.scss'],\r\n})\r\nexport class OrdersPage implements OnInit {\r\n\r\n orders$: Observable\r\n\r\n constructor(\r\n protected auth: AuthService,\r\n public cartService: CartService,\r\n private ordersService: OrderService,\r\n protected modalController: ModalController,\r\n public utils: Utils\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.loadOrders()\r\n }\r\n\r\n // Abre um modal com os detalhes dp produto\r\n showDetails(item: ItemCart) {\r\n this.modalController.create({\r\n component: ItemPage,\r\n componentProps: {\r\n itemCart: item,\r\n readOnly: true\r\n },\r\n cssClass: 'modal-fullscreen'\r\n }).then(modal => modal.present())\r\n }\r\n\r\n loadOrders() {\r\n // if(this.auth.getUser()) {\r\n // this.cartService.getOrderByUserId(this.auth.getUser().userID).subscribe(result => {\r\n // this.orders = result;\r\n // })\r\n // } else {\r\n // this.modalController.create({\r\n // component: LoginPage,\r\n // }).then(modal => modal.present());\r\n // }\r\n this.orders$ = this.ordersService.getOrders()\r\n }\r\n\r\n getDateFromOrder(date: string) {\r\n const dateObj = new Date(date)\r\n return dateObj.getHours() + ':' + dateObj.getMinutes()\r\n }\r\n\r\n callCartDetail(order: OrderResponse) {\r\n this.modalController.create({\r\n component: CartNewPage,\r\n componentProps: {\r\n order,\r\n readOnly: true\r\n },\r\n id: 'cart-' + order.pedidoId\r\n }).then(modal => modal.present())\r\n }\r\n\r\n closeCart() {\r\n this.modalController.dismiss()\r\n }\r\n}\r\n","export default \".cart-icon {\\n z-index: 2000;\\n cursor: pointer;\\n}\\n\\n.cart-icon:hover {\\n color: #00ff00;\\n}\\n\\n.cart-icon.shaking {\\n animation: wobble-hor-top ease normal both 0.8s;\\n}\\n\\n.cart-icon.shaking.adding {\\n color: #00ff00;\\n}\\n\\n.cart-icon.shaking.removing {\\n color: red;\\n}\\n\\n.select-complement.selected {\\n background-color: #2dd36f;\\n}\\n\\n.options-done {\\n background-color: #2dd36f;\\n}\\n\\n.quantity-badge {\\n transition-duration: 0.5s;\\n}\\n\\n.list-header-half {\\n padding-left: 5px;\\n}\\n\\n.name-half {\\n padding-left: 0;\\n}\\n\\n.text-half {\\n font-weight: bold;\\n font-size: 22px;\\n}\\n\\n.quantity-half {\\n text-align: right;\\n}\\n\\n.option-list {\\n border-radius: 5px;\\n background-color: var(--ion-color-light);\\n margin-bottom: 0.7em;\\n}\\n\\n.option-button {\\n width: 48px;\\n}\\n\\n.option-button ion-icon {\\n --ionicon-stroke-width: 96px;\\n}\\n\\n.col-half {\\n max-height: 320px;\\n overflow-y: scroll;\\n scroll-behavior: smooth;\\n}\\n\\n.footer-toolbar {\\n --quantity-btn-width: 200px;\\n}\\n\\n.footer-toolbar .btn-quantity-wrapper {\\n display: inline;\\n padding: 20px;\\n width: var(--quantity-btn-width);\\n}\\n\\n.footer-toolbar .confirm-btn {\\n display: inline-block;\\n width: calc(100% - var(--quantity-btn-width));\\n}\\n\\n.btn-quantity {\\n --padding-start: 3px;\\n --padding-end: 3px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvaXRlbS9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxwYWdlc1xcaXRlbVxcaXRlbS5wYWdlLnNjc3MiLCJzcmMvYXBwL3BhZ2VzL2l0ZW0vaXRlbS5wYWdlLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDSSxhQUFBO0VBQ0EsZUFBQTtBQ0NKOztBREVBO0VBQ0ksY0FBQTtBQ0NKOztBREVBO0VBQ0ksK0NBQUE7QUNDSjs7QURFQTtFQUNJLGNBQUE7QUNDSjs7QURFQTtFQUNJLFVBQUE7QUNDSjs7QURFQTtFQUNJLHlCQUFBO0FDQ0o7O0FERUE7RUFDSSx5QkFBQTtBQ0NKOztBREVBO0VBQ0kseUJBQUE7QUNDSjs7QURFQTtFQUNJLGlCQUFBO0FDQ0o7O0FERUE7RUFDSSxlQUFBO0FDQ0o7O0FERUE7RUFDSSxpQkFBQTtFQUNBLGVBQUE7QUNDSjs7QURFQTtFQUNJLGlCQUFBO0FDQ0o7O0FERUE7RUFDSSxrQkFBQTtFQUNBLHdDQUFBO0VBQ0Esb0JBQUE7QUNDSjs7QURFQTtFQUNJLFdBQUE7QUNDSjs7QURDSTtFQUNJLDRCQUFBO0FDQ1I7O0FER0E7RUFDSSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7QUNBSjs7QURHQTtFQUNJLDJCQUFBO0FDQUo7O0FEQ0k7RUFDSSxlQUFBO0VBQ0EsYUFBQTtFQUNBLGdDQUFBO0FDQ1I7O0FEQ0k7RUFDSSxxQkFBQTtFQUNBLDZDQUFBO0FDQ1I7O0FER0E7RUFDSSxvQkFBQTtFQUNBLGtCQUFBO0FDQUoiLCJmaWxlIjoic3JjL2FwcC9wYWdlcy9pdGVtL2l0ZW0ucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmNhcnQtaWNvbiB7XHJcbiAgICB6LWluZGV4OiAyMDAwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uY2FydC1pY29uOmhvdmVyIHtcclxuICAgIGNvbG9yOiAjMDBmZjAwO1xyXG59XHJcblxyXG4uY2FydC1pY29uLnNoYWtpbmcge1xyXG4gICAgYW5pbWF0aW9uOiB3b2JibGUtaG9yLXRvcCBlYXNlIG5vcm1hbCBib3RoIDAuOHM7XHJcbn1cclxuXHJcbi5jYXJ0LWljb24uc2hha2luZy5hZGRpbmcge1xyXG4gICAgY29sb3I6ICMwMGZmMDA7XHJcbn1cclxuXHJcbi5jYXJ0LWljb24uc2hha2luZy5yZW1vdmluZyB7XHJcbiAgICBjb2xvcjogcmVkO1xyXG59XHJcblxyXG4uc2VsZWN0LWNvbXBsZW1lbnQuc2VsZWN0ZWQge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzJkZDM2ZjtcclxufVxyXG5cclxuLm9wdGlvbnMtZG9uZSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmRkMzZmO1xyXG59XHJcblxyXG4ucXVhbnRpdHktYmFkZ2Uge1xyXG4gICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogLjVzO1xyXG59XHJcblxyXG4ubGlzdC1oZWFkZXItaGFsZiB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLm5hbWUtaGFsZiB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbn1cclxuXHJcbi50ZXh0LWhhbGYge1xyXG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICBmb250LXNpemU6IDIycHg7XHJcbn1cclxuXHJcbi5xdWFudGl0eS1oYWxmIHtcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG59XHJcblxyXG4ub3B0aW9uLWxpc3Qge1xyXG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcclxuICAgIG1hcmdpbi1ib3R0b206IC43ZW07XHJcbn1cclxuXHJcbi5vcHRpb24tYnV0dG9uIHtcclxuICAgIHdpZHRoOiA0OHB4O1xyXG5cclxuICAgIGlvbi1pY29uIHtcclxuICAgICAgICAtLWlvbmljb24tc3Ryb2tlLXdpZHRoOiA5NnB4O1xyXG4gICAgfVxyXG59XHJcblxyXG4uY29sLWhhbGYge1xyXG4gICAgbWF4LWhlaWdodDogMzIwcHg7XHJcbiAgICBvdmVyZmxvdy15OiBzY3JvbGw7XHJcbiAgICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcclxufVxyXG5cclxuLmZvb3Rlci10b29sYmFyIHtcclxuICAgIC0tcXVhbnRpdHktYnRuLXdpZHRoOiAyMDBweDtcclxuICAgIC5idG4tcXVhbnRpdHktd3JhcHBlciB7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgICAgd2lkdGg6IHZhcigtLXF1YW50aXR5LWJ0bi13aWR0aCk7XHJcbiAgICB9XHJcbiAgICAuY29uZmlybS1idG4ge1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tcXVhbnRpdHktYnRuLXdpZHRoKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5idG4tcXVhbnRpdHkge1xyXG4gICAgLS1wYWRkaW5nLXN0YXJ0OiAzcHg7XHJcbiAgICAtLXBhZGRpbmctZW5kOiAzcHg7XHJcbn0iLCIuY2FydC1pY29uIHtcbiAgei1pbmRleDogMjAwMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY2FydC1pY29uOmhvdmVyIHtcbiAgY29sb3I6ICMwMGZmMDA7XG59XG5cbi5jYXJ0LWljb24uc2hha2luZyB7XG4gIGFuaW1hdGlvbjogd29iYmxlLWhvci10b3AgZWFzZSBub3JtYWwgYm90aCAwLjhzO1xufVxuXG4uY2FydC1pY29uLnNoYWtpbmcuYWRkaW5nIHtcbiAgY29sb3I6ICMwMGZmMDA7XG59XG5cbi5jYXJ0LWljb24uc2hha2luZy5yZW1vdmluZyB7XG4gIGNvbG9yOiByZWQ7XG59XG5cbi5zZWxlY3QtY29tcGxlbWVudC5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZGQzNmY7XG59XG5cbi5vcHRpb25zLWRvbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmRkMzZmO1xufVxuXG4ucXVhbnRpdHktYmFkZ2Uge1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xufVxuXG4ubGlzdC1oZWFkZXItaGFsZiB7XG4gIHBhZGRpbmctbGVmdDogNXB4O1xufVxuXG4ubmFtZS1oYWxmIHtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuXG4udGV4dC1oYWxmIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGZvbnQtc2l6ZTogMjJweDtcbn1cblxuLnF1YW50aXR5LWhhbGYge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cblxuLm9wdGlvbi1saXN0IHtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICBtYXJnaW4tYm90dG9tOiAwLjdlbTtcbn1cblxuLm9wdGlvbi1idXR0b24ge1xuICB3aWR0aDogNDhweDtcbn1cbi5vcHRpb24tYnV0dG9uIGlvbi1pY29uIHtcbiAgLS1pb25pY29uLXN0cm9rZS13aWR0aDogOTZweDtcbn1cblxuLmNvbC1oYWxmIHtcbiAgbWF4LWhlaWdodDogMzIwcHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG59XG5cbi5mb290ZXItdG9vbGJhciB7XG4gIC0tcXVhbnRpdHktYnRuLXdpZHRoOiAyMDBweDtcbn1cbi5mb290ZXItdG9vbGJhciAuYnRuLXF1YW50aXR5LXdyYXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIHdpZHRoOiB2YXIoLS1xdWFudGl0eS1idG4td2lkdGgpO1xufVxuLmZvb3Rlci10b29sYmFyIC5jb25maXJtLWJ0biB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXF1YW50aXR5LWJ0bi13aWR0aCkpO1xufVxuXG4uYnRuLXF1YW50aXR5IHtcbiAgLS1wYWRkaW5nLXN0YXJ0OiAzcHg7XG4gIC0tcGFkZGluZy1lbmQ6IDNweDtcbn0iXX0= */\";","import { Component, OnInit, Input } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nimport { ModalController, AlertController } from '@ionic/angular';\r\n\r\nimport { CartService } from '../../services/cart.service';\r\nimport { ItemCart } from '../../interfaces/itemCart.interface';\r\nimport { Product } from '../../models/produto.model';\r\nimport { ProductOptionType, ProductOption } from '../../interfaces/product-option.interface';\r\nimport { ProductService } from '../../services/product.service';\r\nimport { RestaurantService } from '../../services/restaurant.service';\r\nimport { Utils } from '../../shared/util';\r\nimport { Half } from '../../models/half.model';\r\n\r\n@Component({\r\n selector: 'app-item',\r\n templateUrl: './item.page.html',\r\n styleUrls: ['./item.page.scss'],\r\n})\r\nexport class ItemPage implements OnInit {\r\n\r\n /**\r\n * Função para abrir o carrinho\r\n */\r\n @Input() openCartFn: any // TODO revisar necessidade\r\n /**\r\n * Item do carrinho passado. eg: usado quando o produto já está no carrinho\r\n */\r\n @Input() itemCart: ItemCart // TODO Revisar possibilidade de usar valor default = new ItemCart()\r\n /**\r\n * Produto do item do carrinho\r\n */\r\n @Input() prod?: Product\r\n /**\r\n * Diz se o item é editável. Usado depois que o pedido foi finalizado\r\n */\r\n @Input() readOnly: boolean\r\n\r\n item: ItemCart = new ItemCart() // \r\n /**\r\n * Diz se o item é novo ou está sendo editado\r\n */\r\n mode: 'new'|'edit' = 'new' // TODO revisar necessidade de variável\r\n /**\r\n * Observação do item\r\n */\r\n obs: string // TODO Revisar possibilidade de usar diretamente no item e não em uma variável\r\n\r\n /**\r\n * Contém um observable com as opções do produto\r\n */\r\n options$: Observable = new Observable()\r\n /**\r\n * Inscrição de $options\r\n */\r\n sub_options: Subscription\r\n /**\r\n * Observable de meio a meios. Só serão requisitados caso o numberMeioMeio do produto seja > 1\r\n */\r\n meios$: Observable\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n public cart: CartService,\r\n protected modalController: ModalController,\r\n private productService: ProductService,\r\n public restaurantService: RestaurantService,\r\n public utils: Utils\r\n ) { }\r\n\r\n ngOnInit() {\r\n // Caso nenhum Item seja passado na criação do modal/page ele irá criar um\r\n this.options$ = this.productService.getOptions(this.prod?.produtoId || this.itemCart.produto.produtoId)\r\n this.meios$ = this.productService.getHalfs(this.prod?.produtoId || this.itemCart.produto.produtoId)\r\n\r\n if(!this.itemCart) {\r\n this.item = new ItemCart()\r\n this.item.id = this.cart.getAllItems().length + 1\r\n this.item.produto = this.prod\r\n this.item.number = 1\r\n // this.item.complementos = []\r\n this.item.observacao = ''\r\n this.obs = ''\r\n } else {\r\n const keys = Object.keys(this.itemCart)\r\n keys.forEach(key => this.item[key] = this.itemCart[key])\r\n this.mode = 'edit'\r\n this.obs = this.itemCart.observacao\r\n }\r\n }\r\n\r\n /**\r\n * Fecha o modal\r\n */\r\n closeItemDetails() {\r\n this.modalController.dismiss()\r\n }\r\n\r\n /**\r\n * Tira o produto do carrinho\r\n * @deprecated\r\n * @param product \r\n */\r\n throwFromCart(product: Product) {\r\n this.cart.removeItem(product.produtoId)\r\n this.utils.animate('shaking removing', 'cart-icon', 'class', 900)\r\n }\r\n\r\n /**\r\n * Adiciona o item no carrinho\r\n * @param item \r\n */\r\n addToCart(item: ItemCart) {\r\n this.item.observacao = this.obs\r\n const sub_options = this.options$.subscribe(options => {\r\n let error: boolean // Se existir algum erro nas validações, deve ser passado true para essa variável\r\n\r\n // Checagem de opcionais\r\n for(const option of options) {\r\n const qtd = this.getQtdSelected(option.produtosOpcaoTipoId)\r\n\r\n if(option.obrigatorio && option.quantidade > qtd) {\r\n this.alertCtrl.create({\r\n header: 'Ops! Faltou algo',\r\n message: `A categoria ${option.nome} deve ter ${option.quantidade} escolhidos`\r\n }).then(alert => alert.present())\r\n error = true\r\n break\r\n } else if(option.qtdeMax < qtd) {\r\n this.alertCtrl.create({\r\n header: 'Ops!',\r\n message: `A categoria ${option.nome} deve ter no máximo ${option.qtdeMax} escolhidos`\r\n }).then(alert => alert.present())\r\n error = true\r\n break\r\n }\r\n }\r\n sub_options.unsubscribe()\r\n\r\n // Checagem de meio a meios\r\n if(this.item.produto.numberMeiomeio > 1)\r\n if(this.item.meiomeios.length < 2) {\r\n this.alertCtrl.create({\r\n header: 'Ops! Faltou algo',\r\n message: `Faltam ${this.item.produto.numberMeiomeio - this.item.meiomeios.length} sabores para serem escolhidos`\r\n }).then(alert => alert.present())\r\n error = true\r\n }\r\n\r\n // Caso não haja erros, adicionará o item no carrinho\r\n if(!error) {\r\n if(this.mode == 'new') {\r\n this.cart.setItem(item)\r\n this.utils.animate('shaking adding', 'cart-icon', 'class', 900)\r\n } else if(this.mode == 'edit') {\r\n this.cart.editItem(item)\r\n }\r\n this.closeItemDetails()\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Cara, por algum motivo eu passo a função de abrir o carrinho, mas não lembro porque\r\n * @deprecated\r\n */\r\n openCartTrigger() {\r\n this.openCartFn()\r\n }\r\n\r\n /**\r\n * Ignora isso aqui kkkl\r\n * @ignore\r\n */\r\n itsTimeToEat() {\r\n this.utils.showToast({\r\n message: 'É hora do rango',\r\n color: 'dark'\r\n })\r\n }\r\n\r\n /**\r\n * Troca as quantidades de opções\r\n * @obs A lógica tá bem chatinha de entender, então cuidado na hora de mexer\r\n * @param selectedOption \r\n * @param optionType \r\n */\r\n toggleOption(selectedOption: ProductOption, optionType: ProductOptionType) {\r\n /**\r\n * Index da primeira opção encontrada com o ID do tipo de opção que ela pertence // TODO Verificar necessidade\r\n */\r\n const productOptionIndex = this.item.cartItemOpcoes.findIndex(option => option.produtosOpcaoTipoId == optionType.produtosOpcaoTipoId)\r\n /**\r\n * Opção com o mesmo id da opção que está sendo selecionada\r\n */\r\n const oldOption = this.item.cartItemOpcoes.find(option => option.produtosOpcaoId == selectedOption.produtosOpcaoId)\r\n /**\r\n * Primeira opção do tipo de opção da opção que está sendo selecionada\r\n */\r\n const firstOptionFromType = this.item.cartItemOpcoes[productOptionIndex]\r\n /**\r\n * Quantidade de opções selecionadas daquele tipo de opção\r\n */\r\n const qtd = this.getQtdSelected(optionType.produtosOpcaoTipoId)\r\n\r\n // ? Quantidade máxima de opção é igual a 1?\r\n if(optionType.qtdeMax == 1)\r\n // SE a quantidade máxima é 1\r\n // ? Essa opção está no array de opções?\r\n if(productOptionIndex != -1)\r\n // SE essa opção está no array\r\n // ? Essa opção que está no array, tem o mesmo ID da opção que está sendo selecionada?\r\n if(firstOptionFromType.produtosOpcaoId == selectedOption.produtosOpcaoId)\r\n // SE essa opção tem o mesmo ID da opção que está sendo selecionada\r\n // ? Ela é obrigatória?\r\n if(!optionType.obrigatorio) {\r\n // SE NÃO é obrigatória\r\n // A quantidade é zerada e o item é retirado do array\r\n selectedOption.quantidade = 0\r\n this.item.cartItemOpcoes = this.item.cartItemOpcoes.filter(option => option.produtosOpcaoId != selectedOption.produtosOpcaoId)\r\n } else; // Se for obrigatória, nada acontece\r\n else {\r\n // SE essa opção NÃO tem o mesmo ID da opção que está sendo selecionada\r\n // A opção selecionada recebe a quantidade 1 e é inserida no array de opções no lugar da que estava (está substituindo ela)\r\n firstOptionFromType.quantidade = 0\r\n selectedOption.quantidade = 1\r\n this.item.cartItemOpcoes[productOptionIndex] = selectedOption\r\n }\r\n else {\r\n // SE essa opção não está no array de opções\r\n // Ela insere a opção nova no array com quantidade igual a 1\r\n selectedOption.quantidade = 1\r\n this.item.cartItemOpcoes.push(selectedOption)\r\n }\r\n else if(productOptionIndex == -1) {\r\n // SE a quantidade máxima do tipo de opção NÃO é igual a 1 \r\n // E(&&) ela NÃO está no array\r\n // Ela é adicionada\r\n selectedOption.quantidade = 1\r\n this.item.cartItemOpcoes.push(selectedOption)\r\n } else if(oldOption?.produtosOpcaoId == selectedOption.produtosOpcaoId)\r\n // SE a quantidade máxima NÃO é igual a 1\r\n // E(&&) ela ESTÁ no array\r\n // E(&&) o id dela é igual a opção que está sendo selecionada\r\n // O array de opções rece um novo array mas sem ela (remove a opção do array)\r\n this.item.cartItemOpcoes = this.item.cartItemOpcoes.filter(option => option.produtosOpcaoId != selectedOption.produtosOpcaoId)\r\n else if(qtd < optionType.qtdeMax) {\r\n // SE a quantidade máxima NÃO é igual a 1\r\n // E(&&) ela ESTÁ no array\r\n // E(&&) o id dela NÃO é igual a opção que está sendo selecionada\r\n // Inserido é a opção dentro do array com quantidade 1\r\n selectedOption.quantidade = 1\r\n this.item.cartItemOpcoes.push(selectedOption)\r\n }\r\n }\r\n\r\n addHalf(half: Half) {\r\n this.item.meiomeios.push(half)\r\n }\r\n\r\n removeHalf(half: Half) {\r\n const indexToRemove: number = this.item.meiomeios.findIndex(h => h.produtoId == half.produtoId)\r\n this.item.meiomeios = this.item.meiomeios.filter((value, index) => index != indexToRemove)\r\n }\r\n\r\n getHalfsQuantity(halfId?: number): number {\r\n return !halfId ? this.item.meiomeios.length : this.item.meiomeios.filter(half => half.produtoId == halfId).length\r\n }\r\n\r\n // Adicionar e remover produtos do item\r\n changeNumber(operation: 'add'|'remove') {\r\n this.item.number ? operation == \"add\" ? this.item.number++ : this.item.number-- : this.item.number = 1;\r\n }\r\n\r\n // Checa se o complemento está incluído\r\n hasOption(optionId: string) {\r\n return this.item.cartItemOpcoes.findIndex(option => option.produtosOpcaoId == optionId) != -1\r\n // return false\r\n }\r\n\r\n /**\r\n * Mostra a quantidade de opções selecionadas naquela categoria de opções\r\n * @param optionTypeId \r\n */\r\n getQtdSelected(optionTypeId: number) {\r\n let i = 0\r\n this.item.cartItemOpcoes.forEach(option => optionTypeId == option.produtosOpcaoTipoId && (i += (option.quantidade || 0)))\r\n return i\r\n }\r\n\r\n /**\r\n * Mostra a quantidade da opção selecionada\r\n */\r\n getOptionQtd(optionId: string|number) {\r\n const optionsIndex = this.item.cartItemOpcoes.findIndex(option => option.produtosOpcaoId == optionId)\r\n const option = this.item.cartItemOpcoes[optionsIndex]\r\n return option?.quantidade || 0\r\n }\r\n\r\n addOption(option: ProductOption, optionType: ProductOptionType, event?: MouseEvent) {\r\n if(event) event.stopPropagation()\r\n const qtd = this.getQtdSelected(optionType.produtosOpcaoTipoId)\r\n if(qtd < optionType.qtdeMax) {\r\n const optionIndex = this.item.cartItemOpcoes.findIndex(op => op.produtosOpcaoId == option.produtosOpcaoId)\r\n if(optionIndex == -1) (option.quantidade = 1) && this.item.cartItemOpcoes.push(option);\r\n else this.item.cartItemOpcoes[optionIndex].quantidade++\r\n }\r\n }\r\n\r\n removeOption(option: ProductOption, optionType: ProductOptionType, event?: MouseEvent) {\r\n if(event) event.stopPropagation()\r\n if(option.quantidade > 1) option.quantidade--\r\n else if(option.quantidade == 1) {\r\n option.quantidade--\r\n this.item.cartItemOpcoes = this.item.cartItemOpcoes.filter(op => option.produtosOpcaoId != op.produtosOpcaoId)\r\n }\r\n }\r\n\r\n getHalfQuantityInItem(half: Half) {\r\n return this.item.meiomeios.filter(h => h.produtoId == half.produtoId).length\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { LoginPage } from './login.page';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: LoginPage\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class LoginPageRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { LoginPageRoutingModule } from './login-routing.module';\r\n\r\nimport { LoginPage } from './login.page';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n IonicModule,\r\n LoginPageRoutingModule\r\n ],\r\n declarations: [LoginPage],\r\n exports: [\r\n LoginPage\r\n ]\r\n})\r\nexport class LoginPageModule {}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL2xvZ2luL2xvZ2luLnBhZ2Uuc2NzcyJ9 */\";","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\n\r\nimport { ModalController } from '@ionic/angular';\r\n\r\nimport { UserService } from '../../services/user.service';\r\nimport { RestaurantService } from '../../services/restaurant.service';\r\nimport { AuthService } from '../../shared/auth.service';\r\nimport { Utils } from '../../shared/util';\r\n\r\n// PÁGINA DE LOGIN DE USUÁRIO\r\n@Component({\r\n selector: 'app-login',\r\n templateUrl: './login.page.html',\r\n styleUrls: ['./login.page.scss'],\r\n})\r\nexport class LoginPage implements OnInit {\r\n asRestaurant: boolean = false;\r\n isLogin: boolean = true;\r\n fb: FormBuilder = new FormBuilder();\r\n form: FormGroup;\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private modalController: ModalController,\r\n public restaurantService: RestaurantService,\r\n private userService: UserService,\r\n public utils: Utils,\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.buildForm();\r\n }\r\n\r\n ionViewDidEnter() {\r\n }\r\n\r\n // Monta o formulário\r\n buildForm() {\r\n this.form = this.fb.group({\r\n email: [null],\r\n nome: [null],\r\n sobrenome: [null],\r\n senha: [null],\r\n })\r\n }\r\n\r\n closeModal() {\r\n this.modalController.dismiss();\r\n }\r\n\r\n registerUser() {\r\n this.userService.create(this.form.value).subscribe(data => {\r\n // if(!data?.errors) {\r\n this.utils.showToast({ message: data.message })\r\n if(!data?.errors) {\r\n this.lin(this.form.value.email, this.form.value.senha, 'user');\r\n }\r\n // } else {\r\n // console.error(data.message)\r\n // this.toastController.create({\r\n // message: 'Ops! Tivemos um problema :c',\r\n // duration: 1000\r\n // }).then(toast => toast.present())\r\n // }\r\n })\r\n }\r\n\r\n // Chama o serviço de autenticação para cliente ou restaurante\r\n lin(login: string, password: string, mode?: 'user'|'restaurant') {\r\n if(!this.asRestaurant) {\r\n this.auth.login(login, password, mode || 'user');\r\n } else {\r\n this.auth.login(login.replace(/[^0-9]/gm, ''), password, mode || 'restaurant');\r\n }\r\n }\r\n\r\n // maskInput(element: IonInput, mode) {\r\n // if(mode !='waiterPassword') {\r\n // element.value = this.utils.convert(element.value, mode);\r\n // } else {\r\n // element.value = this.utils.convert(element.value, 'onlyNumber').substr(0, 4);\r\n // }\r\n // }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\n\r\nimport { QrcodeScannerPage } from './qrcode-scanner.page';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: '',\r\n component: QrcodeScannerPage\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule],\r\n})\r\nexport class QrcodeScannerPageRoutingModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { QrcodeScannerPageRoutingModule } from './qrcode-scanner-routing.module';\r\n\r\nimport { QrcodeScannerPage } from './qrcode-scanner.page';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n QrcodeScannerPageRoutingModule\r\n ],\r\n declarations: [QrcodeScannerPage],\r\n exports: [QrcodeScannerPage]\r\n})\r\nexport class QrcodeScannerPageModule {}\r\n","export default \".qr-scanner {\\n width: 100%;\\n}\\n\\n.header-icon {\\n font-size: 28px;\\n}\\n\\n.qr-status {\\n position: absolute;\\n bottom: 0;\\n}\\n\\n.qr-img-status {\\n height: 30vw;\\n width: 30vw;\\n}\\n\\n.qr-label-status {\\n background-color: rgba(255, 255, 255, 0.6);\\n text-align: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvcGFnZXMvcXJjb2RlLXNjYW5uZXIvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxccGFnZXNcXHFyY29kZS1zY2FubmVyXFxxcmNvZGUtc2Nhbm5lci5wYWdlLnNjc3MiLCJzcmMvYXBwL3BhZ2VzL3FyY29kZS1zY2FubmVyL3FyY29kZS1zY2FubmVyLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLFdBQUE7QUNDSjs7QURFQTtFQUNJLGVBQUE7QUNDSjs7QURFQTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtBQ0NKOztBREVBO0VBQ0ksWUFBQTtFQUNBLFdBQUE7QUNDSjs7QURFQTtFQUNJLDBDQUFBO0VBQ0Esa0JBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3BhZ2VzL3FyY29kZS1zY2FubmVyL3FyY29kZS1zY2FubmVyLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5xci1zY2FubmVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uaGVhZGVyLWljb24ge1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG59XHJcblxyXG4ucXItc3RhdHVzIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogMDtcclxufVxyXG5cclxuLnFyLWltZy1zdGF0dXMge1xyXG4gICAgaGVpZ2h0OiAzMHZ3O1xyXG4gICAgd2lkdGg6IDMwdnc7XHJcbn1cclxuXHJcbi5xci1sYWJlbC1zdGF0dXMge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59IiwiLnFyLXNjYW5uZXIge1xuICB3aWR0aDogMTAwJTtcbn1cblxuLmhlYWRlci1pY29uIHtcbiAgZm9udC1zaXplOiAyOHB4O1xufVxuXG4ucXItc3RhdHVzIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBib3R0b206IDA7XG59XG5cbi5xci1pbWctc3RhdHVzIHtcbiAgaGVpZ2h0OiAzMHZ3O1xuICB3aWR0aDogMzB2dztcbn1cblxuLnFyLWxhYmVsLXN0YXR1cyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufSJdfQ== */\";","import {\r\n AfterViewInit,\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n} from \"@angular/core\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\n\r\nimport { ModalController, Platform } from \"@ionic/angular\";\r\n\r\nimport { environment } from \"../../../environments/environment\";\r\nimport { Router, UrlSegment } from \"@angular/router\";\r\nimport { RestaurantService } from \"src/app/services/restaurant.service\";\r\n// const Html5QrcodeScanner = require('html5-qrcode')\r\n/**\r\n * Classe da lib do qrcode\r\n */\r\n// import { Html5Qrcode} from 'html5-qrcode'\r\ndeclare var Html5Qrcode;\r\n\r\n/**\r\n * Objeto retornado da função getCameras\r\n */\r\ninterface CameraDevice {\r\n id: string;\r\n label: string;\r\n}\r\n\r\ninterface DismissData {\r\n error: boolean;\r\n message: string;\r\n}\r\n\r\n// TODO Verificar uma maneira melhor de checar qual câmera é frontal ou traseira\r\n\r\n@Component({\r\n selector: \"app-qrcode-scanner\",\r\n templateUrl: \"./qrcode-scanner.page.html\",\r\n styleUrls: [\"./qrcode-scanner.page.scss\"],\r\n})\r\nexport class QrcodeScannerPage implements OnInit, AfterViewInit, OnDestroy {\r\n /**\r\n * Não esqueça de desinscrever TODOS os observables e inscrições e de PARAR/DESLIGAR a câmera toda vez que trocar da traseira\r\n * para a frontal e vice/versa.\r\n * Na função ngOnDestroy, NÃO retire o comando para parar a câmera.\r\n * Se todas as câmeras não forem desligadas, elas continuarão ativas, mesmo destruindo o componente.\r\n * É importante não só para performance mas também para que o usuário sinta-se tranquilo, sem ficar com o dispositivo dizendo\r\n * que o app está usando a câmera quando não está.\r\n */\r\n\r\n /**\r\n * Diz se está como modal ou page\r\n */\r\n @Input(\"asModal\") asModal = false;\r\n /**\r\n * Qual câmera será priorizada\r\n */\r\n @Input(\"side\") side: \"front\" | \"back\" = \"back\";\r\n /**\r\n * Validação do texto scanneado no Qr Code\r\n */\r\n @Input(\"validation\") validation: Function = (text: string) => true;\r\n /**\r\n * Todos os dispositivos de câmeras traseiros encontrados no aparelho\r\n */\r\n private backDevices: CameraDevice[] = [];\r\n /**\r\n * Todos os dispositivos de câmeras que não são traseiros encontrados no aparelho.\r\n * Se o label do dispositivo não conter a palavra 'back' ou 'trás', ele será jogado nesse array.\r\n * Porém não há garantia de que seja a câmera frontal\r\n */\r\n private frontDevices: CameraDevice[] = [];\r\n /**\r\n * Dispositivos de câmeras verificados\r\n */\r\n private checkedDevices: CameraDevice[] = [];\r\n /**\r\n * Classe usada para iniciar/parar a câmera\r\n */\r\n private camera;\r\n /**\r\n * Id do elemento da câmera na DOM\r\n */\r\n public qrcodeScannerElementId: string =\r\n environment.html5qrcode.qrcodeScanElement;\r\n /**\r\n * Status atual da leitura e imagem correspondente\r\n */\r\n public status$: BehaviorSubject<{\r\n currentImg: string;\r\n currentLabel: string;\r\n }> = new BehaviorSubject({\r\n currentImg: \"stand.cat.gif\",\r\n currentLabel: \"Abrindo câmera\",\r\n });\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n private platform: Platform,\r\n private restaurantService: RestaurantService,\r\n private router: Router\r\n ) {}\r\n\r\n ngOnInit() {\r\n const currentNavigation = this.router.getCurrentNavigation();\r\n const urlSegments: UrlSegment[] =\r\n currentNavigation?.extractedUrl?.root?.children?.primary?.segments || [];\r\n const path: string = urlSegments[0]?.path;\r\n\r\n this.asModal = path != environment.routePaths.scanner;\r\n }\r\n\r\n /**\r\n * Pega os dispositivos de câmera do aparelho e inicia o scan\r\n */\r\n ngAfterViewInit() {\r\n const getCamera = Html5Qrcode.getCameras();\r\n getCamera\r\n .then((devices: CameraDevice[]) => {\r\n //alert('getCamera' + JSON.stringify(devices)) // comentar leo\r\n devices.forEach((device) => {\r\n // alert('labe alterado ' + device.label +'gggggg ' + device.label[0] + device.label[1] + device.label[2] + device.label[3] + device.label.length)\r\n // alert(device.label + ' - ' + (device.label.includes('back')) + ' tradução ' + device.label.toLowerCase().includes('trás'))\r\n device.label.includes(\"back\") ||\r\n device.label.toLowerCase().includes(\"traseira\")\r\n ? this.backDevices.push(device)\r\n : this.frontDevices.push(device);\r\n }); // Facing front e facing back é padrão de câmeras de celulares. No note está como webcam hd, então eu trato tudo que não é traseiro como algo frontal\r\n // alert('back ' + this.backDevices.length + ' - front ' + this.frontDevices.length)\r\n this.scan();\r\n })\r\n .catch((error) => {\r\n // alert(error + ' - erro de não abrir a câmera')\r\n this.status$.next({\r\n currentImg: \"bug.cat.gif\",\r\n currentLabel: \"Não foi possível abrir a câmera\",\r\n });\r\n });\r\n this.camera = new Html5Qrcode(this.qrcodeScannerElementId);\r\n }\r\n\r\n /**\r\n * Desliga a câmera quando o componente está sendo destruído\r\n */\r\n ngOnDestroy() {\r\n this.camera.stop().then(() => console.log(\"Câmera desligada\"));\r\n }\r\n\r\n /**\r\n * Tenta renderizar a câmera com um dos dispositivos encontrados\r\n */\r\n scan() {\r\n try {\r\n const device: CameraDevice =\r\n this.getDevice(); /*.pipe(retry(this.backDevices.length + this.frontDevices.length))*/\r\n if (!device) {\r\n throw \"primeira\";\r\n }\r\n this.camera\r\n .start(\r\n this.platform.is(\"desktop\") || this.platform.is(\"mobileweb\")\r\n ? device.id\r\n : { facingMode: \"environment\" },\r\n { fps: 10 },\r\n (text) => {\r\n this.scanned(text);\r\n },\r\n (error) => this.notScanned(error)\r\n )\r\n .catch((e) => {\r\n // alert('catch do start' + e)\r\n this.checkedDevices.push(device);\r\n if (device.label.includes(\"back\"))\r\n this.backDevices = this.backDevices.filter(\r\n (bkDevice) => bkDevice.id != device.id\r\n );\r\n else\r\n this.frontDevices = this.frontDevices.filter(\r\n (ftDevice) => ftDevice.id != device.id\r\n );\r\n // alert('ckDvc: ' + this.checkedDevices.length + ' - bkDvc: ' + this.backDevices.length + ' - ftDvc: ' + this.frontDevices.length)\r\n this.scan();\r\n });\r\n } catch (e) {\r\n this.status$.next({\r\n currentImg: \"bug.cat.gif\",\r\n currentLabel: \"Não foi possível abrir a câmera\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Retorna um dos dispositivos de câmeras baseado nas preferências e no número de tentativas já feitas\r\n */\r\n // private getDevice(): Observable {\r\n private getDevice(): CameraDevice {\r\n if (\r\n (this.side == \"back\" || !this.frontDevices.length) &&\r\n this.backDevices.length\r\n ) {\r\n const backDeviceNotChecked = this.backDevices.find(\r\n (device) =>\r\n this.checkedDevices.findIndex((dvc) => dvc.id == device.id) == -1\r\n );\r\n return backDeviceNotChecked;\r\n } else if (\r\n (this.side == \"front\" || !this.backDevices.length) &&\r\n this.frontDevices.length\r\n ) {\r\n const frontDeviceNotChecked = this.frontDevices.find(\r\n (device) =>\r\n this.checkedDevices.findIndex((dvc) => dvc.id == device.id) == -1\r\n );\r\n return frontDeviceNotChecked;\r\n } else return null;\r\n }\r\n\r\n /**\r\n * Quando algo for scanneado\r\n * @param text\r\n */\r\n scanned(text: string) {\r\n // if(text.includes(environment.USER_GUID)) {\r\n if (this.validation?.(text)) {\r\n // TODO Insistir com o Xandão para que haja a verificação de cima\r\n this.status$.next({\r\n currentImg: \"ihul.cat.gif\",\r\n currentLabel: \"QR Code encontrado!\",\r\n });\r\n\r\n const rest = this.restaurantService.getRestaurant();\r\n if (rest) {\r\n const str = text.replace(environment.USER_GUID, \"\");\r\n this.modalCtrl.dismiss(\r\n { error: false, message: str },\r\n undefined,\r\n environment.html5qrcode.modalId\r\n );\r\n } else {\r\n if (text.includes(\"http\")) {\r\n text = text.replace(environment.qrcodeConfigValidationLink, \"\");\r\n this.router.navigateByUrl(text);\r\n }\r\n }\r\n } else {\r\n this.status$.next({\r\n currentImg: \"perdido.cat.gif\",\r\n currentLabel: \"QR Code inválido\",\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Quando não for encontrado nada\r\n * @param error\r\n */\r\n notScanned(error) {\r\n // console.log(error)\r\n const rest = this.restaurantService.getRestaurant();\r\n this.status$.next({\r\n currentImg: \"bored.cat.gif\",\r\n currentLabel: !!rest\r\n ? \"Procurando QR Code da COMANDA\"\r\n : \"Procurando QR Code do CARDÁPIO\",\r\n });\r\n }\r\n\r\n /**\r\n * Troca a preferência de câmera\r\n */\r\n toggleCamera() {\r\n this.status$.next({\r\n currentImg: \"stand.cat.gif\",\r\n currentLabel: \"Abrindo câmera\",\r\n });\r\n // alert(JSON.stringify(this.backDevices) + ' |||| ' + JSON.stringify(this.frontDevices))\r\n this.camera.stop().then(() => {\r\n this.side = this.side == \"back\" ? \"front\" : \"back\";\r\n this.ngAfterViewInit();\r\n });\r\n }\r\n\r\n /**\r\n * Fecha este modal\r\n */\r\n closePage() {\r\n this.modalCtrl.dismiss(\r\n { error: true, message: \"Nenhum QR Code scaneado\" },\r\n undefined,\r\n environment.html5qrcode.modalId\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n// import { Camera, CameraOptions } from '@ionic-native/camera/ngx'\r\n// import { CameraPreview, CameraPreviewPictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@ionic-native/camera-preview/ngx'\r\nimport { ModalController } from '@ionic/angular';\r\nimport { Observable } from 'rxjs';\r\nimport { CameraPageComponent } from '../shared/components/v2/camera-page/camera-page.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CameraService {\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n ) { }\r\n\r\n takePicture(): Observable {\r\n return new Observable(subscriber => {\r\n // const options: CameraPreviewOptions = {\r\n // x: 0,\r\n // y: 0,\r\n // width: window.screen.width - (window.screen.width / 5),\r\n // height: window.screen.height - (window.screen.height / 5),\r\n // tapPhoto: true,\r\n // previewDrag: true,\r\n // // toBack: true,\r\n // alpha: 1,\r\n // tapFocus: true,\r\n // }\r\n this.modalCtrl.create({\r\n component: CameraPageComponent,\r\n cssClass: 'transparent modal-fullscreen'\r\n }).then(modal => {\r\n modal.onDidDismiss().then(dismiss => subscriber.next(dismiss.data))\r\n modal.present()\r\n })\r\n // this.cameraPreview.startCamera(cameraOptions || options).then(() => {\r\n // // const base64Img: string = 'data:image/jpeg;base64,' + imgData\r\n // // subscriber.next(base64Img)\r\n // }, err => subscriber.error(err))\r\n // this.cameraPreview.\r\n })\r\n\r\n // this.cameraPreview.setOnPictureTakenHandler().subscribe((result) => {\r\n // console.log(result);\r\n // // do something with the result\r\n // });\r\n \r\n }\r\n // constructor(\r\n // private camera: Camera\r\n // ) { }\r\n\r\n // takePicture(cameraOptions?: CameraOptions): Observable {\r\n // return new Observable(subscriber => {\r\n // const options: CameraOptions = {\r\n // quality: 100,\r\n // destinationType: this.camera.DestinationType.FILE_URI,\r\n // encodingType: this.camera.EncodingType.JPEG,\r\n // mediaType: this.camera.MediaType.PICTURE,\r\n // }\r\n \r\n // this.camera.getPicture(cameraOptions || options).then((imgData) => {\r\n // const base64Img: string = 'data:image/jpeg;base64,' + imgData\r\n // subscriber.next(base64Img)\r\n // }, err => subscriber.error(err))\r\n // })\r\n // }\r\n}\r\n","import { UserInfoRequestGestorPage } from \"./../v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { of, Observable, Subject, forkJoin, throwError, from, BehaviorSubject } from \"rxjs\";\r\nimport { tap, map, mergeAll, mergeMap, take } from \"rxjs/operators\";\r\n\r\nimport { AlertController, IonInput, iosTransitionAnimation, ModalController, Platform } from \"@ionic/angular\";\r\n\r\nimport { AuthService } from \"../shared/auth.service\";\r\nimport { Card } from \"../models/payment/card.model\";\r\nimport { Cart } from \"../models/cart/cart.model\";\r\nimport { environment } from \"../../environments/environment\";\r\nimport { ItemCart } from \"../interfaces/itemCart.interface\";\r\nimport { Payment } from \"../models/payment/payment.model\";\r\nimport { PaymentService, PaymentResponse, ConsumoResponse } from \"./payment.service\";\r\nimport { ResponseApi } from \"../shared/base.service\";\r\nimport { ResponsePayment } from \"../interfaces/response-payment.interface\";\r\nimport { RestaurantService } from \"./restaurant.service\";\r\nimport { SendOrderApi } from \"../interfaces/order.interface\";\r\nimport { StorageService } from \"./storage.service\";\r\nimport { User } from \"../models/user.model\";\r\nimport { Utils } from \"../shared/util\";\r\nimport { WhatsMsgService } from \"../shared/whats-msg.service\";\r\nimport { Localizacao } from \"../models/address/localizacao.model\";\r\nimport { UserZimmer } from \"../models/user-zimmer.model\";\r\nimport { Order } from \"../models/order/order.model\";\r\nimport { CartNewPage } from \"../pages/cart-new/cart-new.page\";\r\nimport { OrderService } from \"./order.service\";\r\nimport { Restaurant } from \"../models/restaurant.model\";\r\nimport { UserInfoRequestZapPage } from \"../v2/finishing-pages/user-info-request-zap/user-info-request-zap.page\";\r\nimport { UserInfoRequestCardPage } from \"../v2/finishing-pages/user-info-request-card/user-info-request-card.page\";\r\nimport { ComandaScanPage } from \"../v2/finishing-pages/comanda-scan/comanda-scan.page\";\r\nimport { UserInfoDrivePage } from \"../v2/finishing-pages/user-info-drive/user-info-drive.page\";\r\nimport { TablePagePage } from \"../v2/finishing-pages/table-page/table-page.page\";\r\nimport { UserInfoRequestConsumoPage } from \"../v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page\";\r\nimport { cardConsumo } from \"../models/payment/consumo.model\";\r\nimport { ToastaddService } from \"./toastadd.service\";\r\nimport { Key } from \"protractor\";\r\nimport { OrderGestor } from \"../models/order/order-gestor\";\r\n\r\ninterface ViaCEPResponse {\r\n cep: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class CartService {\r\n /**\r\n * Pedido atual\r\n */\r\n private cart: Cart = new Cart();\r\n /**\r\n * Pedidos realizados\r\n */\r\n private orders: Cart[] = [];\r\n /**\r\n * Ficha após pedido realizado pela rota 'pedido'\r\n */\r\n\r\n ficha$: BehaviorSubject = new BehaviorSubject(this.storage.getSessionData(environment.storage.ficha));\r\n\r\n constructor(private alertCtrl: AlertController, private auth: AuthService, private http: HttpClient, private modalCtrl: ModalController, private orderService: OrderService, private paymentService: PaymentService, private platform: Platform, private restaurantService: RestaurantService, private storage: StorageService, public utils: Utils, private whatsMsgBuilder: WhatsMsgService, private alerta: ToastaddService) {\r\n this.ficha$.subscribe({\r\n next: (ficha) => this.storage.setSessionData(environment.storage.ficha, ficha),\r\n });\r\n }\r\n\r\n /**\r\n * Adiciona um item ao carrinho\r\n * @param { ItemCart } item Item a ser adicionado\r\n */\r\n setItem(item: ItemCart): void {\r\n const itemExists = this.cart.items.find((i) => i.id == item.id);\r\n\r\n itemExists ? itemExists.number++ : this.cart.items.push(item);\r\n }\r\n\r\n /**\r\n * Retorna um item do carrinho\r\n * @param { number } itemId ID do item\r\n */\r\n getItem(itemId: number): ItemCart {\r\n const item = this.cart.items.find((i) => i.id == itemId);\r\n return item;\r\n }\r\n\r\n /**\r\n * Retorna a quantidade do produto em todos os itens do carrinho somados, pelo ID\r\n * @param { number } prodId ID do produto a ser pesquisado\r\n */\r\n getNumberOfProdInOrder(prodId: number): number {\r\n let number: number = 0;\r\n this.cart.items.forEach((item) => (number += item.produto.produtoId == prodId ? item.number : 0));\r\n return number;\r\n }\r\n\r\n /**\r\n * Remove um item do carrinho pelo ID\r\n * @param { number } itemId ID do item do carrinho\r\n */\r\n removeItem(itemId: number): void {\r\n this.cart.items = this.cart.items.filter((i) => i.id != itemId);\r\n }\r\n\r\n /**\r\n * Remove um da quantidade do produto do item do carrinho\r\n */\r\n removeProd(itemId: number): void {\r\n const item = this.cart.items.find((i) => i.id == itemId);\r\n if (item.cartItemOpcoes.length > 0) {\r\n item.cartItemOpcoes.forEach(function (i) {\r\n i.quantidade -= i.quantidade / item.number;\r\n i.quantidade = Math.floor(i.quantidade);\r\n });\r\n }\r\n item.number--;\r\n if (item.number <= 0) {\r\n this.cart.items = this.cart.items.filter((i) => i.id != itemId);\r\n }\r\n }\r\n\r\n /**\r\n * Adciona mais um do mesmo produto no item do carrinho\r\n * @param { number } itemId ID do item no carrinho\r\n */\r\n addProductToItem(itemId: number): void {\r\n const item = this.cart.items.find((i) => i.id == itemId);\r\n if (item.cartItemOpcoes.length > 0) {\r\n item.cartItemOpcoes.forEach(function (i) {\r\n i.quantidade += i.quantidade / item.number;\r\n i.quantidade = Math.ceil(i.quantidade);\r\n });\r\n }\r\n item.number++;\r\n console.log(this.cart);\r\n }\r\n\r\n /**\r\n * Edita um item no carrinho\r\n * @param { ItemCart } item Item com os novos valores\r\n */\r\n editItem(item: ItemCart): void {\r\n const i = this.cart.items.find((i) => i.id == item.id);\r\n Object.keys(i).forEach((key) => (i[key] = item[key]));\r\n i.observacao = item.observacao;\r\n console.log(\"antes de editar:\", item);\r\n }\r\n\r\n /**\r\n * Retorna todos os itens do carrinho\r\n */\r\n getAllItems(): ItemCart[] {\r\n return this.cart.items;\r\n }\r\n\r\n /**\r\n * Retorna a quantidade total de items no carrinho\r\n */\r\n getTotalItems(): number {\r\n let totalItems: number = 0;\r\n this.cart.items.forEach((i) => (totalItems += i.number));\r\n return totalItems;\r\n }\r\n\r\n /**\r\n * Pega o valor total do carrinho\r\n * @param { { date, discount: number, items: ItemCart[] } } order Pedido a ser calculado o valor\r\n */\r\n getTotalValue(order?: { date; discount: number; items: ItemCart[] }): number {\r\n let totalValue: number = 0;\r\n if (!order) {\r\n this.cart.items.forEach((item) => (totalValue += this.calcTotalItemValue(item)));\r\n } else {\r\n order.items.forEach((item) => (totalValue += this.calcTotalItemValue(item)));\r\n }\r\n\r\n return Number(totalValue.toFixed(2));\r\n }\r\n\r\n /**\r\n * Pega o valor total do produto em todos os itens dentro do carrinho (sem os complementos)\r\n * @param { number } prodId ID do produto\r\n */\r\n getTotalValueOnlyMain(prodId: number): number {\r\n let totalValue: number = 0;\r\n this.cart.items.forEach((item) => {\r\n item.produto.produtoId == prodId ? (totalValue += (item.produto.valorPromocao || item.produto.valorVenda || item.produto.valorRegular || 0) * item.number) : 0;\r\n });\r\n return totalValue;\r\n }\r\n\r\n /**\r\n * Pega o valor total dos complementos de todos os produtos de um item\r\n * @param { number } itemId ID do item no carrinho\r\n * @deprecated\r\n */\r\n getTotalValueOnlyComplements(itemId: number) {\r\n let totalValue: number = 0;\r\n throw \"Under maintenance\";\r\n return totalValue;\r\n }\r\n\r\n /**\r\n * Calcula o valor total de um item passado\r\n * @param { ItemCart } item Item a ser calculado o valor total\r\n * @deprecated\r\n */\r\n getTotalValueByItem(item: ItemCart): number {\r\n let totalValue: number = 0;\r\n item.cartItemOpcoes.forEach((option) => {\r\n totalValue += option.valor;\r\n });\r\n totalValue += item.produto.valorVenda;\r\n totalValue *= item.number;\r\n return Number(totalValue.toFixed(2));\r\n }\r\n\r\n /**\r\n * Obtém o endereço com base no CEP\r\n */\r\n getAddressDataUsingCEP(cep: string): Observable {\r\n return this.http.get(`https://viacep.com.br/ws/${cep}/json/`);\r\n }\r\n\r\n /**\r\n * Envia o pedido no Gestor\r\n */\r\n\r\n sendOrderGestor(\r\n form: any,\r\n entrega: boolean = false,\r\n options?: {\r\n nsu?: string | number;\r\n userZimmer?: UserZimmer;\r\n comandaId?: string;\r\n tableNumber?: string;\r\n phone?: string;\r\n }\r\n ): Observable {\r\n const success$: Subject = new Subject();\r\n\r\n console.log(form, \"form\");\r\n\r\n // Verificar se o restaurante está aberto\r\n this.restaurantService.isOpen().subscribe({\r\n next: async (isOpen) => {\r\n if (isOpen) {\r\n /*\r\n * Quando usa-se var1 = var2, apenas é passado a referência do objeto na memória.\r\n * Qualquer alteração feita afeta o outro objeto. Por isso a necessidade de instanciar um objeto novo ou passar os valores por meio de for's\r\n */\r\n const mode = this.storage.get(environment.storage.appMode);\r\n // Cria uma nova instância do carrinho\r\n const cart = new Cart(this.cart);\r\n cart.date = new Date();\r\n\r\n // API\r\n // Prepara o JSON para a API do Xandão\r\n const orderObj = new Object() as SendOrderApi;\r\n orderObj.adress = form.endereco;\r\n orderObj.cartTotal = {\r\n discount_total: 0,\r\n shipping_total: this.getTotalValue(),\r\n subtotal: this.getTotalValue(),\r\n taxTotal: form.frete,\r\n total: this.getTotalValue(),\r\n total_tax: 0,\r\n };\r\n\r\n orderObj.cartItens =\r\n cart.items.map((item) => {\r\n let maxHalf: any = {};\r\n\r\n if (item.meiomeios.length > 0) {\r\n maxHalf = item.meiomeios.reduce(function (prev, current) {\r\n return prev.valorVenda > current.valorVenda ? prev : current;\r\n });\r\n }\r\n\r\n return {\r\n cartItemOpcoes: item.cartItemOpcoes,\r\n cartMeioMeios: item.meiomeios,\r\n observacao: item.observacao,\r\n produto: item.produto,\r\n quantidade: item.number,\r\n souvinir: [],\r\n valorentrega: 0,\r\n valorprodutos: item.produto.valorPromocao || item.produto.valorVenda || item.produto.valorRegular || maxHalf?.valorRegular || 0,\r\n valortotal: this.calcTotalItemValue(item),\r\n };\r\n }) || [];\r\n orderObj.usuarioGuid = environment.USER_GUID;\r\n orderObj.isEntrega = entrega;\r\n orderObj.restaurante = this.restaurantService.getRestaurant();\r\n orderObj.troco = form.troco;\r\n orderObj.isPagamentoOnline = !!options?.nsu;\r\n orderObj.referencia = options?.tableNumber || this.auth.getTable() + \"\";\r\n orderObj.comandaId = options?.comandaId;\r\n orderObj.paymentNsu = options?.nsu;\r\n orderObj.userZimmer = options?.userZimmer;\r\n if (mode == environment.appModes.table) orderObj.orderType = \"TABLE\";\r\n else if (mode == environment.appModes.onlinePayment || mode == environment.appModes.comanda) orderObj.orderType = null;\r\n\r\n orderObj.formaPagamento =\r\n form.pagamento === 1 && form.troco === 0\r\n ? \"Dinheiro\"\r\n : form.pagamento === 1 && form.troco !== 0\r\n ? \"Dinheiro troco para \" +\r\n form.troco.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n })\r\n : \"Cartão (Máquininha)\";\r\n\r\n orderObj.troco = form.troco;\r\n\r\n console.log(orderObj, \"OBJETO PEDIDO GESTOR\");\r\n\r\n let userDados: OrderGestor = {\r\n nome: form.userName,\r\n fone: form.userFone,\r\n logradouro: orderObj.adress.logradouro,\r\n numero: orderObj.adress.numero,\r\n uf: orderObj.adress.uf,\r\n bairro: orderObj.adress.bairro,\r\n cep: orderObj.adress.cep,\r\n localidade: orderObj.adress.localidade,\r\n complemento: orderObj.adress.complemento,\r\n restauranteId: this.restaurantService.getRestaurant().restauranteId,\r\n };\r\n environment.pedidoURL += `${this.restaurantService.getRestaurant().restauranteId}/`\r\n\r\n await this.http.post(`${environment.SERVERHOST}/Users/cadastrarPorTelefone/`, userDados).subscribe({\r\n next: (res) => {\r\n if (res) {\r\n this.getPhoneDataGestor(userDados.fone).subscribe(\r\n (dadosUsuario: any) => {\r\n environment.pedidoURL += `${dadosUsuario.userID}`\r\n orderObj.usuarioGuid = dadosUsuario.userID;\r\n\r\n this.http.post(`${environment.SERVERHOST}/carrinho`, orderObj).subscribe({\r\n next: (res) => {\r\n cart.orderObj = orderObj;\r\n const totenId = res.totenId;\r\n\r\n // Manda para pedidos os pedidos realizados\r\n this.orders.unshift(cart);\r\n // this.storage.save('orders', this.orders)\r\n this.cart.items = [];\r\n this.storage.setSessionData(\"senha\", totenId);\r\n success$.next(totenId || \"\");\r\n this.orderService.setComandaId(orderObj.comandaId);\r\n },\r\n error: (error) => {\r\n console.log(\"error res\", error);\r\n success$.next(false);\r\n },\r\n });\r\n },\r\n (err) => {\r\n console.log(err);\r\n }\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n console.log(error);\r\n },\r\n });\r\n } else success$.error(\"O estabelecimento não está atendendo no momento\");\r\n },\r\n });\r\n\r\n return success$.asObservable();\r\n }\r\n\r\n /**\r\n * Obtém os dados do cliente pelo telefone\r\n */\r\n getPhoneDataGestor(phone?: string): Observable {\r\n const success$: Subject = new Subject();\r\n\r\n // Verificar se o restaurante está aberto\r\n this.restaurantService.isOpen().subscribe({\r\n next: (isOpen) => {\r\n if (isOpen) {\r\n if (phone) {\r\n this.http.get(`${environment.SERVERHOST}/Users/obterPorTelefone/` + phone + \"/\" + this.restaurantService.getRestaurant().restauranteId).subscribe({\r\n next: (res: any) => {\r\n success$.next(res);\r\n },\r\n error: (error) => {\r\n success$.error(\"Ocorreu um erro ao obter dados telefonicos\");\r\n },\r\n });\r\n }\r\n } else success$.error(\"O estabelecimento não está atendendo no momento\");\r\n },\r\n });\r\n\r\n return success$.asObservable();\r\n }\r\n\r\n /**\r\n * Salva os dados do cliente\r\n */\r\n setPhoneDataGestor(phone?: string, userData?: OrderGestor): Observable {\r\n const success$: Subject = new Subject();\r\n\r\n // Verificar se o restaurante está aberto\r\n this.restaurantService.isOpen().subscribe({\r\n next: (isOpen) => {\r\n if (isOpen) {\r\n if (phone) {\r\n this.http.post(`${environment.SERVERHOST}/Users/cadastrarPorTelefone/` + phone, userData).subscribe({\r\n next: (res: any) => {\r\n success$.next(res);\r\n },\r\n error: (error) => {\r\n success$.error(\"Ocorreu um erro ao salvar dados\");\r\n },\r\n });\r\n }\r\n } else success$.error(\"O estabelecimento não está atendendo no momento\");\r\n },\r\n });\r\n\r\n return success$.asObservable();\r\n }\r\n\r\n /**\r\n * Envia o pedido via whatsapp\r\n * @param { number } number Número de telefone do usuário final\r\n * @param { string } msg Mensagem que deve ser enviada\r\n */\r\n sendOrderWhats(\r\n options: {\r\n aquisition: number;\r\n endereco: Localizacao;\r\n number: number;\r\n pagamento: number;\r\n troco: number;\r\n userFone: number;\r\n userName: string;\r\n observation: string;\r\n tableNumber?: number | string;\r\n // paymentMethod: string\r\n },\r\n msg?: string\r\n ): boolean {\r\n try {\r\n // Se nenhuma mensagem foi passada então ele monta o pedido\r\n if (!msg) {\r\n msg = this.whatsMsgBuilder.buildMsg({\r\n aquisition: options.aquisition ? (options.aquisition == 1 ? \"Retirada\" : \"Entrega\") : \"\",\r\n endereco: options.endereco,\r\n items: this.getAllItems(),\r\n mode: this.storage.get(\"type\") == \"zap\" ? \"user\" : \"table\",\r\n pagamento: options.pagamento,\r\n restaurantName: this.restaurantService.getRestaurant().nome,\r\n troco: options.troco,\r\n userFone: options.userFone,\r\n userName: options.userName,\r\n pedidoTotal: this.getTotalValue(),\r\n observation: options.observation,\r\n totalValue: this.getTotalValue(),\r\n tableNumber: options.tableNumber,\r\n // deliveryFee: this.restaurantService.getRestaurant().\r\n });\r\n }\r\n // Manda pra api do whatsapp\r\n const url: string = `https://api.whatsapp.com/send?phone=55${options.number || this.restaurantService.getRestaurant()?.fonecomercial || this.storage.get(\"phoneNumber\")}&text=${msg}`;\r\n window.open(url);\r\n\r\n this.cart.items = [];\r\n return true;\r\n } catch (err) {\r\n console.log(err);\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Prepara o objeto e chama a função de pagamento do paymentService\r\n * @param { Card } card\r\n * @param { User } user\r\n */\r\n doOrderWithOnlinePayment(\r\n card: Card,\r\n extra\r\n ): Observable<{\r\n success: boolean;\r\n message?: string;\r\n pedido?: string | boolean;\r\n }> {\r\n const restaurante = this.restaurantService.getRestaurant();\r\n const payment: Payment = {\r\n restauranteId: restaurante.restauranteId,\r\n user: new User(),\r\n method: \"CREDIT_CARD\",\r\n total: this.getTotalValue(),\r\n entrega: 0,\r\n titular: card.titular,\r\n cpf: card.cpf,\r\n cartao: card,\r\n };\r\n // console.log(JSON.stringify(payment))\r\n // return\r\n const payment$ = this.paymentService.pay(payment).pipe(\r\n map((response: ResponsePayment) => {\r\n if (response.errors) {\r\n return of({ success: false, message: response.message });\r\n } else {\r\n return this.sendOrder({\r\n nsu: Number(response.nsu),\r\n userZimmer: extra,\r\n }).pipe(\r\n map((result) => ({\r\n success: typeof result === \"string\",\r\n pedido: result,\r\n }))\r\n );\r\n }\r\n })\r\n );\r\n\r\n return payment$.pipe(mergeAll(2));\r\n }\r\n\r\n /**\r\n * Cria uma instância da classe que deve ser enviada para a API para salvar o pedido no banco\r\n */\r\n sendOrder(options?: { nsu?: string | number; userZimmer?: UserZimmer; comandaId?: string; tableNumber?: string }): Observable {\r\n const success$: Subject = new Subject();\r\n\r\n // Verificar se o restaurante está aberto\r\n this.restaurantService.isOpen().subscribe({\r\n next: (isOpen) => {\r\n if (isOpen) {\r\n /*\r\n * Quando usa-se var1 = var2, apenas é passado a referência do objeto na memória.\r\n * Qualquer alteração feita afeta o outro objeto. Por isso a necessidade de instanciar um objeto novo ou passar os valores por meio de for's\r\n */\r\n const mode = this.storage.get(environment.storage.appMode);\r\n // Cria uma nova instância do carrinho\r\n const cart = new Cart(this.cart);\r\n cart.date = new Date();\r\n\r\n // API\r\n // Prepara o JSON para a API do Xandão\r\n const orderObj = new Object() as SendOrderApi;\r\n orderObj.cartTotal = {\r\n discount_total: 0,\r\n shipping_total: this.getTotalValue(),\r\n subtotal: this.getTotalValue(),\r\n taxTotal: 0,\r\n total: this.getTotalValue(),\r\n total_tax: 0,\r\n };\r\n orderObj.cartItens =\r\n cart.items.map((item) => ({\r\n cartItemOpcoes: item.cartItemOpcoes,\r\n cartMeioMeios: item.meiomeios,\r\n observacao: item.observacao,\r\n produto: item.produto,\r\n quantidade: item.number,\r\n souvinir: [],\r\n valorentrega: 0,\r\n valorprodutos: item.produto.valorPromocao || item.produto.valorVenda || item.produto.valorRegular || 0,\r\n valortotal: this.calcTotalItemValue(item),\r\n })) || [];\r\n orderObj.usuarioGuid = environment.USER_GUID;\r\n orderObj.isEntrega = false;\r\n orderObj.restaurante = this.restaurantService.getRestaurant();\r\n orderObj.troco = 0;\r\n orderObj.isPagamentoOnline = !!options?.nsu;\r\n orderObj.referencia = options?.tableNumber || this.auth.getTable() + \"\";\r\n orderObj.comandaId = options?.comandaId;\r\n orderObj.paymentNsu = options?.nsu;\r\n orderObj.userZimmer = options?.userZimmer;\r\n if (mode == environment.appModes.table) orderObj.orderType = \"TABLE\";\r\n else if (mode == environment.appModes.onlinePayment || mode == environment.appModes.comanda) orderObj.orderType = \"TOTEN\";\r\n\r\n console.log(orderObj, \"OBJETO PEDIDO ZIMMER\");\r\n this.http.post(`${environment.SERVERHOST}/carrinho`, orderObj).subscribe({\r\n next: (res) => {\r\n cart.orderObj = orderObj;\r\n const totenId = res.totenId;\r\n\r\n // Manda para pedidos os pedidos realizados\r\n this.orders.unshift(cart);\r\n // this.storage.save('orders', this.orders)\r\n this.cart.items = [];\r\n this.storage.setSessionData(\"senha\", totenId);\r\n success$.next(totenId || \"\");\r\n this.orderService.setComandaId(orderObj.comandaId);\r\n },\r\n error: (error) => {\r\n console.log(\"error res\", error);\r\n success$.next(false);\r\n },\r\n });\r\n } else success$.error(\"O estabelecimento não está atendendo no momento\");\r\n },\r\n });\r\n\r\n return success$.asObservable();\r\n }\r\n\r\n /**\r\n * Envio de pedido pra versão V2\r\n */\r\n sendOrderV2(): Observable {\r\n return this.restaurantService.isOpen().pipe(\r\n // Pegando informações: restaurante, número da mesa e modo de operação\r\n mergeMap((isOpen) =>\r\n forkJoin({\r\n // Se o restaurante não estiver ativo, ele retornará nulo nesse campo\r\n rest: (isOpen ? this.restaurantService.getRest() : of(null)).pipe(take(1)),\r\n table: this.auth.getTableV2().pipe(take(1)),\r\n mode: this.storage.getV2(environment.storage.v2.mode).pipe(take(1)),\r\n }).pipe(take(1))\r\n ),\r\n mergeMap((data) => {\r\n // Caso o restaurante esteja nulo, ele não está ativo, logo, não deverá ser feito o pedido\r\n if (!data?.rest) return throwError(\"Restaurante não está operando\");\r\n\r\n // Operações conforme o modo de operação\r\n let order: SendOrderApi;\r\n switch (data.mode) {\r\n case environment.appModes.table:\r\n order = this.prepareOrderObj({\r\n mode: data.mode,\r\n rest: data.rest,\r\n table: data.table,\r\n });\r\n return this.makeOrder(order).pipe(\r\n map((res) => {\r\n this.cart.items = [];\r\n return !!res;\r\n })\r\n );\r\n\r\n case environment.appModes.zap:\r\n return this.askZapInformation().pipe(\r\n tap((success) => {\r\n if (success) this.cart.items = [];\r\n })\r\n );\r\n\r\n case environment.appModes.gestor:\r\n return this.askGestorInformation().pipe(\r\n tap((success) => {\r\n if (success) this.cart.items = [];\r\n })\r\n );\r\n // consumo ///////////////////////////////////////////////////////////////////////////////////////////////\r\n case environment.appModes.consumo:\r\n return this.askPaymentInformationConsumo().pipe(\r\n mergeMap((extra) =>\r\n forkJoin({\r\n extra: of(extra),\r\n paymentResult: extra.method == 1 ? this.makePayment(extra.card) : this.makeConsumo(extra.cardConsumo),\r\n })\r\n ),\r\n mergeMap((result) => {\r\n order = this.prepareOrderObj({\r\n mode: data.mode,\r\n rest: data.rest,\r\n nsu: result.paymentResult?.nsu,\r\n user: {\r\n nome: result.extra.userName,\r\n fone: result.extra.phone,\r\n cpf: result.extra.cpf,\r\n },\r\n payment: result.paymentResult?.nsu ? \"Crédito\" : \"Consumo\",\r\n });\r\n\r\n return this.makeOrder(order).pipe(\r\n map((response) => {\r\n this.cart.items = [];\r\n this.ficha$.next(response.totenId);\r\n return response.totenId;\r\n })\r\n );\r\n })\r\n );\r\n // pgto online ///////////////////////////////////////////////////////////////////////////////////////////////\r\n case environment.appModes.onlinePayment:\r\n return this.askPaymentInformation().pipe(\r\n mergeMap((extra) =>\r\n forkJoin({\r\n extra: of(extra),\r\n paymentResult: extra.method == 1 ? this.makePayment(extra.card) : of(null).pipe(take(1)),\r\n })\r\n ),\r\n mergeMap((result) => {\r\n console.log(result, \"result pgtoonline\");\r\n\r\n order = this.prepareOrderObj({\r\n mode: data.mode,\r\n rest: data.rest,\r\n nsu: result.paymentResult?.nsu,\r\n user: {\r\n nome: result.extra.userName,\r\n fone: result.extra.phone,\r\n cpf: result.extra.cpf,\r\n },\r\n payment: result.paymentResult?.nsu ? \"Crédito\" : \"Débito ou dinheiro\",\r\n });\r\n console.log(order, \"order pgtoonline\");\r\n\r\n return this.makeOrder(order).pipe(\r\n map((response) => {\r\n console.log(response, \"response pgotlinoie\");\r\n\r\n this.cart.items = [];\r\n this.ficha$.next(response.totenId);\r\n return response.totenId;\r\n })\r\n );\r\n })\r\n );\r\n\r\n case environment.appModes.comanda:\r\n return forkJoin({\r\n comandaId: this.askComanda(),\r\n tableNumber: this.askTableNumber1(),\r\n }).pipe(\r\n mergeMap((forkData) => {\r\n order = this.prepareOrderObj({\r\n comandaId: forkData.comandaId,\r\n mode: data.mode,\r\n rest: data.rest,\r\n table: forkData.tableNumber as string,\r\n });\r\n return this.makeOrder(order);\r\n }),\r\n map((res) => {\r\n this.cart.items = [];\r\n return !!res;\r\n })\r\n );\r\n\r\n case environment.appModes.drive:\r\n return this.askDriveThruInfo().pipe(\r\n mergeMap((extra) =>\r\n forkJoin({\r\n driveInfo: of(extra),\r\n paymentResult: extra.method == 1 ? this.makePayment(extra.card) : of(null).pipe(take(1)),\r\n })\r\n ),\r\n mergeMap((result) => {\r\n order = this.prepareOrderObj({\r\n mode: data.mode,\r\n rest: data.rest,\r\n nsu: result.paymentResult?.nsu,\r\n table: result.driveInfo.licensePlate,\r\n user: {\r\n nome: result.driveInfo.userName,\r\n fone: result.driveInfo.phone,\r\n cpf: result.driveInfo.cpf,\r\n },\r\n payment: result.paymentResult?.nsu ? \"Crédito\" : \"Débito ou dinheiro\",\r\n });\r\n return this.makeOrder(order).pipe(\r\n map((response) => {\r\n this.cart.items = [];\r\n return !!response;\r\n })\r\n );\r\n })\r\n );\r\n\r\n case environment.appModes.menu:\r\n return throwError(\"Rota não permitida para finalização de pedido\");\r\n\r\n default:\r\n return throwError(\"Finalização de pedido não encontrada\");\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Verifica se o restaurante monitora as fichas\r\n */\r\n public testMonitorID(): Observable {\r\n let restId: number;\r\n\r\n this.restaurantService.getRest().subscribe((rest) => {\r\n restId = rest.restauranteId;\r\n });\r\n\r\n return this.http.get(`${environment.SERVERHOST}/restaurantemonitora/obterVerificaComandaPorId/` + restId);\r\n }\r\n\r\n /**\r\n * Testa o código da comanda\r\n */\r\n public testCardID(card: number): Observable {\r\n return this.http.get(`${environment.SERVERHOST}/comanda/obtercomandaporguid/` + card);\r\n }\r\n\r\n /**\r\n * Envia o pedido para a api\r\n */\r\n private makeOrder(order: SendOrderApi): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/carrinho`, order);\r\n }\r\n\r\n /**\r\n * Faz o pagamento de um pedido\r\n */\r\n private makePayment(card: Card): Observable {\r\n console.log(card, \"cardmakepaument\");\r\n\r\n const rest$: Observable = this.restaurantService.getRest();\r\n return rest$.pipe(\r\n take(1),\r\n mergeMap((rest) => {\r\n const payment: Payment = {\r\n restauranteId: rest.restauranteId,\r\n user: new User(),\r\n method: \"CREDIT_CARD\",\r\n total: this.getTotalValue(),\r\n entrega: 0,\r\n titular: card.titular,\r\n cpf: card.cpf,\r\n cartao: card,\r\n };\r\n console.log(payment, \"paymentmakepaymente\");\r\n\r\n return this.paymentService.pay(payment);\r\n }),\r\n mergeMap((response) => (response.errors ? throwError(response.message) : of(response)))\r\n );\r\n }\r\n /**\r\n * Faz o pagamento com consumo\r\n */\r\n private makeConsumo(card: cardConsumo): Observable {\r\n const rest$: Observable = this.restaurantService.getRest();\r\n\r\n return rest$.pipe(\r\n take(1),\r\n mergeMap((rest) => {\r\n const payment: Payment = {\r\n restauranteId: rest.restauranteId,\r\n numeroCartao: card.numero,\r\n saldo: this.getTotalValue(),\r\n tipoMov: 2,\r\n };\r\n\r\n return this.paymentService.payConsumo(payment); ///////// criar pagamento de consumo\r\n }),\r\n mergeMap((response) => (response.aproved ? of(response) : throwError(response.mensage)))\r\n );\r\n }\r\n\r\n /**\r\n * Monta um objeto com as informações necessárias pra mandar para a API\r\n */\r\n private prepareOrderObj(extras?: { nsu?: number | string; userZimmer?: UserZimmer; comandaId?: string; table?: string; mode?: string; rest?: Restaurant; user?: User; payment?: string }): SendOrderApi {\r\n const order: SendOrderApi = new Object() as any;\r\n const cart = new Cart(this.cart);\r\n order.cartTotal = {\r\n discount_total: 0,\r\n shipping_total: this.getTotalValue(),\r\n subtotal: this.getTotalValue(),\r\n taxTotal: 0,\r\n total: this.getTotalValue(),\r\n total_tax: 0,\r\n };\r\n order.cartItens =\r\n cart.items.map((item) => ({\r\n cartItemOpcoes: item.cartItemOpcoes,\r\n cartMeioMeios: item.meiomeios,\r\n observacao: item.observacao,\r\n produto: item.produto,\r\n quantidade: item.number,\r\n souvinir: [],\r\n valorentrega: 0,\r\n valorprodutos: item.produto.valorPromocao || item.produto.valorVenda || item.produto.valorRegular || 0,\r\n valortotal: this.calcTotalItemValue(item),\r\n })) || [];\r\n order.usuarioGuid = environment.USER_GUID;\r\n order.isEntrega = false;\r\n order.paymentNsu = extras?.nsu;\r\n order.isPagamentoOnline = !!extras?.nsu;\r\n order.restaurante = extras.rest;\r\n order.troco = 0;\r\n order.userZimmer = {\r\n nome: extras.user?.nome,\r\n fone: extras.user?.fone,\r\n email: extras.user?.email,\r\n };\r\n order.formaPagamento = extras.payment;\r\n order.comandaId = extras?.comandaId;\r\n order.referencia = extras.table; //params?.tableNumber || (this.auth.getTable() + '')\r\n if (extras.mode == environment.appModes.table) order.orderType = \"TABLE\";\r\n else if (extras.mode == environment.appModes.onlinePayment || extras.mode == environment.appModes.comanda) order.orderType = \"TOTEN\";\r\n else if (extras.mode == environment.appModes.drive) order.orderType = \"DRIVE\";\r\n\r\n return order;\r\n }\r\n\r\n /**\r\n * Instancia um Modal para que as informações necessárias para o envio via WhatsApp sejam requisitadas ao usuário\r\n * O envio da mensagem é feito pelo próprio componente pois os navegadores bloqueiam popups programáticos. Ou seja, nada de abrir\r\n * novas guias fora da main thread\r\n */\r\n private askZapInformation(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: UserInfoRequestZapPage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n switch (dismiss.role) {\r\n case \"confirm\":\r\n subscriber.next(true);\r\n subscriber.complete();\r\n break;\r\n case \"cancel\":\r\n subscriber.error(\"Não foi possível realizar pedido\");\r\n break;\r\n default:\r\n this.alertCtrl\r\n .create({\r\n message: \"Ops, algo deu errado\",\r\n })\r\n .then((alert) => alert.present());\r\n subscriber.error(\"Não foi possível realizar pedido\");\r\n break;\r\n }\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n\r\n private askGestorInformation(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: UserInfoRequestGestorPage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n switch (dismiss.role) {\r\n case \"confirm\":\r\n subscriber.next(true);\r\n subscriber.complete();\r\n break;\r\n case \"cancel\":\r\n subscriber.error();\r\n break;\r\n default:\r\n this.alertCtrl\r\n .create({\r\n message: \"Ops, algo deu errado\",\r\n })\r\n .then((alert) => alert.present());\r\n subscriber.error(\"Não foi possível realizar pedido\");\r\n break;\r\n }\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Pede as informações necessárias para a realização de pedido na rota de Pagamento online\r\n * @returns\r\n */\r\n private askPaymentInformation(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: UserInfoRequestCardPage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n switch (dismiss.role) {\r\n case \"confirm\":\r\n subscriber.next(dismiss.data);\r\n break;\r\n case \"cancel\":\r\n subscriber.error();\r\n break;\r\n default:\r\n this.alertCtrl\r\n .create({\r\n message: \"Ops, algo deu errado\",\r\n })\r\n .then((alert) => alert.present());\r\n subscriber.error();\r\n }\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Pede as informações necessárias para a realização de pedido na rota de Consuomo\r\n * @returns\r\n */\r\n private askPaymentInformationConsumo(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: UserInfoRequestConsumoPage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n switch (dismiss.role) {\r\n case \"confirm\":\r\n subscriber.next(dismiss.data);\r\n break;\r\n case \"cancel\":\r\n subscriber.error();\r\n break;\r\n default:\r\n this.alertCtrl\r\n .create({\r\n message: \"Ops, algo deu errado\",\r\n })\r\n .then((alert) => alert.present());\r\n subscriber.error();\r\n }\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n\r\n private askDriveThruInfo(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: UserInfoDrivePage,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n if (dismiss.role == \"confirm\") {\r\n subscriber.next(dismiss.data);\r\n subscriber.complete();\r\n } else subscriber.error();\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Pede uma comanda\r\n */\r\n private askComanda(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: ComandaScanPage,\r\n cssClass: \"modal-fullscreen\",\r\n id: environment.modals.comandaScannerId,\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n if (dismiss.role == \"confirm\") {\r\n subscriber.next(dismiss.data);\r\n subscriber.complete();\r\n } else subscriber.error();\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n\r\n private askTableNumber1(): Observable {\r\n return new Observable((subscriber) => {\r\n this.modalCtrl\r\n .create({\r\n component: TablePagePage,\r\n cssClass: \"modal-fullscreen\",\r\n id: environment.table_number_input_id,\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n if (dismiss.role == \"confirm\") {\r\n subscriber.next(dismiss.data);\r\n subscriber.complete();\r\n } else subscriber.error();\r\n });\r\n modal.present();\r\n });\r\n });\r\n }\r\n /**\r\n * Pergunta o número da mesa\r\n */\r\n private askTableNumber(): Observable {\r\n return new Observable((subscriber) => {\r\n this.alertCtrl\r\n .create({\r\n message: \"Digite corretamente o número da mesa para receber o seu pedido.\",\r\n animated: true,\r\n header: \"Digite o número da MESA:\",\r\n mode: \"ios\",\r\n inputs: [\r\n {\r\n id: environment.table_number_input_id,\r\n type: \"number\",\r\n cssClass: \"ion-text-center\",\r\n },\r\n ],\r\n buttons: [\r\n {\r\n text: \"Cancelar\",\r\n cssClass: \"alert_font_cancel\",\r\n handler: () => {\r\n try {\r\n this.modalCtrl.dismiss();\r\n } catch (e) {}\r\n subscriber.error();\r\n },\r\n },\r\n {\r\n text: \"Confirmar\",\r\n handler: () => {\r\n const tableNumberInput: IonInput = document.getElementById(environment.table_number_input_id) as any;\r\n if (((tableNumberInput.value || \"\") as string).length > 0) {\r\n subscriber.next(tableNumberInput.value);\r\n subscriber.complete();\r\n } else return false;\r\n },\r\n },\r\n ],\r\n backdropDismiss: false,\r\n })\r\n .then((alert) => alert.present());\r\n });\r\n }\r\n\r\n /**\r\n * Retorna o carrinho\r\n */\r\n getCart(): Cart {\r\n return this.cart;\r\n }\r\n\r\n /**\r\n * Pega os pedidos já realizados\r\n */\r\n getOrders(): Cart[] {\r\n return this.orders;\r\n }\r\n\r\n /**\r\n * Limpa os pedidos atuais e já realizados\r\n * @deprecated\r\n */\r\n logout(): void {\r\n this.orders = [];\r\n this.cart.items = [];\r\n this.cart.discount = 0;\r\n }\r\n\r\n /**\r\n * Busca o pedido pelo ID do usuário - obsoleto\r\n * @param { string|number } userId ID do cliente final\r\n */\r\n getOrderByUserId(userId: string | number): Observable> {\r\n return this.http.get>(`${environment.SERVERHOST}/pedido/meus/${userId}/999/1`);\r\n }\r\n\r\n /**\r\n * Busca o pedido pelo ID do restaurante e da mesa\r\n * Não está funcionando ainda, então está buscando os pedidos salvo no localStorage\r\n * @deprecated\r\n */\r\n getOrdersByRestauranteAndTable(): Cart[] | Observable> {\r\n return this.storage.get(\"orders\") || [];\r\n // Não funcionando ainda\r\n return this.http.get>(`${environment.SERVERHOST}/pedido/meus/${this.restaurantService.getRestaurant().restauranteId}/999/1`);\r\n }\r\n\r\n /**\r\n * Retorna o tipo de configuração de reconhecimento('qrcode', 'credentials' ou 'menu') salvo no storage\r\n */\r\n getMode(): string {\r\n return this.storage.get(environment.routeParams.appMode);\r\n //return \"qrcode\"\r\n }\r\n\r\n /**\r\n * Limpa os itens do carrinho\r\n */\r\n clear(): void {\r\n this.cart.items = [];\r\n }\r\n\r\n /**\r\n * Mostra o carrinho em um modal\r\n */\r\n showCart(items): void {\r\n this.modalCtrl\r\n .create({\r\n component: CartNewPage,\r\n componentProps: {\r\n cart: {\r\n items,\r\n discount: 0,\r\n },\r\n },\r\n id: environment.modals.cartNewId,\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n /**\r\n * Retorna a ficha..?\r\n * @deprecated\r\n */\r\n getFicha(): string | number {\r\n return this.storage.get(\"ficha\");\r\n }\r\n\r\n getFichaV2(): Observable {\r\n return this.ficha$.asObservable();\r\n }\r\n\r\n setFichaV2(fichaNumber: number): void {\r\n this.ficha$.next(fichaNumber);\r\n }\r\n /**\r\n * @returns Valor total do pedido\r\n */\r\n calcTotalItemValue(item: ItemCart): number {\r\n let total: number = 0;\r\n item.cartItemOpcoes.forEach((option) => (total += option.valor * option.quantidade));\r\n if (item.produto.numberMeiomeio > 1 && !item.produto.valorVenda && item.meiomeios.length > 0) {\r\n const mostExpensive = item.meiomeios.reduce((lastHalf, half) => ((lastHalf.valorPromocao || lastHalf.valorVenda) > (half.valorPromocao || half.valorVenda) ? lastHalf : half));\r\n total += mostExpensive.valorVendaComplemento || mostExpensive.valorPromocao || mostExpensive.valorVenda;\r\n }\r\n let preco = item.produto.valorPromocao || item.produto.valorVenda || item.produto.valorRegular || 0;\r\n total += item.number * preco;\r\n return Number(total.toFixed(2));\r\n }\r\n\r\n /**\r\n * @returns ID do pedido realizado (salvo no sessionStorage)\r\n */\r\n getPedidoIdInSession(): number | string {\r\n return this.storage.getSessionData(\"senha\");\r\n }\r\n\r\n /**\r\n * Procura o primeiro item com determinado ID de produto\r\n */\r\n getItemByProdId(prodId: number): ItemCart {\r\n return this.cart.items.find((item) => item.produto.produtoId == prodId);\r\n }\r\n\r\n /**\r\n * Retorna a quantidade de item + 1\r\n * Usado principalmente para gerar um id para um novo item\r\n */\r\n generateNextId(): number {\r\n return (this.cart.items.length > 0 ? this.cart.items[this.cart.items.length - 1].id : 0) + 1;\r\n // return this.getAllItems().length + 1\r\n }\r\n}\r\n\r\ninterface PaymentInfoRequestResponse {\r\n userName: string;\r\n phone: string;\r\n cpf: string;\r\n method: number;\r\n card: Card;\r\n}\r\n\r\ninterface ConsumoInfoRequestResponse {\r\n userName: string;\r\n phone: string;\r\n cpf: string;\r\n method: number;\r\n card: Card;\r\n cardConsumo: cardConsumo;\r\n}\r\n\r\ninterface DriveThruInfoRequestResponse {\r\n userName: string;\r\n licensePlate: string;\r\n phone?: string;\r\n cpf?: string;\r\n method: number;\r\n card?: Card;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\nimport { BaseService } from '../shared/base.service';\r\nimport { Category } from '../interfaces/category.interface';\r\nimport { CartService } from './cart.service';\r\nimport { StorageService } from './storage.service';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CategoryService extends BaseService {\r\n\r\n /**\r\n * Categorias do restaurante atual\r\n */\r\n private categories: Category[] = []\r\n\r\n constructor(\r\n protected http: HttpClient,\r\n protected cart: CartService,\r\n private storage: StorageService,\r\n ) {\r\n super(http, 'category')\r\n }\r\n\r\n // setCategory(cat: Category) {\r\n // this.category = cat;\r\n // }\r\n\r\n /**\r\n * Insere as categorias no service\r\n */\r\n setCategories(cats: Category[]): void {\r\n this.categories = cats;\r\n }\r\n\r\n /**\r\n * @returns Category[]\r\n */\r\n getCategories(): Category[] {\r\n return this.categories || [];\r\n }\r\n\r\n /**\r\n * Category\r\n * @param id \r\n */\r\n getCategoryById(id): Category {\r\n return this.categories?.find(c => c.categoriaId == id)\r\n }\r\n\r\n /**\r\n * Verifica qual estilo de lista de itens será aplicado\r\n */\r\n checkItemStyle(): string|number {\r\n return this.storage.get<{ categoryProdCardStyle: number }>(environment.storage.preferences).categoryProdCardStyle\r\n }\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { BehaviorSubject, forkJoin, Observable, of, Subject } from \"rxjs\";\r\n\r\nimport { Platform } from \"@ionic/angular\";\r\n\r\nimport { StorageService } from \"./storage.service\";\r\nimport { ZimmerStorage } from \"../models/zimmerStorage.model\";\r\nimport { QrcodeService } from \"./qrcode.service\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { AuthService } from \"../shared/auth.service\";\r\nimport { map, mergeMap, take, tap } from \"rxjs/operators\";\r\nimport { RestaurantService } from \"./restaurant.service\";\r\nimport { CartService } from \"./cart.service\";\r\nimport { config } from \"process\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ConfigurationService {\r\n private web: boolean;\r\n public modoApp: string = \"mode\";\r\n public isNroTable: boolean = false;\r\n public imagemRest: any;\r\n public isTablet: boolean = false;\r\n public isSmall: boolean = false;\r\n public isConsumo: boolean = false;\r\n public restauranteId: any;\r\n public restaurante: any;\r\n //public isNroMesa: boolean = false\r\n private configs$: BehaviorSubject = new BehaviorSubject({\r\n mode: \"menu\",\r\n cnpj: \"32759021000181\",\r\n });\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private cart: CartService,\r\n private qrcodeScanner: QrcodeService,\r\n private restService: RestaurantService,\r\n private router: Router,\r\n private storage: StorageService,\r\n platform: Platform\r\n ) {\r\n this.web = platform.is(\"mobileweb\") || platform.is(\"desktop\");\r\n this.storage\r\n .getMany([\r\n environment.storage.v2.mode,\r\n environment.storage.v2.cnpj,\r\n environment.storage.v2.tableNumber,\r\n environment.storage.v2.preferences,\r\n ])\r\n .subscribe({\r\n next: (configs) => this.configs$.next(configs),\r\n });\r\n this.configs$.subscribe({\r\n next: (configs) => {\r\n if (configs)\r\n forkJoin([\r\n this.storage.saveV2(\r\n environment.storage.v2.mode,\r\n configs?.mode || \"menu\"\r\n ),\r\n this.storage.saveV2(\r\n environment.storage.v2.cnpj,\r\n configs?.cnpj || \"32759021000181\"\r\n ),\r\n this.storage.saveV2(\r\n environment.storage.v2.tableNumber,\r\n configs?.reference\r\n ),\r\n this.storage.saveV2(\r\n environment.storage.v2.preferences,\r\n configs?.preferences\r\n ),\r\n ]).subscribe();\r\n },\r\n });\r\n console.log(this.configs$, \"confgi$\");\r\n }\r\n\r\n /**\r\n * Seta todas as configurações necessárias para o funcionamento do app\r\n * @param configs\r\n */\r\n config(configs?: {\r\n mode?: \"zap\" | \"pedido\" | \"qrcode\" | \"menu\" | \"ficha\" | \"gestor\";\r\n cnpj?: string;\r\n phoneNumber?: number;\r\n prodCardStyle?: number;\r\n tableNumber?: number;\r\n tablePassword?: number;\r\n }): Observable {\r\n const success$ = new BehaviorSubject(null);\r\n if (configs?.prodCardStyle == 1) configs.prodCardStyle = 2; // TODO apaga essa gambs do card\r\n\r\n const zimmer = this.storage.get() || new ZimmerStorage();\r\n if (configs) {\r\n zimmer.mode = configs.mode;\r\n zimmer.cnpj = configs.cnpj;\r\n zimmer.phoneNumber = configs.phoneNumber;\r\n zimmer.preferences.categoryProdCardStyle = configs.prodCardStyle || 2;\r\n // zimmer.tab = configs.prodCardStyle || 1\r\n zimmer.tableNumber = configs.tableNumber;\r\n }\r\n if (zimmer.mode && zimmer.cnpj) {\r\n console.log(\"zimmer.mode\", zimmer.mode);\r\n console.log(\"zimmer.cnpj\", zimmer.cnpj);\r\n\r\n this.storage.prepare(zimmer);\r\n // forkJoin([\r\n // this.storage.saveV2(environment.storage.v2.mode, zimmer.mode),\r\n // this.storage.saveV2(environment.storage.v2.cnpj, zimmer.cnpj),\r\n // this.storage.saveV2(environment.storage.v2.tableNumber, zimmer.tableNumber),\r\n // this.storage.saveV2(environment.storage.v2.preferences, zimmer.preferences),\r\n // new Observable(subscriber => subscriber.next(this.auth.changeTable(zimmer.tableNumber)))\r\n // ]).subscribe({\r\n // next: () => success$.next()\r\n // })\r\n } else {\r\n this.qrcodeScanner\r\n .scan({\r\n useNativePlugin: !this.web,\r\n side: \"back\",\r\n validation: (text: string) => {\r\n return (\r\n text.substr(0, environment.qrcodeConfigValidationLink.length) ==\r\n environment.qrcodeConfigValidationLink ||\r\n text.includes(environment.storage.appMode + \": \")\r\n );\r\n },\r\n })\r\n .subscribe({\r\n next: (text) => {\r\n if (text.substr(0, 4).includes(\"http\")) {\r\n this.router.navigateByUrl(text);\r\n success$.next();\r\n // success$.complete()\r\n } else if (text.includes(environment.storage.appMode + \": \")) {\r\n const jsonConfig: ZimmerStorage = JSON.parse(text);\r\n this.storage.prepare(jsonConfig);\r\n success$.next();\r\n // success$.complete()\r\n }\r\n },\r\n });\r\n }\r\n\r\n return success$.asObservable();\r\n }\r\n\r\n getConfig(): ZimmerStorage {\r\n return this.storage.get();\r\n }\r\n\r\n getConfigV2() {\r\n return this.configs$.asObservable();\r\n }\r\n\r\n configV2(configs?: AppConfig): Observable {\r\n this.cart.clear();\r\n\r\n //this.storage.clearV2();\r\n\r\n /*\r\n const storageQuerys = [\r\n environment.storage.v2.cnpj,\r\n environment.storage.v2.mode,\r\n environment.storage.v2.tableNumber,\r\n environment.storage.v2.preferences,\r\n ].map(key => this.storage.deleteV2(key).pipe(take(1)))\r\n return forkJoin(storageQuerys).pipe(\r\n take(1),\r\n mergeMap(saveQuerys => {\r\n this.storage.saveV2(environment.storage.v2.cnpj, configs.cnpj)\r\n this.storage.saveV2(environment.storage.v2.mode, configs.mode)\r\n this.storage.saveV2(environment.storage.v2.tableNumber,configs.reference)\r\n this.storage.saveV2(environment.storage.v2.preferences,configs.preferences)\r\n\r\n this.configs$.next(configs)\r\n return forkJoin(saveQuerys).pipe(take(1))\r\n }),\r\n );\r\n */\r\n // const storageQuerys = Object.keys(environment.storage.v2).map(key => this.storage.deleteV2(key).pipe(take(1)))\r\n const storageQuerys = [\r\n environment.storage.v2.cnpj,\r\n environment.storage.v2.mode,\r\n environment.storage.v2.tableNumber,\r\n environment.storage.v2.preferences,\r\n ].map((key) => this.storage.deleteV2(key).pipe(take(1)));\r\n return forkJoin(storageQuerys).pipe(\r\n take(1),\r\n map(() =>\r\n [\r\n environment.storage.v2.cnpj,\r\n environment.storage.v2.mode,\r\n environment.storage.v2.tableNumber,\r\n environment.storage.v2.preferences,\r\n ].map((storageKey) =>\r\n this.storage.saveV2(\r\n environment.storage.v2[storageKey],\r\n configs?.[environment.storage.v2[storageKey]]\r\n )\r\n )\r\n ),\r\n mergeMap((saveQuerys) => {\r\n this.configs$.next(configs);\r\n return forkJoin(saveQuerys).pipe(take(1));\r\n })\r\n );\r\n }\r\n\r\n initServices(): Observable {\r\n return forkJoin([\r\n this.restService.init() /*.pipe(tap(() => console.log('init do rest iniciado')))*/,\r\n this.auth.init() /*.pipe(tap(() => console.log('init do tableNumber iniciado')))*/,\r\n ]).pipe(take(1) /*, tap(() => console.log('Services iniciados'))*/);\r\n }\r\n\r\n getMode(): Observable {\r\n return this.storage.getV2(environment.storage.v2.mode);\r\n }\r\n\r\n /**\r\n * Retorna qual modo (user | rest) que o app está sendo usado\r\n */\r\n getBreed(): Observable<\"user\" | \"rest\"> {\r\n return this.storage.getV2<\"user\" | \"rest\">(environment.storage.v2.breed);\r\n }\r\n}\r\n\r\nexport interface AppConfig {\r\n mode: string;\r\n cnpj: string;\r\n preferences?: any;\r\n reference?: number;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nimport { ModalController } from '@ionic/angular';\r\n\r\nimport { environment } from '../../environments/environment';\r\nimport { QrcodeScannerPage } from '../pages/qrcode-scanner/qrcode-scanner.page';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Html5qrcodescannerService {\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n ) { }\r\n\r\n /**\r\n * Abre a página de scan\r\n * @param options \r\n */\r\n scan(options?: {\r\n side?: 'front'|'back',\r\n validation?: Function\r\n }): Observable {\r\n // const text$: Subject = new Subject()\r\n return new Observable(subscriber => {\r\n this.modalCtrl.create({\r\n component: QrcodeScannerPage,\r\n componentProps: {\r\n side: options.side,\r\n validation: options.validation || ((text: string) => true)\r\n },\r\n backdropDismiss: false,\r\n id: environment.html5qrcode.modalId,\r\n }).then((modal) => {\r\n modal.onDidDismiss().then(dismiss => {\r\n if(!dismiss.data.error) {\r\n subscriber.next(dismiss.data.message)\r\n subscriber.complete()\r\n } else subscriber.error(dismiss.data.message)\r\n })\r\n modal.present()\r\n })\r\n })\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { flatMap, map, mergeMap, tap } from 'rxjs/operators';\r\n\r\nimport { environment } from '../../environments/environment';\r\nimport { Order } from '../models/order/order.model';\r\nimport { AuthService, httpOptions } from '../shared/auth.service';\r\nimport { ResponseApi } from '../shared/base.service';\r\nimport { OrderItemResponse, OrderResponse } from '../models/order/order-response.model';\r\nimport { StorageService } from './storage.service';\r\nimport { RestaurantService } from './restaurant.service';\r\nimport { QrcodeService } from './qrcode.service';\r\n\r\n/**\r\n * Status possíveis atualmene no pedido\r\n * @improves Trazer da API na primeira carga de dados. Assim é possível atualizá-los somente via API. O tratamento então seria feito de mmaneira completamente dinâmica, deixando o front cada vez mais burro\r\n */\r\nexport const orderStatus: {\r\n ARRIVED_AT_ORIGIN: 8,\r\n CANCELLATION_REQUESTED: 10,\r\n CANCELLED: 4,\r\n CLOSED_TABLE: 96,\r\n COMANDAID_NOT_FOUND: 999,\r\n CONCLUDED: 7,\r\n CONFIRMED: 2,\r\n DISPATCHED: 5,\r\n DELIVERED: 6,\r\n ERROR_OPMESA1: 97,\r\n ERROR_OPMESA2: 99,\r\n GOING_TO_ORIGIN: 9,\r\n INTEGRATED: 3,\r\n INVISIBLE: 0,\r\n ITEM_NOT_INSERTED: 98,\r\n PLACED: 1,\r\n PRODUCT_NOT_FOUND: 90,\r\n READYTODELIVER: 11,\r\n TOTENID_NOT_FOUND: 91,\r\n UNKNOWN_ERROR: 95,\r\n WAITING_PAYMENT: 92,\r\n labels: string[]\r\n} = {\r\n ARRIVED_AT_ORIGIN: 8,\r\n CANCELLATION_REQUESTED: 10,\r\n CANCELLED: 4,\r\n CLOSED_TABLE: 96,\r\n COMANDAID_NOT_FOUND: 999,\r\n CONCLUDED: 7,\r\n CONFIRMED: 2,\r\n DISPATCHED: 5,\r\n DELIVERED: 6,\r\n ERROR_OPMESA1: 97,\r\n ERROR_OPMESA2: 99,\r\n GOING_TO_ORIGIN: 9,\r\n INTEGRATED: 3,\r\n INVISIBLE: 0,\r\n ITEM_NOT_INSERTED: 98,\r\n PLACED: 1,\r\n PRODUCT_NOT_FOUND: 90,\r\n READYTODELIVER: 11,\r\n TOTENID_NOT_FOUND: 91,\r\n UNKNOWN_ERROR: 95,\r\n WAITING_PAYMENT: 92,\r\n labels: [\r\n 'Invisível',\r\n 'Placed',\r\n 'Confirmado',\r\n 'Realizado',\r\n 'Cancelado',\r\n 'Despachado',\r\n 'Entregue',\r\n 'Concluído',\r\n 'No destino',\r\n 'Entregando',\r\n 'Cancelamento solicitado',\r\n 'Pronto para entrega',\r\n 'Produto não encontrado',\r\n 'TotemID não encontrado',\r\n 'Aguardando pagamento',\r\n 'Erro desconhecido',\r\n 'Mesa fechada',\r\n 'Erro OpMesa1',\r\n 'Item não inserido',\r\n 'Erro OpMesa2',\r\n 'ComandaID não encontrada'\r\n ]\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OrderService {\r\n\r\n private orders$: BehaviorSubject = new BehaviorSubject([])\r\n private comandaId$: BehaviorSubject = new BehaviorSubject(null)\r\n /**\r\n * Intervalo de buscas na api por pedidos através da comanda\r\n */\r\n private intervalLoadOrders\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private http: HttpClient,\r\n private restService: RestaurantService,\r\n private scanner: QrcodeService,\r\n private storage: StorageService,\r\n ) {\r\n this.initOrdersStates()\r\n storage.get(environment.storage.comandaId)\r\n }\r\n\r\n /**\r\n * Retorna da API um pedido pelo guid\r\n * @param id \r\n */\r\n getById(id: string, restToken: string): Observable {\r\n return this.http.get(`${environment.SERVERHOST}/v2/Pedido/byId/${id}/${restToken}`, httpOptions).pipe(tap(response => {\r\n if (!environment.production) {\r\n console.log('response', response)\r\n }\r\n }))\r\n }\r\n\r\n /**\r\n * Retorna um observable com a comandaId registrada\r\n * @note Está somente na v1\r\n * @deprecated\r\n */\r\n getComandaId():Observable {\r\n return this.comandaId$.pipe(tap(comandaId => this.storage.save(environment.storage.comandaId, comandaId)))\r\n }\r\n\r\n /**\r\n * Retorna os pedidos salvos no service\r\n */\r\n getOrders(): Observable {\r\n return this.orders$.asObservable()\r\n }\r\n\r\n /**\r\n * Se não for passado uma comandaId, ele abrirá o scanner de QR Code para que o cliente scaneie\r\n */\r\n getOrderByComandaId(comandaId?: string): Observable {\r\n if(comandaId) return this.http.get(`${environment.SERVERHOST}/pedido/ficha/${comandaId}`)\r\n else {\r\n return this.scanner.scan({\r\n validation: (v) => v.length === 36\r\n }).pipe(mergeMap(result => this.http.get(`${environment.SERVERHOST}/pedido/ficha/${result}`)))\r\n }\r\n }\r\n\r\n /**\r\n * @returns Número do status do pedido\r\n * @param pedidoId \r\n */\r\n getStatus(pedidoId: string): Observable {\r\n return this.http.get(`${environment.SERVERHOST}/pedido/obterStatus/${pedidoId}`, httpOptions)\r\n }\r\n\r\n /**\r\n * Seta um Id no observable do ID da comanda\r\n */\r\n setComandaId(comandaId: string) {\r\n this.comandaId$.next(comandaId)\r\n }\r\n\r\n /**\r\n * Requisita na API os pedidos conforme o número da comanda\r\n */\r\n initOrdersStates() {\r\n this.comandaId$.subscribe({\r\n next: comandaId => {\r\n if(comandaId) {\r\n this.intervalLoadOrders = setInterval(() => {\r\n this.getOpenOrdersByComandaId(comandaId).subscribe({\r\n next: orders => this.orders$.next(orders)\r\n })\r\n }, 5000)\r\n } else clearInterval(this.intervalLoadOrders)\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Retorna todos os pedidos aberto no zimmer\r\n */\r\n getOpenOrdersByZimmer(): Observable {\r\n return this.http.get>(`${environment.SERVERHOST}/v2/pedido/getByEnactment/${environment.USER_GUID}/30/1`).pipe(map(response => response.results))\r\n }\r\n\r\n /**\r\n * Devolve todos os pedidos abertos \r\n * @param table \r\n */\r\n private getOpenOrdersByComandaId(table: string|number): Observable {\r\n const orders$ = new Subject()\r\n // this.getOpenOrdersByZimmer().subscribe(response => openOrders.next(response.filter(order => order.restaurante.cnpj == this.storage.get('cnpj'))))\r\n this.comandaId$.subscribe({\r\n next: comandaId => {\r\n this.http.get(`${environment.SERVERHOST}/pedido/ficha/${comandaId}`).subscribe({\r\n next: orders => orders$.next(orders)\r\n })\r\n }\r\n })\r\n return orders$.asObservable()\r\n }\r\n\r\n /**\r\n * Pega os itens pedido pela mesa\r\n */\r\n getItemsOrderedByTableNumber(): Observable {\r\n return this.restService.getRest().pipe(\r\n flatMap(rest => this.auth.getTableV2().pipe(map(table => ({ restId: rest.restauranteId, mesaId: table })))),\r\n flatMap(data => this.http.get(`${environment.SERVERHOST}/pedido/itensByMesa/${data.restId}/${data.mesaId}`))\r\n )\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\nimport { environment } from '../../environments/environment';\r\nimport { Payment } from '../models/payment/payment.model';\r\nimport { RestaurantService } from './restaurant.service';\r\nimport { User } from '../models/user.model';\r\nimport { cardConsumo } from '../models/payment/consumo.model';\r\nimport { map } from 'rxjs/operators';\r\ndeclare var PagSeguroDirectPayment\r\n\r\nexport interface PaymentResponse {\r\n errors: boolean\r\n message: string\r\n nsu: string\r\n}\r\n\r\nexport interface ConsumoResponse {\r\n aproved: boolean\r\n mensage: string\r\n valor: number\r\n desconto: number\r\n nsu?: string\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PaymentService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private restaurantService: RestaurantService\r\n ) { }\r\n\r\n /**\r\n * Realiza o pagamento especificado\r\n * @param { Payment } payment \r\n */\r\n pay(payment: Payment): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/payment/doPayment`, payment)\r\n }\r\n\r\n /**\r\n * @deprecated\r\n */\r\n initSession() {\r\n return this.http.post(`${environment.SERVERHOST}/payment/doSession/${this.restaurantService.getRestaurant().restauranteId}`, new Object())\r\n .subscribe((response: any) => {\r\n PagSeguroDirectPayment.setSessionId(response.message)\r\n })\r\n }\r\n\r\n /**\r\n * @deprecated\r\n */\r\n getCardInformation(data: { userName?: string, cardNumber?: number, cardCvv?: number, expiration?: string }) {\r\n const subject: Subject = new Subject()\r\n subject.next(false)\r\n\r\n PagSeguroDirectPayment.getBrand({\r\n cardBin: data.cardNumber,\r\n success: response => {\r\n const cardBrand = response.brand.name\r\n const dateExpiration = data.expiration.split('/')\r\n const values = new Object() as any\r\n values.cardNumber = data.cardNumber,\r\n values.brand = cardBrand,\r\n values.cvv = data.cardCvv,\r\n values.monthExp = dateExpiration[0]\r\n values.yearExp = dateExpiration[1]\r\n const user = new User({ nome: data.userName })\r\n this.getCardToken(values).subscribe(result => subject.next(result))\r\n }\r\n })\r\n return subject\r\n }\r\n\r\n /**\r\n * @param values \r\n * @param user \r\n * @deprecated\r\n */\r\n private getCardToken(values: { userName?: string, cardNumber?: number, cvv?: number, brand: string, monthExp: string, yearExp: string }, user?: User) {\r\n const subject: Subject = new Subject();\r\n subject.next(false)\r\n\r\n PagSeguroDirectPayment.createCardToken({\r\n cardNumber: values.cardNumber,\r\n brand: values.brand,\r\n cvv: values.cvv,\r\n expirationMonth: values.monthExp,\r\n expirationYear: values.yearExp,\r\n success: response => {\r\n const token = response.card.token\r\n // this.cart.doOrderWithOnlinePayment(response.card, user)\r\n subject.next({ card: response.card, user })\r\n }\r\n })\r\n return subject\r\n }\r\n\r\n getSaldoConsumo(restId: number, cardNro: number):Observable{\r\n return this.http.get(`${environment.SERVERHOST}/CartaoConsumo/obterByConsuNr/${restId}/${cardNro}`)\r\n .pipe(map(r => r))\r\n }\r\n\r\n payConsumo(payment: Payment): Observable {\r\n const consumo = {\r\n numeroCartao: payment.numeroCartao,\r\n valor: payment.saldo,\r\n tipoMov: payment.tipoMov,\r\n restauranteId:payment.restauranteId\r\n }\r\n return this.http.post(`${environment.SERVERHOST}/CartaoConsumo/adicionarMov`, consumo)\r\n }\r\n \r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { Observable } from \"rxjs\";\r\nimport { tap, map, flatMap } from \"rxjs/operators\";\r\n\r\nimport { BaseService, ResponseApi } from \"../shared/base.service\";\r\nimport { environment } from \"../../environments/environment\";\r\nimport { Product } from \"../models/produto.model\";\r\nimport { ProductOptionType } from \"../interfaces/product-option.interface\";\r\nimport { RestaurantService } from \"./restaurant.service\";\r\nimport { Half } from \"../models/half.model\";\r\nimport { Category } from \"../interfaces/category.interface\";\r\nimport { Group } from \"../models/group.model\";\r\nimport { Restaurant } from \"../models/restaurant.model\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class ProductService extends BaseService {\r\n constructor(\r\n protected http: HttpClient,\r\n private restaurantService: RestaurantService\r\n ) {\r\n super(http, \"produto\");\r\n }\r\n\r\n /**\r\n * Retorna todos os produtos da API filtrados por restauranteId\r\n */\r\n getAll(restId?: number): Observable> {\r\n return this.http\r\n .get>(\r\n `${environment.SERVERHOST}/produto/produtos/${\r\n restId || this.restaurantService.getRestaurant().restauranteId\r\n }/999/1`\r\n // {\r\n // \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n // \treportProgress: false,\r\n // \tobserve: 'body',\r\n // \tresponseType: 'json',\r\n // }\r\n )\r\n .pipe(\r\n tap(\r\n (v) => {\r\n return v;\r\n },\r\n (e) => {\r\n // this.handleError(e, 'getAll');\r\n return [];\r\n }\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Atualiza um produto\r\n * @param prod\r\n */\r\n // update(prod: Product): Observable<{ errors: boolean, message: string }> {\r\n // return super.update(prod)\r\n // }\r\n\r\n /**\r\n * Busca na API as opções do produto\r\n */\r\n getOptions(productId: number): Observable {\r\n const restauranteId = this.restaurantService.getRestaurant()?.restauranteId;\r\n return this.http\r\n .get>(\r\n `${environment.SERVERHOST}/produtoOpcao/obterByProdutoId/${restauranteId}/${productId}`\r\n )\r\n .pipe(\r\n map((data) => {\r\n return data.results;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Busca os meio a meios do produto pelo ID\r\n */\r\n getHalfs(productId: number): Observable {\r\n const restauranteId = this.restaurantService.getRestaurant()?.restauranteId;\r\n return this.http\r\n .get>(\r\n `${environment.SERVERHOST}/produto/meiomeios/${restauranteId}/${productId}/999/1`\r\n )\r\n .pipe(map((response) => response.results));\r\n }\r\n\r\n /**\r\n * Busca uma lista de Grupos de Cateogorias\r\n * @param deepLevel Serve dizer à API até qual nível de escopo o JSON virá.\r\n * @Exemplo deepLevel == 0 (retornará apenas os grupos), deepLevel == 1 (retornará grupos com suas respectivas categorias)\r\n */\r\n getGroups(restId: number, deepLevel: number = 0): Observable {\r\n return this.http.get(\r\n `${environment.SERVERHOST}/grupoproduto/byRestId/${restId}`,\r\n {\r\n headers: {\r\n deepLevel: deepLevel + \"\",\r\n },\r\n }\r\n );\r\n }\r\n\r\n getGroupsByMode(restId: number, deepLevel: number = 0, mode:string): Observable {\r\n let rota:string = '';\r\n console.log(mode, rota, \"ANTES DO IF\");\r\n if(mode === 'gestor' || mode==='pedido' || mode ==='zap'){\r\n rota = 'rotaDelivery'\r\n } else if (mode === 'qrcode' || mode === 'menu'){\r\n rota = 'rotaMesa'\r\n }else if(mode === 'ficha'){\r\n rota = 'rotaFicha'\r\n }\r\n console.log(mode, rota, \"DEPOIS DO IF\");\r\n \r\n return this.http.get(\r\n `${environment.SERVERHOST}/grupoproduto/byRestIdMode/${restId}/${rota}`,\r\n {\r\n headers: {\r\n deepLevel: deepLevel + \"\",\r\n },\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Busca uma lista de Categorias de Produtos\r\n * @param deepLevel Serve dizer à API até qual nível de escopo o JSON virá.\r\n * @Exemplo deepLevel == 0 (retornará apenas os grupos), deepLevel == 1 (retornará grupos com suas respectivas categorias)\r\n * @manutenção\r\n */\r\n getCategories() {}\r\n\r\n /**\r\n * Procura os produtos pelo ID da categoria\r\n */\r\n getByCategoryId(catId: number) {\r\n return this.http.get(\r\n `${environment.SERVERHOST}/produto/byCategoryId/${catId}`\r\n );\r\n }\r\n\r\n /**\r\n * Pega os produtos aos poucos\r\n */\r\n getLazy(\r\n quantity: number,\r\n catId: number,\r\n lastProdName: string = \"*\"\r\n ): Observable {\r\n const rest$ = this.restaurantService.getRest();\r\n return rest$.pipe(\r\n flatMap((rest) =>\r\n this.http.get(\r\n `${environment.SERVERHOST}/produto/lazy/${rest.restauranteId}/${quantity}/${catId}/${lastProdName}`\r\n )\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Pega os complementos dos meios meios\r\n */\r\n getProductsHalfComplements(productId: number): Observable {\r\n const rest$ = this.restaurantService.getRest();\r\n return rest$.pipe(\r\n flatMap((rest) =>\r\n this.http.get(\r\n `${environment.SERVERHOST}/produtoopcao/obterByProdutoId/${rest.restauranteId}/${productId}`\r\n )\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport interface CategoryResponseApi {\r\n categoria: Category;\r\n complemento: [];\r\n produtos: Product[];\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map, mergeAll, tap } from 'rxjs/operators';\r\n\r\nimport { Geolocation } from '@ionic-native/geolocation/ngx'\r\nimport { NativeGeocoder, NativeGeocoderResult, NativeGeocoderOptions } from '@ionic-native/native-geocoder/ngx'\r\n\r\nimport { Localizacao } from '../../models/address/localizacao.model';\r\nimport { GeolocationPosition } from '../../interfaces/geolocation-position.interface';\r\nimport { environment } from '../../../environments/environment';\r\nimport { StorageService } from '../storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AddressService {\r\n\r\n private address$: BehaviorSubject\r\n private _address: Localizacao\r\n private _context: string = 'AddressService'\r\n\r\n constructor(\r\n private geolocation: Geolocation,\r\n private http: HttpClient,\r\n private nativeGeocoder: NativeGeocoder,\r\n private storage: StorageService,\r\n ) {\r\n this.address$ = new BehaviorSubject(null)\r\n storage.getV2(environment.storage.v2.userAddress).subscribe({\r\n next: address => this.address$.next(address)\r\n }) // Checa se já existe um endereço salvo\r\n }\r\n\r\n get(): Observable {\r\n return this.address$.asObservable().pipe(tap(address => this._address = address))\r\n }\r\n\r\n /**\r\n * Retorna o valor do endereço atual do usuário\r\n * @note Não use à menos que realmente seja necessário. Há 99,9% de chance de a lógica do código estar errada, caso precise disso\r\n * @note Devido a minha falta de conhecimento pra controlar uma estrutura puramente declarativa, resolvi adotar essa maneira de trabalhar.\r\n * Mantenha as alterações do set de address pelo subject, mas está liberada o uso dessa função para a passagem de parâmetros por exemplo\r\n */\r\n getCurrentAddress(): Localizacao {\r\n return this._address\r\n }\r\n\r\n /**\r\n * Salva o endereço no storage e depois passa o valor pra todas as inscrições\r\n * @param address \r\n */\r\n set(address: Localizacao|GeolocationPosition): Observable {\r\n if(!environment.production) console.log('saving address')\r\n const saveAddress$ = new Subject()\r\n\r\n if(address instanceof Localizacao) {\r\n if(!environment.production) console.log('address is an Address')\r\n\r\n // Salvando no storage\r\n const sub_set = this.storage.saveV2(environment.storage.v2.userAddress, address).subscribe({\r\n next: value => {\r\n if(!environment.production) console.log(value, 'value from AddressService - set')\r\n this.address$.next(address)\r\n saveAddress$.next(address)\r\n // Limpando inscrição para evitar memory leak\r\n sub_set.unsubscribe()\r\n }\r\n })\r\n\r\n } else {\r\n if(!environment.production) console.log('address is a Geolocation')\r\n\r\n // Buscando endereço através da localização\r\n this.getAddressFromCoodinates(address).subscribe(add => {\r\n const newAddress = new Localizacao(add)\r\n this.address$.next(newAddress)\r\n saveAddress$.next(newAddress)\r\n })\r\n }\r\n return saveAddress$.asObservable()\r\n }\r\n\r\n /**\r\n * Busca a localização do usuário\r\n */\r\n searchLocation(): Observable {\r\n return new Observable(subscriber => {\r\n this.geolocation.getCurrentPosition()\r\n .then(position => subscriber.next(position))\r\n .catch(err => subscriber.error(err))\r\n })\r\n }\r\n\r\n /**\r\n * Retorna as coordenadas baseado na string que foi pesquisada\r\n * @param address \r\n */\r\n getCoordinatesFromAddress(address: string): Observable {\r\n if(!environment.production) console.log('getting coordinates from address')\r\n const coordinates$ = new Subject()\r\n this.nativeGeocoder.forwardGeocode(address, {\r\n maxResults: 5,\r\n useLocale: true\r\n }).then(result => coordinates$.next(result[0]))\r\n return coordinates$.asObservable()\r\n }\r\n\r\n /**\r\n * Busca o endereço pelas coordenadas\r\n * @param position \r\n */\r\n getAddressFromCoodinates(position: GeolocationPosition): Observable {\r\n if(!environment.production) console.log('getting address from coordinates')\r\n const geocoderResult = new Subject()\r\n this.nativeGeocoder.reverseGeocode(position.coords.latitude, position.coords.longitude, {\r\n useLocale: true,\r\n maxResults: 5\r\n }).then(result => geocoderResult.next(new Localizacao(Localizacao.assignLocation(result[0]))))\r\n return geocoderResult\r\n }\r\n\r\n /**\r\n * Retorna o endereço pelo cep\r\n * @param cep \r\n */\r\n getAddressFromCep(cep: string): Observable {\r\n if(!environment.production) console.log('searching address from cep')\r\n return this.http.get(`${environment.SERVERHOST}/localizacao/viaCep/${cep}`)\r\n }\r\n\r\n /**\r\n * Retorna o endereço atual do usuário\r\n */\r\n locateUser() {\r\n if(!environment.production) console.log('location user')\r\n return new Observable(subscriber => {\r\n const sub = this.searchLocation().pipe(\r\n map(position => this.getAddressFromCoodinates(position)),\r\n mergeAll(1)\r\n ).subscribe(result => {\r\n if(!environment.production) console.log(result, 'user located')\r\n subscriber.next(new Localizacao(result))\r\n subscriber.complete()\r\n sub.unsubscribe()\r\n })\r\n })\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\n\r\nimport { environment } from '../../../environments/environment';\r\nimport { StorageService } from '../storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GalleryService {\r\n\r\n public images: string[] = []\r\n\r\n constructor(\r\n private storage: StorageService\r\n ) { }\r\n\r\n include(img64: string) {\r\n this.storage.push(environment.storage.v2.gallery, img64).subscribe({\r\n next: () => this.images.push(img64)\r\n })\r\n }\r\n\r\n remove(picture: string) {\r\n this.storage.filter(environment.storage.v2.gallery, (pic) => pic != picture).subscribe({\r\n next: () => this.refreshImages()\r\n })\r\n }\r\n\r\n init() {\r\n this.refreshImages()\r\n }\r\n\r\n private refreshImages() {\r\n this.storage.getV2(environment.storage.v2.gallery).subscribe({\r\n next: images => this.images = images || []\r\n })\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n/**\r\n * Usado junto com a diretiva IonMask que eu criei para os `IonInput`'s\r\n */\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class MaskService {\r\n /**\r\n * Máscaras setadas\r\n *\r\n * *obs.:* `Não` instancie este serviço novamente a menos que para algo específico pois as máscaras próprias serão perdidas\r\n * Nada a ver isso aqui tio, usa essa varioável não (não sei o que eu tava na cabeça)\r\n */\r\n public customMasks: Object = new Object();\r\n\r\n public cep: Array = [\r\n /[0-9]/,\r\n /[0-9]/,\r\n \".\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public cepGestor: Array = [\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public phoneGestor13: Array = [\r\n \"(\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n \")\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public phoneGestor14: Array = [\r\n \"(\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n \")\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public uf: Array = [/[a-zA-Z]/, /[a-zA-Z]/];\r\n\r\n public cardNumber: Array = [\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public cardCvv: Array = [/[0-9]/, /[0-9]/, /[0-9]/];\r\n\r\n public cardExpDate: Array = [\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"/\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public cpf: Array = [\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \".\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \".\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public cardConsumo: Array = [\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n /**\r\n * Placa de carro\r\n */\r\n public licensePlate: Array = [\r\n /[a-zA-Z]/,\r\n /[a-zA-Z]/,\r\n /[a-zA-Z]/,\r\n \"-\",\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n /[0-9]/,\r\n ];\r\n\r\n public troco: (value: string) => Array = (\r\n value: string\r\n ): Array => {\r\n switch (value.length) {\r\n case 0:\r\n return [\"0\", \",\", \"0\", \"0\"];\r\n case 1:\r\n return [\"0\", \",\", \"0\", /[0-9]/];\r\n case 2:\r\n return [\"0\", \",\", /[0-9]/, /[0-9]/];\r\n case 3:\r\n return [/[0-9]/, \",\", /[0-9]/, /[0-9]/];\r\n default:\r\n const regexArr = new Array(value.length - 3);\r\n regexArr.forEach((v) => {\r\n // v = /[0-9]/\r\n v = new RegExp(\"[0-9]\");\r\n });\r\n return [...regexArr, \",\", /[0-9]/, /[0-9]/];\r\n }\r\n };\r\n\r\n constructor() {}\r\n\r\n setCustom(maskName: string, mask: Array): void {\r\n this.customMasks[maskName] = mask;\r\n }\r\n\r\n getCustom(maskName: string): Array {\r\n return this.customMasks[maskName] || this[maskName];\r\n }\r\n\r\n isValid(value: string, mask: Array) {\r\n value = value + \"\";\r\n const invalidIndex = mask.findIndex((r, index: number) =>\r\n r instanceof RegExp ? !r.test(value[index]) : r != value[index]\r\n );\r\n return invalidIndex == -1;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Observable, Subject } from \"rxjs\";\r\nimport { take, tap } from \"rxjs/operators\";\r\n\r\nimport { Platform } from \"@ionic/angular\";\r\nimport { BarcodeScanner } from \"@ionic-native/barcode-scanner/ngx\";\r\n\r\nimport { Html5qrcodescannerService } from \"./html5qrcodescanner.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class QrcodeService {\r\n private web: boolean;\r\n\r\n constructor(\r\n private barcodeScanner: BarcodeScanner,\r\n private html5qrcodeScanner: Html5qrcodescannerService,\r\n platform: Platform\r\n ) {\r\n this.web = platform.is(\"mobileweb\") || platform.is(\"desktop\");\r\n }\r\n\r\n /**\r\n * Scaneia um qrcode usando uma lib pura em JS ou em um plugin nativo\r\n * @param options\r\n */\r\n scan(\r\n options: {\r\n useNativePlugin?: boolean;\r\n side?: \"front\" | \"back\";\r\n validation?: (v: string) => boolean;\r\n } = {\r\n useNativePlugin: !this.web,\r\n side: \"back\",\r\n }\r\n ) {\r\n const useNativePlugin =\r\n options?.useNativePlugin === false || options?.useNativePlugin === true\r\n ? options.useNativePlugin\r\n : !this.web;\r\n\r\n if (useNativePlugin) {\r\n return new Observable((subscriber) => {\r\n this.barcodeScanner\r\n .scan({\r\n disableSuccessBeep: true,\r\n preferFrontCamera: options?.side == \"front\",\r\n showFlipCameraButton: true,\r\n showTorchButton: true,\r\n formats: \"QR_CODE,PDF_417\",\r\n disableAnimations: true, // iOs\r\n })\r\n .then((text) => {\r\n const validation = options?.validation || ((v: string) => true);\r\n\r\n if (validation(text.text)) {\r\n subscriber.next(text.text);\r\n subscriber.complete();\r\n } else subscriber.error(\"QR Code incorreto\");\r\n })\r\n .catch((err) => subscriber.error(err));\r\n });\r\n } else {\r\n const scanOptions = new Object({\r\n side: options?.side || \"back\",\r\n validation: options.validation,\r\n });\r\n return this.html5qrcodeScanner.scan(scanOptions).pipe(take(1));\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { BehaviorSubject, Observable, Subject } from \"rxjs\";\r\nimport { flatMap, map, take, tap } from \"rxjs/operators\";\r\n\r\nimport { BaseService } from \"../shared/base.service\";\r\nimport { Restaurant } from \"../models/restaurant.model\";\r\nimport { environment } from \"../../environments/environment\";\r\nimport { Flyer } from \"../models/flyer.model\";\r\nimport { RestauranteRating } from \"../models/rate.model\";\r\nimport { ConfigurationService } from \"./configuration.service\";\r\nimport { StorageService } from \"./storage.service\";\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class RestaurantService extends BaseService {\r\n private restaurant: Restaurant;\r\n private restaurant$: BehaviorSubject =\r\n new BehaviorSubject(null);\r\n\r\n constructor(protected http: HttpClient, private storage: StorageService) {\r\n super(http, \"restaurante\");\r\n // this.config.getConfigV2().pipe(flatMap(configs => this.getByCnpj(configs.cnpj))).subscribe({\r\n // next: rest => this.restaurant$.next(rest)\r\n // })\r\n // this.restaurant$.subscribe({\r\n // next: rest => console.log(rest, 'passando pelo rest')\r\n // })\r\n // this.config.getConfigV2().pipe(flatMap(configs => this.getByCnpj(configs.cnpj))).subscribe({\r\n // next: rest => this.restaurant$.next(rest)\r\n // })\r\n }\r\n\r\n init(): Observable {\r\n return this.storage.getV2(environment.storage.v2.cnpj).pipe(\r\n flatMap((cnpj) => {\r\n console.log(\"cnpj\", cnpj);\r\n return this.getByCnpj(cnpj);\r\n }),\r\n flatMap((rest) => {\r\n console.log(\"restaurante\", rest);\r\n this.restaurant$.next(rest);\r\n return this.storage.saveV2(environment.storage.v2.cnpj, rest.cnpj);\r\n }),\r\n take(1)\r\n );\r\n }\r\n\r\n /**\r\n * Busca um restaurante pelo CNPJ\r\n * @param cnpj\r\n * @returns Restaurante\r\n */\r\n getByCnpj(cnpj: number | string): Observable {\r\n return (\r\n this.http\r\n .get(\r\n `${environment.SERVERHOST}/restaurante/restauranteByCnpj/${cnpj}`\r\n )\r\n // return this.http.post(`http://192.168.1.51:7779/zimmer/restaurante/getone`, { field: 'cnpj', value: cnpj })\r\n .pipe(\r\n map(\r\n (r) => r,\r\n (e) => {\r\n this.handleError(e, \"getByCnpj\");\r\n return null;\r\n }\r\n )\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Login do estabelecimento\r\n * @param login\r\n * @param password\r\n */\r\n login(\r\n login: string,\r\n password: string\r\n ): Observable<{ restaurant: Restaurant; token?: string }> {\r\n const subject = new Subject<{ restaurant: Restaurant; token?: string }>();\r\n this.getByCnpj(login).subscribe(\r\n (data) => {\r\n this.restaurant = data;\r\n if (data?.senhaMaster == password) {\r\n subject.next({\r\n restaurant: data,\r\n token: data.token,\r\n });\r\n } else {\r\n subject.next({\r\n restaurant: null,\r\n });\r\n }\r\n },\r\n (error) => {\r\n this.toastController\r\n .create({\r\n message: error + \"-\" + JSON.stringify(error),\r\n duration: 3000,\r\n color: \"primary\",\r\n })\r\n .then((toast) => toast.present());\r\n }\r\n );\r\n return subject.asObservable();\r\n }\r\n\r\n /**\r\n * Atualiza os dados de um restaurante\r\n * @param restaurant\r\n */\r\n updateRestaurant(restaurant: Restaurant): Observable {\r\n return (\r\n this.http\r\n .put(\r\n `${environment.SERVERHOST}/restaurante/alterarrestaurante`,\r\n restaurant\r\n )\r\n // return this.http.put('http://192.168.1.51:7779/zimmer/restaurante/restauranteId', restaurant)\r\n .pipe(\r\n map(\r\n (data) => {\r\n if (data) {\r\n this.setRestaurant(restaurant);\r\n return true;\r\n } else {\r\n this.handleError(null, \"Não foi possível atualizar\");\r\n return false;\r\n }\r\n },\r\n (error) => {\r\n this.handleError(error, \"Não foi possível atualizar\");\r\n return false;\r\n }\r\n )\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Atulaiza as preferências do estabelecimento\r\n * @param preferences\r\n * @deprecated\r\n */\r\n updatePreferences(preferences: {\r\n theme: string;\r\n zimmerimage: any;\r\n zimmer: string;\r\n }): Observable {\r\n const res = this.getRestaurant();\r\n res.themecolor = preferences.theme;\r\n // res.zimmerimage = hast to convert image;\r\n res.zimmer = preferences.zimmer;\r\n return this.updateRestaurant(res);\r\n }\r\n\r\n /**\r\n * Injeta um estabelecimento no service\r\n * @param rest\r\n */\r\n setRestaurant(rest: Restaurant): void {\r\n this.restaurant = rest;\r\n this.restaurant$.next(rest);\r\n }\r\n\r\n /**\r\n * @deprecated\r\n * @returns Estabelecimento injetado\r\n */\r\n getRestaurant(): Restaurant {\r\n return this.restaurant;\r\n }\r\n\r\n /**\r\n * getRestauran da V2\r\n */\r\n getRest(): Observable {\r\n return this.restaurant$.asObservable();\r\n }\r\n\r\n /**\r\n * Retorna se o restaurante está atendendo no momento\r\n */\r\n isOpen(rest?: Restaurant): Observable {\r\n return this.getByCnpj(rest?.cnpj || this.restaurant.cnpj).pipe(\r\n map((rest) => rest.isOperation)\r\n );\r\n }\r\n\r\n /**\r\n * Verifica se o restaurante está permitido a utilizar o Zimmer\r\n */\r\n isActive(rest?: Restaurant): Observable {\r\n return this.getByCnpj(rest?.cnpj || this.restaurant.cnpj).pipe(\r\n map((rest) => rest.isOperation)\r\n );\r\n }\r\n\r\n /**\r\n * Recupera os flyers do Restaurante\r\n */\r\n getFlyers(restId?: number): Observable {\r\n if (restId)\r\n return this.http.get(\r\n `${environment.SERVERHOST}/flyers/byRestId/${restId}`\r\n );\r\n else\r\n return this.restaurant$.pipe(\r\n flatMap((rest) =>\r\n this.http.get(\r\n `${environment.SERVERHOST}/flyer/byRestId/${rest.restauranteId}`\r\n )\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Avalia o restaurante\r\n */\r\n rate(rate: RestauranteRating): Observable {\r\n return this.http.post(\r\n `${environment.SERVERHOST}/restauranteRating`,\r\n rate\r\n );\r\n }\r\n\r\n /**\r\n * Busca um restaurante pelo Token\r\n * @param cep\r\n * @param token\r\n * @returns Restaurante\r\n */\r\n getByToken(cep: string, token: string): Observable {\r\n return this.http\r\n .get(\r\n `${environment.SERVERHOST}/restaurante/restaurantbytoken/${cep}/${token}`\r\n )\r\n .pipe(\r\n map(\r\n (r) => r,\r\n (e) => {\r\n this.handleError(e, \"getByToken\");\r\n return null;\r\n }\r\n )\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Storage } from '@ionic/storage'\r\nimport { forkJoin, Observable } from 'rxjs';\r\nimport { flatMap, map, take, tap } from 'rxjs/operators';\r\n\r\nimport { ZimmerStorage } from '../models/zimmerStorage.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor(\r\n private storage: Storage\r\n ) { }\r\n\r\n /**\r\n * Cria o objeto 'zimmer' no storage passado no parâmetro, se não for passado, cria um novo\r\n * @param zimmerObj - ZimmerStorage\r\n */\r\n prepare(zimmerObj: ZimmerStorage): void {\r\n // const zimmer = (JSON.parse(localStorage.getItem('zimmer')) as ZimmerStorage) || new Object() as ZimmerStorage\r\n const zimmer = new Object() as ZimmerStorage\r\n Object.keys(zimmerObj).forEach(key => {\r\n zimmer[key] = zimmerObj[key]\r\n })\r\n sessionStorage.setItem('zimmer', JSON.stringify(zimmer))\r\n }\r\n\r\n /**\r\n * chaveia um valor no storage\r\n * @param { string } key Chave\r\n * @param { string } value\r\n */\r\n save(key: string, value): void {\r\n const zimmer = JSON.parse(sessionStorage.getItem('zimmer')) as ZimmerStorage || new Object()\r\n zimmer[key] = value\r\n sessionStorage.setItem('zimmer', JSON.stringify(zimmer))\r\n }\r\n\r\n /**\r\n * chaveia um valor no storage\r\n * @param { string } key Chave\r\n * @param { string } value\r\n */\r\n saveV2(key: string, value): Observable {\r\n return (new Observable(subscriber => {\r\n this.storage.set(key, value).then(() => {\r\n subscriber.next()\r\n subscriber.complete()\r\n })\r\n }))\r\n }\r\n\r\n /**\r\n * Retorna o valor da chave do storage\r\n * @param { string } key\r\n */\r\n get(key?: string): T {\r\n const zimmer = JSON.parse(sessionStorage.getItem('zimmer')) as ZimmerStorage\r\n return key ? zimmer?.[key] : zimmer\r\n }\r\n\r\n /**\r\n * Retorna o valor da chave do storage\r\n * @param { string } key\r\n */\r\n getV2(key?: string): Observable {\r\n return new Observable(subscriber => {\r\n this.storage.get(key).then(value => {\r\n subscriber.next(value)\r\n subscriber.complete()\r\n })\r\n })\r\n }\r\n\r\n /**\r\n * Junta todas os resultados em um objeto\r\n */\r\n getMany(keys: string[]): Observable {\r\n // return new Observable(subscriber => {\r\n // const result: T = new Object() as T\r\n // const storageSearchs: Observable[] = keys.map(key => this.getV2(key).pipe(tap(data => result[key] = data)))\r\n const storageSearchsObj: T = new Object() as T\r\n keys.forEach(key => storageSearchsObj[key] = this.getV2(key).pipe(take(1)))\r\n // console.log(new Object({\r\n // ...keys\r\n // }))\r\n \r\n // console.log(storageSearchs)\r\n return forkJoin(storageSearchsObj)/*.subscribe({\r\n next: () => {\r\n console.log('conseguiu dar sub')\r\n subscriber.next(result)\r\n }\r\n })*/\r\n // })\r\n }\r\n\r\n /**\r\n * Apaga o valor de uma chave do storage\r\n */\r\n delete(key: string): void {\r\n const zimmer = JSON.parse(sessionStorage.getItem('zimmer')) as ZimmerStorage\r\n delete zimmer[key]\r\n sessionStorage.setItem('zimmer', JSON.stringify(zimmer))\r\n }\r\n\r\n /**\r\n * Apaga o valor de uma chave do storage\r\n */\r\n deleteV2(key: string): Observable {\r\n return new Observable(subscriber => {\r\n this.storage.remove(key).then(() => {\r\n subscriber.next()\r\n subscriber.complete()\r\n })\r\n })\r\n }\r\n clearV2(){\r\n this.storage.clear();\r\n }\r\n /**\r\n * Chaveia um valor na session\r\n * @param key \r\n * @param value \r\n */\r\n setSessionData(key: string, value): void {\r\n const zimmer = JSON.parse(sessionStorage.getItem('zimmer')) || new Object()\r\n zimmer[key] = value\r\n sessionStorage.setItem('zimmer', JSON.stringify(zimmer))\r\n }\r\n\r\n /**\r\n * Retorna um valor chaveado na session\r\n * @param key \r\n */\r\n getSessionData(key: string): T {\r\n const zimmer = JSON.parse(sessionStorage.getItem('zimmer'))\r\n return zimmer ? zimmer[key] : zimmer\r\n }\r\n\r\n /**\r\n * Funciona somente no V2\r\n */\r\n push(key: string, valueToPush: any): Observable {\r\n return this.getV2(key).pipe(\r\n map(value => value || []),\r\n flatMap(arr => {\r\n arr.push(valueToPush)\r\n return this.saveV2(key, arr)\r\n })\r\n )\r\n }\r\n\r\n /**\r\n * Funciona somente no V2\r\n */\r\n filter(key: string, filterCondition: (any) => any): Observable {\r\n return this.getV2(key).pipe(\r\n map(value => (value || []).filter(filterCondition)),\r\n flatMap(arr => {\r\n return this.saveV2(key, arr)\r\n })\r\n )\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AlertController, iosTransitionAnimation, ToastController } from '@ionic/angular';\r\nimport { Utils } from '../shared/util';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ToastaddService {\r\n toast: HTMLIonToastElement;\r\n\r\n constructor(private toastCtrl: ToastController,\r\n private alertContrl: AlertController,\r\n private utils: Utils) { }\r\n\r\n async displayToastAdd(texto: string) {\r\n this.toast = await this.toastCtrl.create({\r\n position: 'bottom',\r\n duration: 3000,\r\n cssClass: \"toast-add\",\r\n animated: true,\r\n message: texto,\r\n mode: \"ios\",\r\n buttons:[\r\n {\r\n side: 'end',\r\n icon: 'arrow-forward',\r\n role: 'cancel'\r\n }\r\n ]\r\n });\r\n this.toast.present();\r\n const dismiss = await (await this.toast).onDidDismiss();\r\n if(dismiss.role === 'timeout') {\r\n this.utils.animate('shake-horizontal', 'confirm-label', 'class', 800)\r\n }\r\n }\r\n \r\n closeToast(){\r\n try {\r\n this.toast.dismiss();\r\n } catch(e) {}\r\n }\r\n\r\n alertaMsg(msg: string, msg2?: string){\r\n this.alertContrl.create({\r\n message: msg,\r\n header: msg2,\r\n mode: 'ios',\r\n cssClass:\"alerta-css\",\r\n buttons: [\r\n {\r\n text: 'OK',\r\n handler: () => {}\r\n }\r\n ]\r\n }).then(alert => alert.present())\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\nimport { environment } from '../../environments/environment';\r\nimport { ResponseLoginApi } from '../interfaces/reponse-login.interface';\r\nimport { RestaurantService } from './restaurant.service';\r\nimport { User } from '../models/user.model';\r\n\r\n/**\r\n * @deprecated\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private restaurantService: RestaurantService,\r\n ) { }\r\n\r\n /**\r\n * Login de usuário final\r\n * @param user \r\n * @param password \r\n * @deprecated\r\n */\r\n login(user: string, password: string): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/login`, { email: user, senha: password, restauranteId: this.restaurantService.getRestaurant().restauranteId })\r\n .pipe(tap(data => {\r\n return data\r\n }, error => {\r\n console.log('login userService error', error)\r\n }))\r\n }\r\n\r\n /**\r\n * Cadastro de usuário final\r\n * @param user \r\n * @deprecated\r\n */\r\n create(user: User) {\r\n user.restauranteId = this.restaurantService.getRestaurant().restauranteId;\r\n return this.http.post<{ errors: boolean, message: string }>(`${environment.SERVERHOST}/login/registar`, user)\r\n .pipe(tap(data => {\r\n if(!data?.errors) {\r\n }\r\n }, error => {\r\n }))\r\n }\r\n}\r\n","import { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { BehaviorSubject, Observable } from \"rxjs\";\r\nimport { UserGestor } from \"../models/user-gestor.model\";\r\nimport { RestaurantService } from \"./restaurant.service\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { environment } from \"src/environments/environment\";\r\n\r\nexport const httpOptions: { headers: HttpHeaders } = {\r\n headers: new HttpHeaders({\r\n \"Content-Type\": \"application/x-www-form-urlencoded; charset=utf-8\",\r\n Accept: \"application/json, text/plain\",\r\n \"cache-control\": \"no-cache\",\r\n \"Access-Control-Allow-Origin\": \"*\",\r\n \"Access-Control-Allow-Headers\": \"Origin, Content-Type, X-Auth-Token, Accept, Authorization, X-Request-With, Access-Control-Request-Method, Access-Control-Request-Headers\",\r\n \"Access-Control-Allow-Credentials\": \"true\",\r\n \"Access-Control-Allow-Methods\": \"GET, POST, DELETE, PUT, OPTIONS, TRACE, PATCH, CONNECT\",\r\n }),\r\n};\r\n\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class UsergestorService {\r\n private user$: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(private http: HttpClient, private restaurantService: RestaurantService) {}\r\n\r\n setUser(data: UserGestor): void {\r\n this.user$.next(data);\r\n }\r\n\r\n getUser(): UserGestor {\r\n return this.user$.getValue();\r\n }\r\n\r\n registerUser(user: UserGestor): Observable {\r\n user.restauranteid = this.restaurantService.getRestaurant().restauranteId;\r\n return this.http.post<{ errors: boolean; message: string }>(`${environment.SERVERHOST}/login/zimmergestorregistro`, user).pipe(\r\n tap(\r\n (data) => {\r\n if (!data?.errors) {\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n );\r\n }\r\n\r\n authenticateUser(user: UserGestor): Observable {\r\n user.restauranteid = this.restaurantService.getRestaurant().restauranteId;\r\n return this.http.post<{ errors: boolean; message: string }>(`${environment.SERVERHOST}/login/zimmergestorlogin`, user).pipe(\r\n tap(\r\n (data) => {\r\n if (!data?.errors) {\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n );\r\n }\r\n\r\n modifyUser(user: UserGestor): Observable {\r\n user.restauranteid = this.restaurantService.getRestaurant().restauranteId;\r\n user.userid = this.getUser().userid;\r\n return this.http.post<{ errors: boolean; message: string }>(`${environment.SERVERHOST}/login/zimmergestoreditar`, user).pipe(\r\n tap(\r\n (data) => {\r\n if (!data?.errors) {\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n );\r\n }\r\n\r\n modifyPassword(user: UserGestor): Observable {\r\n user.restauranteid = this.restaurantService.getRestaurant().restauranteId;\r\n return this.http.get<{ errors: boolean; message: string }>(`${environment.SERVERHOST}/login/recuperarsenha/${user.fone}/${user.email}/${user.restauranteid}`).pipe(\r\n tap(\r\n (data) => {\r\n if (!data?.errors) {\r\n }\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n )\r\n );\r\n }\r\n\r\n getAddressDataUsingCEP(cep: string): Observable {\r\n return this.http.get(`https://viacep.com.br/ws/${cep}/json/`);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Wallet, Card } from '../interfaces/wallet.interface';\r\n\r\n/**\r\n * @deprecated\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WalletService {\r\n\r\n private wallet: Wallet\r\n\r\n /**\r\n * @returns Carteira do usuário final\r\n * @deprecated\r\n */\r\n getWallet() {\r\n return this.wallet;\r\n }\r\n\r\n /**\r\n * @returns Método de pagamento selecionado\r\n * @deprecated\r\n */\r\n selectedMethod() {\r\n if(this.wallet?.favoriteMethod && this.wallet.favoriteMethod != 0) {\r\n return this.wallet.cards.find(card => card.id == this.wallet.favoriteMethod)\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param cardId \r\n * @returns Método de pagamento pelo ID\r\n * @deprecated\r\n */\r\n getCardById(cardId: number) {\r\n return this.wallet.cards.find(card => card.id == cardId)\r\n }\r\n\r\n /**\r\n * Seta um método de pagamento favorito no service\r\n * @param methodId \r\n * @deprecated\r\n */\r\n setFavoriteMethod(methodId: number) {\r\n this.wallet.favoriteMethod = methodId;\r\n }\r\n\r\n /**\r\n * Deleta o card da carteira\r\n * @param card \r\n * @deprecated\r\n */\r\n deleteCard(card: Card) {\r\n this.wallet.cards = this.wallet.cards.filter(c => c.id != card.id)\r\n }\r\n\r\n /**\r\n * Injeta o card na carteira\r\n * @param card \r\n * @deprecated\r\n */\r\n setCard(card: Card) {\r\n this.wallet.cards.push(card)\r\n }\r\n\r\n /**\r\n * Atualiza um card, caso o mesmo exista\r\n * @param card \r\n * @deprecated\r\n */\r\n editCard(card: Card) {\r\n const c = this.wallet.cards.find(c => c.id == card.id);\r\n if(c) {\r\n Object.keys(c).forEach(key => {\r\n c[key] = card[key]\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * Injeta uma nova carteira no service\r\n * @param wallet \r\n * @deprecated\r\n */\r\n setWallet(wallet: Wallet) {\r\n this.wallet = wallet\r\n }\r\n\r\n /**\r\n * Zera os métodos de pagamento\r\n * @deprecated\r\n */\r\n logout() {\r\n if(this.wallet) {\r\n this.wallet.cards = [];\r\n this.wallet.favoriteMethod = -1\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { HttpHeaders } from '@angular/common/http';\r\n\r\nimport { IonInput, ModalController, AlertController } from '@ionic/angular';\r\n\r\nimport { UserService } from '../services/user.service';\r\nimport { RestaurantService } from '../services/restaurant.service';\r\nimport { User } from '../models/user.model';\r\nimport { Restaurant } from '../models/restaurant.model';\r\nimport { Product } from '../models/produto.model';\r\nimport { StorageService } from '../services/storage.service';\r\nimport { UserFavorite } from '../interfaces/user-favorite.interface';\r\nimport { Utils } from './util';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { environment } from 'src/environments/environment';\r\nimport { flatMap, map, take, tap } from 'rxjs/operators';\r\nimport { ConfigurationService } from '../services/configuration.service';\r\n\r\nexport const httpOptions: { headers: HttpHeaders } = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\r\n 'Accept': 'application/json, text/plain',\r\n 'cache-control': 'no-cache',\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Headers': 'Origin, Content-Type, X-Auth-Token, Accept, Authorization, X-Request-With, Access-Control-Request-Method, Access-Control-Request-Headers',\r\n 'Access-Control-Allow-Credentials': 'true',\r\n 'Access-Control-Allow-Methods': 'GET, POST, DELETE, PUT, OPTIONS, TRACE, PATCH, CONNECT'\r\n })\r\n}\r\n\r\n/**\r\n * @deprecated\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n private token: string;\r\n private user: User;\r\n private userRestaurant: Restaurant;\r\n private passwordAttempts: number = 0;\r\n private tableNumber$: BehaviorSubject = new BehaviorSubject(null)\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private modalCtrl: ModalController,\r\n private restaurantService: RestaurantService,\r\n private router: Router,\r\n private storage: StorageService,\r\n private userService: UserService,\r\n public utils: Utils\r\n ) {\r\n \r\n // config.getConfigV2().pipe(flatMap(\r\n // configs => this.storage.saveV2(environment.storage.v2.tableNumber, configs.reference).pipe(map(() => configs.reference)\r\n // )), tap(ref => console.log(ref, 'changing ref'))).subscribe({\r\n // next: reference => this.tableNumber$.next(reference)\r\n // })\r\n }\r\n\r\n init(): Observable {\r\n\r\n return this.storage.getV2(environment.storage.v2.tableNumber).pipe(flatMap(\r\n reference => {\r\n this.tableNumber$.next(reference) \r\n return this.storage.saveV2(environment.storage.v2.tableNumber, reference)\r\n }\r\n ), take(1), tap(() => console.log('Termina de salvar no storage o tableNumber', environment.storage.v2.tableNumber)))\r\n }\r\n\r\n /**\r\n * Login no sistema - está parte do projeto está parada\r\n * @param { string } login Cnpj ou email do usuário\r\n * @param { string } password\r\n * @param { string } as 'user' para login do cliente final e 'restaurant' para estabelecimentos\r\n */\r\n login(login: string, password: string, as: 'user'|'restaurant') {\r\n switch (as) {\r\n case 'user':\r\n this.userService.login(login, password).subscribe(data => {\r\n if(data.authenticated) {\r\n this.user = data.usuario;\r\n this.token = data.accessToken;\r\n\r\n this.utils.showToast({ message: 'Bem vindo ' + this.user.nome, position: 'middle' })\r\n this.modalCtrl.dismiss();\r\n\r\n } else {\r\n this.utils.showToast({ message: data.message })\r\n }\r\n })\r\n break;\r\n\r\n case 'restaurant':\r\n this.restaurantService.login(login, password).subscribe((data: { restaurant: Restaurant, token: string }) => {\r\n if(data?.restaurant) {\r\n this.userRestaurant = data?.restaurant;\r\n this.restaurantService.setRestaurant(this.userRestaurant);\r\n\r\n // Caso a troca de mesas esteja bloqueada por errar a senha do garçom muitas vezes, ela será liberada aqui\r\n this.storage.save('tableChangePermitted', true)\r\n\r\n this.router.navigate(['restaurant', this.userRestaurant?.cnpj, 'edit'])\r\n this.modalCtrl.dismiss();\r\n } else {\r\n this.utils.showToast({ message: 'Falha no login' })\r\n }\r\n })\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n /**\r\n * Injeta um estabelecimento no serciço\r\n * @param { Restaurant } restaurant Restaurante a ser injetado no serviço\r\n * @param token Token a ser injetado. Caso nada seja passado, ele pegará do restaurante passado\r\n */\r\n setUserRestaurante(restaurant: Restaurant, token?: string) {\r\n this.userRestaurant = restaurant;\r\n this.token = token || restaurant.token;\r\n this.restaurantService.setRestaurant(restaurant);\r\n }\r\n\r\n /**\r\n * Remove os usuários logados e o token do serviço e os dados salvos do app\r\n */\r\n logout(): void {\r\n this.user = null;\r\n this.userRestaurant = null;\r\n this.token = null;\r\n localStorage.removeItem('zimmer');\r\n }\r\n\r\n /**\r\n * \r\n * @param { string } password\r\n * @param { string } as\r\n * @returns { boolean } True se a senha bater, false caso não\r\n */\r\n checkPassword(password: string, as: 'user'|'restaurant'): boolean {\r\n // Comparando as senhas com os usuários armazennados no serviço\r\n switch (as) {\r\n case 'user':\r\n return this.user.senha == password;\r\n\r\n case 'restaurant':\r\n return this.userRestaurant.senhaMaster == password\r\n\r\n default:\r\n throw false;\r\n }\r\n\r\n }\r\n\r\n // USER\r\n\r\n /**\r\n * @returns Cliente final logado\r\n */\r\n getUser(): User {\r\n return this.user\r\n }\r\n\r\n /**\r\n * Injeta no service o usuário\r\n * @param { User } user\r\n */\r\n setUser(user: User): void {\r\n if(!this.user) {\r\n this.user = user;\r\n } else {\r\n const keys = Object.keys(user);\r\n keys.forEach(key => {\r\n this.user[key] = user[key];\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * @returns Produtos favoritados\r\n */\r\n getUserFavorites(): UserFavorite[] {\r\n return this.storage.get('userFavorites') || [];\r\n }\r\n\r\n /**\r\n * Revisar necessidade de função\r\n * @param userFavs UserFavorite[]\r\n */\r\n setUserFavorites(userFavs: UserFavorite[]): void {\r\n this.storage.save('userFavorites', userFavs);\r\n }\r\n\r\n /**\r\n * Inserção de novo favorito\r\n * @param { Product } prod \r\n */\r\n setUserFavorite(prod: Product): void {\r\n const userFavorites = this.storage.get('userFavorites');\r\n userFavorites.push({ userId: this.user.userID, produtoId: prod.produtoId, produto: prod });\r\n this.storage.save('userFavorites', userFavorites)\r\n }\r\n\r\n /**\r\n * Remoção de produto de favoritos\r\n * @param { Product } prod\r\n */\r\n removeFromUserFavorites(prod: Product): void {\r\n const userFavorites = this.storage.get('userFavorites')\r\n const newUserFavorites = userFavorites?.filter(fav => fav.produtoId != prod.produtoId)\r\n this.storage.save('userFavorites', newUserFavorites);\r\n }\r\n\r\n // USER RES\r\n\r\n /**\r\n * @returns Estabelecimento logado\r\n */\r\n getUserRestaurant(): Restaurant {\r\n return this.userRestaurant\r\n }\r\n\r\n /**\r\n * @returns número da mesa salvo no storage\r\n */\r\n getTable(): number {\r\n return this.storage.get('tableNumber')\r\n }\r\n\r\n /**\r\n * \r\n * @returns Observable com o número da mesa\r\n */\r\n getTableV2(): Observable {\r\n return this.tableNumber$.asObservable()\r\n }\r\n\r\n /**\r\n * Dispara um alert para alterar o número da mesa através da senha do garçom\r\n * Revisar localização de código(talvez fosse melhor tal método estar em um component e não no service)\r\n */\r\n setTable(): void {\r\n\r\n // Checa se está permitido mudar o número da mesa\r\n if(this.storage.get('tableChangePermitted') !== false) {\r\n // Mostra o alert com os inputs de número e senha\r\n this.alertCtrl.create({\r\n header: 'Mesa atual :' + this.getTable(),\r\n message: 'Tentativas restantes: '+ (3 - this.passwordAttempts),\r\n inputs: [\r\n { type: 'number', placeholder: 'Mesa', id: 'mesa-id', min: 1 },\r\n { type: 'password', placeholder: 'Senha', id: 'table-password' }\r\n ],\r\n buttons: [\r\n { text: 'CONFIRMAR', handler: () => this.changeTable() }\r\n ]\r\n }).then(alert => alert.present());\r\n } else {\r\n // Caso não esteja permitido trocar de mesa, mostra um alert\r\n this.blockTableChange();\r\n }\r\n }\r\n\r\n /**\r\n * Troca o número da mesa. Caso seja passado, será setado automaticamente, se não chamará a função setTable\r\n * @param { number } tableNumber Número da mesa\r\n */\r\n changeTable(tableNumber?: number): void {\r\n // Checa se foi passado um número pra mesa\r\n if(!tableNumber) {\r\n // Se não, checa se está permitido mudar\r\n if(this.storage.get('tableChangePermitted') !== false) {\r\n const mesaId = document.getElementById('mesa-id') as unknown as IonInput;\r\n const password = document.getElementById('table-password') as unknown as IonInput;\r\n // Se sim, checa a senha do garçom com a digitada no alert de SetTable()\r\n if(this.checkTablePassword(password.value as number)) {\r\n if((mesaId.value + '').length > 0) {\r\n this.storage.save('tableNumber', mesaId.value as number);\r\n this.tableNumber$.next(mesaId.value as string) // TODO Mudar todos os usos do número da mesa para observable\r\n this.passwordAttempts = 0;\r\n } else {\r\n this.utils.showToast({ message: 'Número de mesa inválido', duration: 1000 })\r\n this.setTable()\r\n }\r\n } else {\r\n // Se diferentes, checa o número de tentativas já feitas\r\n if(2 - this.passwordAttempts > 0) {\r\n this.passwordAttempts++;\r\n this.setTable()\r\n this.alertCtrl.dismiss()\r\n // Se maior que 3, mostra um alert\r\n } else this.blockTableChange()\r\n }\r\n } else this.blockTableChange()\r\n } else {\r\n // Se foi passado um número, ele muda a mesa\r\n this.storage.save('tableNumber', tableNumber)\r\n this.tableNumber$.next(tableNumber + '')\r\n }\r\n }\r\n\r\n /**\r\n * Checa a senha do garçom salva no storage\r\n * @param { number } password\r\n */\r\n checkTablePassword(password: number): boolean {\r\n const tablePassword = this.storage.get('tablePassword');\r\n return tablePassword == password\r\n }\r\n\r\n /**\r\n * Bloqueia a troca de mesa e emite um alerta\r\n */\r\n blockTableChange(): void {\r\n this.storage.save('tableChangePermitted', false)\r\n this.alertCtrl.create({\r\n header: 'Troca de mesa bloqueada',\r\n buttons: [\r\n { text: 'FECHAR' }\r\n ]\r\n }).then(alert => alert.present());\r\n }\r\n}","import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { ToastController } from '@ionic/angular';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n// import * as M from 'materialize-css';\r\n\r\n// import { BaseModel } from './models/base.model';\r\nimport { environment } from '../../environments/environment';\r\nimport { CartService } from '../services/cart.service';\r\n\r\nexport interface ResponseApi {\r\n\textras: [];\r\n\tresults: T[];\r\n\ttotalPage: number;\r\n}\r\n\r\nexport interface ResponseApiUpdate {\r\n\terrors: boolean;\r\n\tmessage: string;\r\n}\r\n\r\nconst options: {\r\n\theaders?: HttpHeaders | { [header: string]: string | string[] },\r\n\tobserve?: 'body' | 'events' | 'response',\r\n\tparams?: HttpParams | { [param: string]: string | string[] },\r\n\treportProgress?: boolean,\r\n\tresponseType?: 'arraybuffer' | 'blob' | 'json' | 'text',\r\n\twithCredentials?: boolean,\r\n} = {\r\n\theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\treportProgress: false,\r\n\tobserve: 'body',\r\n\tresponseType: 'json',\r\n}\r\n\r\n/**\r\n * Seria legal conversar com o Xandão sobre os caminhos padronizados da apí pra ter uma classe \"abstrata\" de serviço de requisições\r\n * @deprecated\r\n */\r\nexport class BaseService {\r\n\r\n toastController: ToastController = new ToastController();\r\n\r\n\tconstructor(\r\n\t\tprotected http: HttpClient,\r\n\t\tprotected classPath: string,\r\n\t) { }\r\n\r\n\tgetAll(): Observable> {\r\n return this.http.get(`${environment.SERVERHOST}/${this.classPath}/${this.classPath}s/999/1`,\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'getAll');\r\n\t\t\treturn [];\r\n\t\t}));\r\n\t}\r\n\r\n\tgetById(model: string): Observable {\r\n return this.http.get(`${environment.SERVERHOST}/${this.classPath}/${model}`,\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'getById');\r\n\t\t\treturn [];\r\n\t\t}));\r\n\t}\r\n\r\n\tgetOne(model: T | T[]): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/${this.classPath}/getone`, model,\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'getOne');\r\n\t\t\treturn null;\r\n\t\t}));\r\n\t}\r\n\r\n\tgetByValue(model: T | T[]): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/${this.classPath}/getbyvalue`, model,\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'getByValue');\r\n\t\t\treturn null;\r\n\t\t}));\r\n\t}\r\n\r\n\tcreate(model: T | T[]): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/${this.classPath}/adicionar`, model,\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'create');\r\n\t\t\treturn [];\r\n\t\t}));\r\n\t}\r\n\r\n\tupdate(model: T): Observable {\r\n return this.http.post(`${environment.SERVERHOST}/${this.classPath}/adicionar`, model\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'update');\r\n\t\t\treturn [];\r\n\t\t}));\r\n\t}\r\n\r\n\tdelete(model: string): Observable {\r\n return this.http.delete(`${environment.SERVERHOST}/${this.classPath}/${model}`,\r\n // {\r\n\t\t// \theaders: { authorization: 'Bearer ' + JSON.parse(sessionStorage.getItem('auth'))?.token || '' },\r\n\t\t// \treportProgress: false,\r\n\t\t// \tobserve: 'body',\r\n\t\t// \tresponseType: 'json',\r\n // }\r\n ).pipe(tap(v => {\r\n\t\t\treturn v\r\n\t\t}, (e) => {\r\n\t\t\tthis.handleError(e, 'delete');\r\n\t\t\treturn [];\r\n\t\t}));\r\n\t}\r\n\r\n\thandleError(e: any, msgAux: string = ''): any {\r\n\t\tlet message: string = 'Ops! Um erro inesperado ocorreu'\r\n\t\tlet suport: boolean = false;\r\n\t\tswitch (e?.error?.statusCode) {\r\n\t\t\tcase 401:\r\n\t\t\t\tmessage = 'Ação não autorizada';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 404:\r\n\t\t\t\tmessage = 'Rota não encontrada';\r\n\t\t\t\tsuport = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 500:\r\n\t\t\t\tmessage = 'Erro interno do servidor';\r\n\t\t\t\tsuport = true;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tmessage = 'Erro desconhecido: ' + e?.error?.statusCode;\r\n\t\t\t\tsuport = true;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n message += (msgAux.length > 0) ? (' - ' + msgAux) : '';\r\n const toast = this.toastController.create({\r\n color: 'dark',\r\n duration: 2000,\r\n message,\r\n keyboardClose: true\r\n }).then(t => {\r\n t.present();\r\n });\r\n\t\t// if (!this.toastErrorActive) {\r\n\t\t// \tM.toast({ html: message });\r\n\t\t// \tif (suport) {\r\n\t\t// \t\tM.toast({ html: 'Contate o suporte' });\r\n\t\t// \t}\r\n\t\t// \tthis.toastErrorActive = true;\r\n\t\t// \tsetTimeout(() => {\r\n\t\t// \t\tthis.toastErrorActive = false;\r\n\t\t// \t}, 1000)\r\n\t\t// }\r\n\t}\r\n\r\n\ttoastErrorActive: boolean = false;\r\n}","export default \".option {\\n transition-duration: 0.5s;\\n padding-top: 25%;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvY2hlY2stZGV0YWlscy9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXGNoZWNrLWRldGFpbHNcXGNoZWNrLWRldGFpbHMuY29tcG9uZW50LnNjc3MiLCJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoZWNrLWRldGFpbHMvY2hlY2stZGV0YWlscy5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUdJLHlCQUFBO0VBQ0EsZ0JBQUE7QUNESiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL2NoZWNrLWRldGFpbHMvY2hlY2stZGV0YWlscy5jb21wb25lbnQuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5vcHRpb24ge1xyXG4gICAgLy8gd2lkdGg6IDUwJTtcclxuICAgIC8vIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHRyYW5zaXRpb24tZHVyYXRpb246IC41cztcclxuICAgIHBhZGRpbmctdG9wOiAyNSU7XHJcbn1cclxuXHJcbi8vIC5iYWNrZ3JvdW5kIHtcclxuLy8gICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDtcclxuLy8gICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbi8vICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbi8vICAgICB3aWR0aDogMjUwcHg7XHJcbi8vICAgICBtaW4taGVpZ2h0OiAyNTBweDtcclxuLy8gfVxyXG5cclxuLy8gLnNlbGVjdGVkIHtcclxuLy8gICAgIGFuaW1hdGlvbjogY2hvb3NpbmcgNXMgYm90aCBlYXNlLW91dDtcclxuLy8gICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbi8vICAgICB6LWluZGV4OiA5OTtcclxuLy8gfVxyXG5cclxuLy8gLnVuc2VsZWN0ZWQge1xyXG4vLyAgICAgb3BhY2l0eTogMDtcclxuLy8gICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDNzO1xyXG4vLyB9XHJcblxyXG4vLyBAa2V5ZnJhbWVzIGNob29zaW5nIHtcclxuLy8gICAgIDAlIHtcclxuLy8gICAgICAgICB3aWR0aDogMTAwJTtcclxuLy8gICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xyXG4vLyAgICAgfVxyXG4vLyAgICAgMTAwJSB7XHJcbi8vICAgICAgICAgd2lkdGg6IDIwMCU7XHJcbi8vICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgyKTtcclxuLy8gICAgIH1cclxuLy8gfVxyXG4iLCIub3B0aW9uIHtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41cztcbiAgcGFkZGluZy10b3A6IDI1JTtcbn0iXX0= */\";","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ModalController, Platform } from '@ionic/angular';\r\n\r\nimport { SetDetailsComponent } from '../set-details/set-details.component';\r\nimport { StorageService } from '../../../services/storage.service';\r\nimport { ZimmerStorage } from '../../../models/zimmerStorage.model';\r\nimport { Utils } from '../../util';\r\n\r\n@Component({\r\n selector: 'app-check-details',\r\n templateUrl: './check-details.component.html',\r\n styleUrls: ['./check-details.component.scss'],\r\n})\r\nexport class CheckDetailsComponent {\r\n\r\n /**\r\n * Verifica se está rodando no navegador\r\n */\r\n web: boolean\r\n\r\n constructor(\r\n private modalCtrl: ModalController,\r\n platform: Platform,\r\n private router: Router,\r\n private storage: StorageService,\r\n public utils: Utils\r\n ) {\r\n this. web = platform.is('mobileweb') || platform.is('desktop')\r\n }\r\n\r\n /**\r\n * Escolhe um modo a ser utilizado\r\n * @param option 'qrcode'|'credentials'\r\n */\r\n choose(option: 'qrcode'|'credentials') {\r\n let tableNum\r\n if(option == 'qrcode') {\r\n return this.utils.scanQr().then(response => {\r\n const parameters = response.text.includes('http') ? response.text.replace('//', '').split('/') : response.text.split('/')\r\n\r\n const cnpj = parameters[2]\r\n const table = parameters[parameters.length - 2]\r\n const tab = parameters[parameters.length - 1]\r\n const zimmer = new Object() as ZimmerStorage\r\n zimmer.cnpj = cnpj\r\n zimmer.mode = parameters[1] as any\r\n zimmer.phoneNumber = zimmer.mode == 'zap' ? Number(table) : undefined\r\n\r\n if(table) zimmer.tableNumber = Number(table)\r\n if(tab) zimmer.preferences.categoryProdCardStyle = tab as any // TODO Retirar as any quando ajustar o nome doos campos\r\n tableNum = zimmer.tableNumber\r\n\r\n this.storage.prepare(zimmer)\r\n this.router.navigate(['home'])\r\n\r\n return true\r\n }).catch(error => {\r\n // this.alertCtrl.create({\r\n // header: 'Error scanner',\r\n // message: JSON.stringify(error)\r\n // }).then(alert => alert.present())\r\n return false\r\n }).then(success => !success || this.modalCtrl.dismiss(tableNum))\r\n } else {\r\n return this.modalCtrl.create({\r\n component: SetDetailsComponent,\r\n backdropDismiss: false\r\n }).then(modal => modal.present().then(() => modal.onDidDismiss().then(data => data.data?.incomplete || this.modalCtrl.dismiss().then(() => this.modalCtrl.dismiss()))))\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { CheckDetailsComponent } from './check-details.component';\r\n\r\n@NgModule({\r\n declarations: [CheckDetailsComponent],\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n ],\r\n})\r\nexport class CheckDetailsModule { }\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3NldC1kZXRhaWxzL3NldC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzIn0= */\";","import { Component } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ModalController, IonInput } from '@ionic/angular';\r\n\r\nimport { AuthService } from '../../auth.service';\r\nimport { environment } from '../../../../environments/environment';\r\nimport { RestaurantService } from '../../../services/restaurant.service';\r\nimport { StorageService } from '../../../services/storage.service';\r\nimport { Utils } from '../../util';\r\nimport { ZimmerStorage } from '../../../models/zimmerStorage.model';\r\n\r\n/**\r\n * @deprecated\r\n */\r\n@Component({\r\n selector: 'app-set-details',\r\n templateUrl: './set-details.component.html',\r\n styleUrls: ['./set-details.component.scss'],\r\n})\r\nexport class SetDetailsComponent {\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private modalController: ModalController,\r\n private restaurantService: RestaurantService,\r\n private router: Router,\r\n private storage: StorageService,\r\n public utils: Utils\r\n ) { }\r\n\r\n /**\r\n * Injeta todas as informações necessárias para o funcionamento do app por credenciais\r\n * @param mode Peidos serão feitos por 'zap'|'normal'\r\n * @param cnpj \r\n * @param password \r\n * @param table Mesa\r\n * @param waiterPassword Senha requisitada ao tentar trocar de mesa (somente caso o tipo escolhido seja 'credentials')\r\n */\r\n confirmDetails(\r\n mode: 'zap'|'qrcode',\r\n cnpj: string|number,\r\n password: string|number,\r\n table: string|number,\r\n waiterPassword: string|number,\r\n item: string|number\r\n ) {\r\n\r\n \r\n console.log(\"Entrou no scan\");\r\n \r\n \r\n const zimmer: ZimmerStorage = new Object() as ZimmerStorage;\r\n const phoneNumber = (document.getElementById('phoneNumber') as unknown as IonInput)?.value;\r\n zimmer.mode = mode;\r\n // Validador\r\n let successCount: number = 0;\r\n try {\r\n if((phoneNumber+'').replace(/[^0-9]/gm, '').length < 9 && mode == 'zap') throw'Número de celular inválido'; else {\r\n zimmer.phoneNumber = Number((phoneNumber+'').replace(/[^0-9]/gm, ''));\r\n successCount++;\r\n }\r\n\r\n environment.RES_CNPJ = (cnpj + '').replace(/[^0-9]/gm, '');\r\n zimmer.cnpj = environment.RES_CNPJ\r\n // Checa o tamanho do CNPJ e caso seja 14 aumenta o validador em 1\r\n if(environment.RES_CNPJ.length != 14) throw 'CNPJ inválido'; else successCount++;\r\n \r\n // Deixa somente números na mesa e checa se tem pelo menos um caractere, se passar adiciona +1 no validador\r\n const tableId = table + '';\r\n if(tableId.replace(/[^0-9]/gm, '').length == 0) {\r\n throw 'Número de mesa inválido'\r\n } else {\r\n zimmer.tableNumber = Number(tableId.replace(/[^0-9]/gm, ''));\r\n successCount++;\r\n }\r\n \r\n // Deixa somente números e checa se a senha do garçom tem 4 caracteres, se tiver validador +1\r\n const pwd = (waiterPassword + '').replace(/[^0-9]/gm, '');\r\n if(pwd.length != 4) {\r\n throw 'A senha do garçom deve ser 4 números'\r\n } else {\r\n successCount++;\r\n }\r\n\r\n // Checa se o CNPJ e a senhaMaster batem, se sim validador +1\r\n this.restaurantService.login(environment.RES_CNPJ, password.toString()).subscribe(data => {\r\n // this.toastController.create({\r\n // message: JSON.stringify(data) + 'home module',\r\n // duration: 3000,\r\n // color: 'primary'\r\n // }).then(toast => toast.present());\r\n if(data.restaurant) {\r\n // this.auth.setUserRestaurante(data.restaurant, data.token)\r\n zimmer.cnpj = data.restaurant.cnpj;\r\n successCount++;\r\n } else {\r\n this.utils.showToast({ message: 'Login e/ou senha inválidos', duration: 1000 })\r\n // this.confirmDetails(mode, cnpj, password, table, waiterPassword, phoneNumber);\r\n }\r\n\r\n // Se o validador bater 5, inicia o app\r\n if(successCount == 5) {\r\n zimmer.preferences.categoryProdCardStyle = item as number\r\n this.storage.prepare(zimmer)\r\n this.auth.changeTable(this.storage.get('tableNumber'))\r\n // this.router.navigate([environment.RES_CNPJ])\r\n this.router.navigate([zimmer.cnpj])\r\n this.modalController.dismiss()\r\n }\r\n })\r\n // const mode = (document.getElementById('init-mode') as unknown as IonRadioGroup)?.value;\r\n // if(mode) {\r\n // zimmer.mode = mode;\r\n // successCount++;\r\n // } else {\r\n // throw 'Escolha um modo'\r\n // }\r\n } catch(error) {\r\n console.log(error)\r\n this.utils.showToast({ message: error })\r\n return false\r\n }\r\n\r\n }\r\n\r\n // /**\r\n // * Converte os valores para o tipo passado\r\n // * @param element \r\n // * @param mode Tipo da conversão\r\n // */\r\n // maskInput(element: IonInput, mode) {\r\n // if(mode !='waiterPassword') {\r\n // element.value = this.utils.convert(element.value, mode);\r\n // } else {\r\n // element.value = this.utils.convert(element.value, 'onlyNumber').substr(0, 4);\r\n // }\r\n // }\r\n\r\n /**\r\n * Fecha este modal\r\n */\r\n closeModal() {\r\n this.modalController.dismiss({ incomplete: true })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { SetDetailsComponent } from './set-details.component';\r\n\r\n@NgModule({\r\n declarations: [SetDetailsComponent],\r\n imports: [\r\n CommonModule,\r\n IonicModule\r\n ],\r\n})\r\nexport class SetDetailsModule { }\r\n","export default \".right-align input {\\n text-align: right;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvYWRkLWFkZHJlc3MvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFx2MlxcYWRkLWFkZHJlc3NcXGFkZC1hZGRyZXNzLnBhZ2Uuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvYWRkLWFkZHJlc3MvYWRkLWFkZHJlc3MucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksaUJBQUE7QUNDSiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3YyL2FkZC1hZGRyZXNzL2FkZC1hZGRyZXNzLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5yaWdodC1hbGlnbiBpbnB1dCB7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxufSIsIi5yaWdodC1hbGlnbiBpbnB1dCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufSJdfQ== */\";","import { Component, OnInit, OnDestroy, Input, AfterViewInit } from '@angular/core';\r\nimport { FormControl, FormBuilder, FormGroup, Validators } from '@angular/forms';\r\nimport { Observable, Subscription } from 'rxjs';\r\n\r\nimport { ModalController, Platform } from '@ionic/angular';\r\n\r\nimport { environment } from '../../../../../environments/environment';\r\nimport { Utils } from '../../../../shared/util';\r\nimport { Localizacao } from '../../../../models/address/localizacao.model';\r\nimport { MaskService } from '../../../../services/providers/mask.service';\r\nimport { AddressService } from '../../../../services/providers/address.service';\r\n\r\n/**\r\n * LeafletJS\r\n */\r\ndeclare const L\r\n\r\n@Component({\r\n selector: 'app-add-address',\r\n templateUrl: './add-address.page.html',\r\n styleUrls: ['./add-address.page.scss'],\r\n})\r\nexport class AddAddressPage implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n /**\r\n * Usado somente para receber o valor do componente que está instanciando essa classe. *Não* use para outra coisa\r\n * @ignore\r\n */\r\n @Input('address') address: Localizacao\r\n // address$: Observable
\r\n private subs: Subscription[] = []\r\n /**\r\n * Diz se mostra ou não todos os campos de endereço da DOM\r\n */\r\n public showAllInfo: boolean\r\n form: FormGroup\r\n web: boolean\r\n delayToSearchPosition\r\n /**\r\n * Mapa renderizado na DOM\r\n */\r\n private map\r\n public locating: boolean\r\n private marker\r\n\r\n constructor(\r\n private addressService: AddressService,\r\n private formBuilder: FormBuilder,\r\n public mask: MaskService,\r\n private modalCtrl: ModalController,\r\n private utils: Utils,\r\n platform: Platform\r\n ) {\r\n this.web = platform.is('mobileweb') || platform.is('desktop')\r\n }\r\n\r\n /**\r\n * Pega o valor do endereço salvo\r\n */\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n cep: [null],\r\n logradouro: [null, [Validators.required, Validators.minLength(1)]],\r\n numero: [null, [Validators.required, Validators.minLength(1)]],\r\n complemento: [null],\r\n bairro: [null],\r\n localidade: [null],\r\n uf: [null],\r\n })\r\n\r\n this.form.patchValue(this.address || {})\r\n if(this.address) this.showAllInfo = true\r\n\r\n this.subs.push(this.form.valueChanges.subscribe({\r\n next: value => this.address = new Localizacao(value)\r\n }))\r\n }\r\n\r\n /**\r\n * Limpa a inscrição para evitar memory leak\r\n */\r\n ngOnDestroy() {\r\n this.subs.forEach(sub => sub.unsubscribe())\r\n }\r\n\r\n /**\r\n * Renderiza o mapa\r\n */\r\n ngAfterViewInit() {\r\n if(!this.web) {\r\n this.map = L.map('map-user').setView([48.8566, 2.3515], 11)\r\n const jawg_streets = L.tileLayer(\r\n 'https://tile.jawg.io/jawg-streets/{z}/{x}/{y}.png?access-token=f3maPN2oqrnPi0ODiFM2HiVTSK2QjKIsbAvQpn51T0OaF47TkuhFWJqQeSHdKOCw',\r\n { }).addTo(this.map)\r\n this.map.attributionControl.addAttribution(\"© Jawg - © OpenStreetMap contributors\")\r\n }\r\n \r\n }\r\n\r\n /**\r\n * Fecha o modal e devolve o endereço\r\n */\r\n dismiss(data?: Localizacao) {\r\n this.modalCtrl.dismiss({\r\n success: !!data,\r\n address: data\r\n }, undefined, environment.addAddressModalId)\r\n }\r\n\r\n /**\r\n * Procura a localização atual do usuário por componentes nativos\r\n */\r\n locateUser() {\r\n this.locating = true\r\n this.addressService.locateUser().subscribe(address => {\r\n this.form.patchValue(address)\r\n this.showAllInfo = true\r\n this.locating = false\r\n })\r\n }\r\n\r\n /**\r\n * Procura as coordenadas para que seja renderizado no mapa\r\n * @param address \r\n */\r\n searchLocation(address: Localizacao) {\r\n if(this.web) return // Não deve procurar no mapa porque não vou renderizar no mapa pela web... ainda\r\n if(this.delayToSearchPosition) clearTimeout(this.delayToSearchPosition)\r\n this.delayToSearchPosition = setTimeout(() => {\r\n if(Localizacao.isValid(address)) {\r\n // TODO Pesquisar cep caso não tenha sido digitado\r\n const sub_address = this.addressService.getCoordinatesFromAddress(\r\n `${address.logradouro ? (address.logradouro + ', ') : ''}\r\n ${address.numero ? (address.numero + ' - ') : ''}\r\n ${address.bairro ? (address.bairro + ', ') : ''}\r\n ${address.localidade} - ${address.uf}, ${this.address.cep}, Brazil`\r\n ).subscribe(addressResult => {\r\n const setView = this.map.setView([addressResult.latitude, addressResult.longitude], 17)\r\n if(this.marker) this.marker.removeFrom(this.map)\r\n this.marker = L.marker([addressResult.latitude, addressResult.longitude]).addTo(this.map)\r\n // const markers = L.markerClusterGroup()\r\n // markers.clearLayers()\r\n sub_address.unsubscribe()\r\n }) // O segundo parâmetro no setView é o zoom no mapa\r\n }\r\n }, 800)\r\n }\r\n\r\n /**\r\n * Procura o endereço pelo CEP\r\n * @param cep \r\n */\r\n getAddressFromCep(cep: string): void {\r\n this.utils.setStateLoading(true)\r\n const validCep = cep.replace(/[^0-9]/gm, '')\r\n this.addressService.getAddressFromCep(validCep)\r\n .subscribe({ next: data => {\r\n this.form.patchValue(new Localizacao(data))\r\n this.showAllInfo = true\r\n this.utils.setStateLoading(false)\r\n\r\n this.searchLocation(this.address)\r\n }, error: error => {\r\n // this.utils.showToaster('Ops! algo deu errado')\r\n this.utils.setStateLoading(false)\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Retorna o endereço para o component pai\r\n */\r\n saveAddress(): void {\r\n const validation = Localizacao.isValid(this.address)\r\n if(!environment.production) console.log('Address is valid?', validation.isValid)\r\n if(!environment.production && validation.errors?.length > 0) console.log('Invalid fields', validation.errors)\r\n if(validation.isValid) {\r\n this.dismiss(this.address)\r\n } else validation.errors.forEach(error => this.utils.showToast({\r\n message: error\r\n }))\r\n }\r\n\r\n /**\r\n * Checa se o endereço é válido\r\n * @param address \r\n */\r\n isValidAddress(address: Localizacao) {\r\n return Localizacao.isValid(address).isValid\r\n }\r\n}\r\n","export default \"ion-content {\\n --ion-background-color: transparent;\\n}\\n\\n#camera-preview {\\n display: flex;\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n z-index: 10;\\n}\\n\\n.buttons-row {\\n position: fixed;\\n bottom: 25px;\\n width: 100%;\\n z-index: 11;\\n}\\n\\n.button-col {\\n text-align: center;\\n}\\n\\n.button-col ion-button::part(native) {\\n border-radius: 50em;\\n height: 50px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvY2FtZXJhLXBhZ2UvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFx2MlxcY2FtZXJhLXBhZ2VcXGNhbWVyYS1wYWdlLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy92Mi9jYW1lcmEtcGFnZS9jYW1lcmEtcGFnZS5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLG1DQUFBO0FDQ0o7O0FEYUE7RUFDSSxhQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7QUNWSjs7QURhQTtFQUNJLGVBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLFdBQUE7QUNWSjs7QURhQTtFQUNJLGtCQUFBO0FDVko7O0FEWUk7RUFDSSxtQkFBQTtFQUNBLFlBQUE7QUNWUiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3YyL2NhbWVyYS1wYWdlL2NhbWVyYS1wYWdlLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaW9uLWNvbnRlbnQge1xyXG4gICAgLS1pb24tYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuXHJcbi8vIC5vdmVybGF5IHtcclxuLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuLy8gICAgIHdpZHRoOiAxMDAlO1xyXG4vLyAgICAgaGVpZ2h0OiAxMDAlO1xyXG4vLyAgICAgei1pbmRleDogMTA7XHJcbi8vIH1cclxuXHJcbi8vIC5jb250ZW50LWdyaWQge1xyXG4vLyAgICAgaGVpZ2h0OiAxMDB2aDtcclxuLy8gfVxyXG5cclxuI2NhbWVyYS1wcmV2aWV3IHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHotaW5kZXg6IDEwO1xyXG59XHJcblxyXG4uYnV0dG9ucy1yb3cge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgYm90dG9tOiAyNXB4O1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICB6LWluZGV4OiAxMTtcclxufVxyXG5cclxuLmJ1dHRvbi1jb2wge1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG5cclxuICAgIGlvbi1idXR0b246OnBhcnQobmF0aXZlKSB7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTBlbTtcclxuICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gaW9uLWJ1dHRvbiB7XHJcbiAgICAvLyAgICAgei1pbmRleDogMTE7XHJcbiAgICAvLyB9XHJcbn1cclxuIiwiaW9uLWNvbnRlbnQge1xuICAtLWlvbi1iYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuI2NhbWVyYS1wcmV2aWV3IHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB6LWluZGV4OiAxMDtcbn1cblxuLmJ1dHRvbnMtcm93IHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICBib3R0b206IDI1cHg7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAxMTtcbn1cblxuLmJ1dHRvbi1jb2wge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uYnV0dG9uLWNvbCBpb24tYnV0dG9uOjpwYXJ0KG5hdGl2ZSkge1xuICBib3JkZXItcmFkaXVzOiA1MGVtO1xuICBoZWlnaHQ6IDUwcHg7XG59Il19 */\";","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nimport { Plugins } from '@capacitor/core'\r\nconst { CameraPreview } = Plugins\r\nimport { CameraPreviewOptions, CameraPreviewPictureOptions } from '@capacitor-community/camera-preview'\r\n\r\nimport '@capacitor-community/camera-preview' // WEB\r\nimport { ModalController } from '@ionic/angular';\r\n\r\n@Component({\r\n selector: 'app-camera-page',\r\n templateUrl: './camera-page.component.html',\r\n styleUrls: ['./camera-page.component.scss'],\r\n})\r\nexport class CameraPageComponent implements OnInit, OnDestroy {\r\n image: string\r\n cameraActive: boolean\r\n\r\n constructor(\r\n protected modalCtrl: ModalController\r\n ) { }\r\n\r\n ngOnInit() {\r\n const options: CameraPreviewOptions = {\r\n parent: 'camera-preview',\r\n className: 'camera-preview',\r\n height: document.documentElement.clientHeight - 100,\r\n width: document.documentElement.clientWidth,\r\n }\r\n CameraPreview.start(options)\r\n this.cameraActive = true\r\n }\r\n\r\n ngOnDestroy() {\r\n this.stop()\r\n }\r\n\r\n stop() {\r\n CameraPreview.stop().then(() => this.cameraActive = false)\r\n }\r\n\r\n takePicture() {\r\n const cameraPreviewPictureOptions: CameraPreviewPictureOptions = {\r\n quality: 100\r\n };\r\n\r\n CameraPreview.capture(cameraPreviewPictureOptions).then((data: { value: string }) => {\r\n this.image = data.value\r\n this.stop()\r\n })\r\n }\r\n\r\n flip() {\r\n CameraPreview.flip()\r\n }\r\n\r\n tryAgain() {\r\n this.image = ''\r\n this.ngOnInit()\r\n }\r\n\r\n dismiss() {\r\n this.modalCtrl.dismiss(this.image)\r\n this.stop()\r\n }\r\n}\r\n","export default \"\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzcmMvYXBwL3NoYXJlZC9jb21wb25lbnRzL3YyL2lucHV0LWRhdGV0aW1lL2lucHV0LWRhdGV0aW1lLmNvbXBvbmVudC5zY3NzIn0= */\";","import { Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { AnimationBuilder } from '@ionic/core';\r\n\r\n@Component({\r\n selector: 'app-input-datetime',\r\n templateUrl: './input-datetime.component.html',\r\n styleUrls: ['./input-datetime.component.scss'],\r\n})\r\nexport class InputDatetimeComponent implements OnInit {\r\n\r\n // TODO Tem um problema relacionado ao uso em formulários com esse componente\r\n // Por esse motivo não está em uso. O componente não passa o valor atual para o form, se corrigir isso, tu tem um calendário traduzido\r\n dateNow: Date = new Date()\r\n @Input('cancelText') cancelText: string = 'Fechar'\r\n @Input('dayNames') dayNames: string[] = ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado']\r\n @Input('dayShortNames') dayShortNames: string [] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\r\n @Input('disabled') disabled: boolean = false\r\n @Input('displayFormat') displayFormat: string = 'MMM D, YYYY'\r\n @Input('displayTimezone') displayTimezone: string\r\n @Input('doneText') doneText: string = 'Feito'\r\n @Input('min') min: string = (this.dateNow.getFullYear() - 100) + ''\r\n @Input('max') max: string = this.dateNow.getFullYear() + ''\r\n @Input('platform') mode: 'ios'|'md'\r\n @Input('monthNames') monthNames: string [] = [\r\n 'Janeiro',\r\n 'Fevereiro',\r\n 'Março',\r\n 'Abril',\r\n 'Maio',\r\n 'Junho',\r\n 'Julho',\r\n 'Agosto',\r\n 'Setembro',\r\n 'Outubro',\r\n 'Novembro',\r\n 'Dezembro'\r\n ]\r\n @Input('monthShortNames') monthShortNames: string[] = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Out', 'Nov', 'Dez']\r\n @Input('pickerFormat') pickerFormat: string\r\n @Input('pickerOptions') pickerOptions: {\r\n columns?: PickerColumn[] | undefined;\r\n buttons?: PickerButton[] | undefined;\r\n cssClass?: string | string[] | undefined;\r\n showBackdrop?: boolean | undefined;\r\n backdropDismiss?: boolean | undefined;\r\n animated?: boolean | undefined;\r\n mode?: \"ios\" | \"md\" | undefined;\r\n keyboardClose?: boolean | undefined;\r\n id?: string | undefined;\r\n enterAnimation?: AnimationBuilder | undefined;\r\n leaveAnimation?: AnimationBuilder | undefined;\r\n }\r\n @Input('placeholder') placeholder: string\r\n @Input('readonly') readonly: boolean = false\r\n @Input('value') value: string\r\n\r\n //\r\n @Input('class') class: string\r\n @Input('datetimeData') datetimeData: string\r\n @Input('formControlName') formControlName: string\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n\r\ninterface PickerColumn {\r\n name: string,\r\n prefix: string,\r\n suffix: string,\r\n options: [\r\n {\r\n text: string,\r\n value: any\r\n },\r\n {\r\n text: string,\r\n value: any\r\n }\r\n ]\r\n}\r\n\r\ninterface PickerButton {\r\n text: string,\r\n value: any\r\n}\r\n\r\nexport const dayNamesBr: string[] = ['Domingo', 'Segunda-feira', 'Terça-feira', 'Quarta-feira', 'Quinta-feira', 'Sexta-feira', 'Sábado']\r\nexport const dayShortNamesBr: string[] = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab']\r\nexport const monthNamesBr: string [] = [\r\n 'Janeiro',\r\n 'Fevereiro',\r\n 'Março',\r\n 'Abril',\r\n 'Maio',\r\n 'Junho',\r\n 'Julho',\r\n 'Agosto',\r\n 'Setembro',\r\n 'Outubro',\r\n 'Novembro',\r\n 'Dezembro'\r\n]\r\nexport const monthShortNamesBr: string[] = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Out', 'Nov', 'Dez']\r\n","export default \"img {\\n padding-top: 25vh;\\n width: min(100vw, 100vh);\\n}\\n\\n.dismiss-btn {\\n position: fixed;\\n top: 10px;\\n left: 0px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvcGljdHVyZS12aWV3ZXIvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcc2hhcmVkXFxjb21wb25lbnRzXFx2MlxccGljdHVyZS12aWV3ZXJcXHBpY3R1cmUtdmlld2VyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy92Mi9waWN0dXJlLXZpZXdlci9waWN0dXJlLXZpZXdlci5jb21wb25lbnQuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLGlCQUFBO0VBQ0Esd0JBQUE7QUNDSjs7QURFQTtFQUNJLGVBQUE7RUFDQSxTQUFBO0VBQ0EsU0FBQTtBQ0NKIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvcGljdHVyZS12aWV3ZXIvcGljdHVyZS12aWV3ZXIuY29tcG9uZW50LnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJpbWcge1xyXG4gICAgcGFkZGluZy10b3A6IDI1dmg7XHJcbiAgICB3aWR0aDogbWluKDEwMHZ3LCAxMDB2aCk7XHJcbn1cclxuXHJcbi5kaXNtaXNzLWJ0biB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDEwcHg7XHJcbiAgICBsZWZ0OiAwcHg7XHJcbn1cclxuIiwiaW1nIHtcbiAgcGFkZGluZy10b3A6IDI1dmg7XG4gIHdpZHRoOiBtaW4oMTAwdncsIDEwMHZoKTtcbn1cblxuLmRpc21pc3MtYnRuIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDBweDtcbn0iXX0= */\";","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ModalController } from '@ionic/angular';\r\n\r\n@Component({\r\n selector: 'app-picture-viewer',\r\n templateUrl: './picture-viewer.component.html',\r\n styleUrls: ['./picture-viewer.component.scss'],\r\n})\r\nexport class PictureViewerComponent implements OnInit {\r\n\r\n @Input('img') img: string;\r\n\r\n constructor(\r\n private modalCtrl: ModalController\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n dismiss() {\r\n this.modalCtrl.dismiss()\r\n }\r\n}\r\n","export default \".info-wrapper {\\n --img-height: 150px;\\n}\\n.info-wrapper .prod-image-wrapper {\\n padding: 0;\\n}\\n.info-wrapper .prod-image-wrapper img {\\n height: var(--img-height);\\n width: calc(100% - 10px);\\n border-radius: 10px;\\n}\\n.info-wrapper .description-wrapper {\\n max-height: var(--img-height);\\n overflow-y: auto;\\n background-color: var(--ion-color-light);\\n border-radius: 5px;\\n padding: 0;\\n}\\n.info-wrapper .description-wrapper .prod-name-wrapper ion-label {\\n font-weight: bold;\\n}\\n.option-list {\\n border-radius: 5px;\\n background-color: var(--ion-color-light);\\n margin-bottom: 0.7em;\\n}\\n.list-header-half {\\n padding-left: 5px;\\n}\\n.name-half {\\n padding-left: 0;\\n}\\n.text-half {\\n font-weight: bold;\\n font-size: 22px;\\n}\\n.quantity-half {\\n text-align: right;\\n}\\n.quantity-badge {\\n transition-duration: 0.5s;\\n}\\n.select-complement::part(native) {\\n height: 100px;\\n}\\n.select-complement.selected {\\n background-color: #2dd36f;\\n cursor: pointer;\\n transition-duration: 0.5s;\\n}\\n.btn-quantity {\\n --padding-start: 3px;\\n --padding-end: 3px;\\n}\\n.options-done {\\n background-color: #2dd36f;\\n}\\n.footer-toolbar .btn-quantity-wrapper {\\n display: inline;\\n}\\n.footer-toolbar .confirm-btn {\\n margin: 0;\\n}\\n.footer-toolbar .confirm-btn ion-label {\\n text-transform: uppercase;\\n text-align: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItaXRlbS1jb21wbGVtZW50b3NtZWlvbWVpby9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHYyXFx2Mi1pdGVtLWNvbXBsZW1lbnRvc21laW9tZWlvXFx2Mi1pdGVtLWNvbXBsZW1lbnRvc21laW9tZWlvLnBhZ2Uuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItaXRlbS1jb21wbGVtZW50b3NtZWlvbWVpby92Mi1pdGVtLWNvbXBsZW1lbnRvc21laW9tZWlvLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLG1CQUFBO0FDQ0Y7QURDRTtFQUNFLFVBQUE7QUNDSjtBRENJO0VBQ0UseUJBQUE7RUFDQSx3QkFBQTtFQUNBLG1CQUFBO0FDQ047QURHRTtFQUNFLDZCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx3Q0FBQTtFQUNBLGtCQUFBO0VBQ0EsVUFBQTtBQ0RKO0FESU07RUFDRSxpQkFBQTtBQ0ZSO0FEUUE7RUFDRSxrQkFBQTtFQUNBLHdDQUFBO0VBQ0Esb0JBQUE7QUNMRjtBRFFBO0VBQ0UsaUJBQUE7QUNMRjtBRFFBO0VBQ0UsZUFBQTtBQ0xGO0FEUUE7RUFDRSxpQkFBQTtFQUNBLGVBQUE7QUNMRjtBRFFBO0VBQ0UsaUJBQUE7QUNMRjtBRFFBO0VBQ0UseUJBQUE7QUNMRjtBRFFBO0VBQ0UsYUFBQTtBQ0xGO0FEUUE7RUFDRSx5QkFBQTtFQUNBLGVBQUE7RUFDQSx5QkFBQTtBQ0xGO0FEUUE7RUFDRSxvQkFBQTtFQUNBLGtCQUFBO0FDTEY7QURRQTtFQUNFLHlCQUFBO0FDTEY7QURXRTtFQUNJLGVBQUE7QUNSTjtBRGFFO0VBR0ksU0FBQTtBQ2JOO0FEZU07RUFDSSx5QkFBQTtFQUNBLGtCQUFBO0FDYlYiLCJmaWxlIjoic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy92Mi92Mi1pdGVtLWNvbXBsZW1lbnRvc21laW9tZWlvL3YyLWl0ZW0tY29tcGxlbWVudG9zbWVpb21laW8ucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmluZm8td3JhcHBlciB7XHJcbiAgLS1pbWctaGVpZ2h0OiAxNTBweDtcclxuXHJcbiAgLnByb2QtaW1hZ2Utd3JhcHBlciB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIGltZyB7XHJcbiAgICAgIGhlaWdodDogdmFyKC0taW1nLWhlaWdodCk7XHJcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMHB4KTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZXNjcmlwdGlvbi13cmFwcGVyIHtcclxuICAgIG1heC1oZWlnaHQ6IHZhcigtLWltZy1oZWlnaHQpO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIC5wcm9kLW5hbWUtd3JhcHBlciB7XHJcbiAgICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5vcHRpb24tbGlzdCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43ZW07XHJcbn1cclxuXHJcbi5saXN0LWhlYWRlci1oYWxmIHtcclxuICBwYWRkaW5nLWxlZnQ6IDVweDtcclxufVxyXG5cclxuLm5hbWUtaGFsZiB7XHJcbiAgcGFkZGluZy1sZWZ0OiAwO1xyXG59XHJcblxyXG4udGV4dC1oYWxmIHtcclxuICBmb250LXdlaWdodDogYm9sZDtcclxuICBmb250LXNpemU6IDIycHg7XHJcbn1cclxuXHJcbi5xdWFudGl0eS1oYWxmIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLnF1YW50aXR5LWJhZGdlIHtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xyXG59XHJcblxyXG4uc2VsZWN0LWNvbXBsZW1lbnQ6OnBhcnQobmF0aXZlKSB7XHJcbiAgaGVpZ2h0OiAxMDBweDtcclxufVxyXG5cclxuLnNlbGVjdC1jb21wbGVtZW50LnNlbGVjdGVkIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmRkMzZmO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xyXG59XHJcblxyXG4uYnRuLXF1YW50aXR5IHtcclxuICAtLXBhZGRpbmctc3RhcnQ6IDNweDtcclxuICAtLXBhZGRpbmctZW5kOiAzcHg7XHJcbn1cclxuXHJcbi5vcHRpb25zLWRvbmUge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMyZGQzNmY7XHJcbn1cclxuXHJcbi5mb290ZXItdG9vbGJhciB7XHJcbiAgLy8gLS1xdWFudGl0eS1idG4td2lkdGg6IDIwMHB4O1xyXG5cclxuICAuYnRuLXF1YW50aXR5LXdyYXBwZXIge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAgIC8vIHBhZGRpbmc6IDIwcHg7XHJcbiAgICAgIC8vIHdpZHRoOiB2YXIoLS1xdWFudGl0eS1idG4td2lkdGgpO1xyXG4gIH1cclxuXHJcbiAgLmNvbmZpcm0tYnRuIHtcclxuICAgICAgLy8gZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAvLyB3aWR0aDogY2FsYygxMDAlIC0gdmFyKC0tcXVhbnRpdHktYnRuLXdpZHRoKSk7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuXHJcbiAgICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICB9XHJcbiAgfVxyXG59IiwiLmluZm8td3JhcHBlciB7XG4gIC0taW1nLWhlaWdodDogMTUwcHg7XG59XG4uaW5mby13cmFwcGVyIC5wcm9kLWltYWdlLXdyYXBwZXIge1xuICBwYWRkaW5nOiAwO1xufVxuLmluZm8td3JhcHBlciAucHJvZC1pbWFnZS13cmFwcGVyIGltZyB7XG4gIGhlaWdodDogdmFyKC0taW1nLWhlaWdodCk7XG4gIHdpZHRoOiBjYWxjKDEwMCUgLSAxMHB4KTtcbiAgYm9yZGVyLXJhZGl1czogMTBweDtcbn1cbi5pbmZvLXdyYXBwZXIgLmRlc2NyaXB0aW9uLXdyYXBwZXIge1xuICBtYXgtaGVpZ2h0OiB2YXIoLS1pbWctaGVpZ2h0KTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiAwO1xufVxuLmluZm8td3JhcHBlciAuZGVzY3JpcHRpb24td3JhcHBlciAucHJvZC1uYW1lLXdyYXBwZXIgaW9uLWxhYmVsIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG5cbi5vcHRpb24tbGlzdCB7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgbWFyZ2luLWJvdHRvbTogMC43ZW07XG59XG5cbi5saXN0LWhlYWRlci1oYWxmIHtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5cbi5uYW1lLWhhbGYge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi50ZXh0LWhhbGYge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAyMnB4O1xufVxuXG4ucXVhbnRpdHktaGFsZiB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4ucXVhbnRpdHktYmFkZ2Uge1xuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xufVxuXG4uc2VsZWN0LWNvbXBsZW1lbnQ6OnBhcnQobmF0aXZlKSB7XG4gIGhlaWdodDogMTAwcHg7XG59XG5cbi5zZWxlY3QtY29tcGxlbWVudC5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZGQzNmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41cztcbn1cblxuLmJ0bi1xdWFudGl0eSB7XG4gIC0tcGFkZGluZy1zdGFydDogM3B4O1xuICAtLXBhZGRpbmctZW5kOiAzcHg7XG59XG5cbi5vcHRpb25zLWRvbmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmRkMzZmO1xufVxuXG4uZm9vdGVyLXRvb2xiYXIgLmJ0bi1xdWFudGl0eS13cmFwcGVyIHtcbiAgZGlzcGxheTogaW5saW5lO1xufVxuLmZvb3Rlci10b29sYmFyIC5jb25maXJtLWJ0biB7XG4gIG1hcmdpbjogMDtcbn1cbi5mb290ZXItdG9vbGJhciAuY29uZmlybS1idG4gaW9uLWxhYmVsIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufSJdfQ== */\";","import { ModalController, ToastController } from \"@ionic/angular\";\r\nimport { Component, OnInit, Input } from \"@angular/core\";\r\nimport { ProductService } from \"src/app/services/product.service\";\r\nimport { PictureViewerComponent } from \"../picture-viewer/picture-viewer.component\";\r\nimport {\r\n ProductOption,\r\n ProductOptionType,\r\n} from \"src/app/interfaces/product-option.interface\";\r\nimport { ItemCart } from \"src/app/interfaces/itemCart.interface\";\r\nimport { Utils } from \"src/app/shared/util\";\r\n\r\n@Component({\r\n selector: \"app-v2-item-complementosmeiomeio\",\r\n templateUrl: \"./v2-item-complementosmeiomeio.page.html\",\r\n styleUrls: [\"./v2-item-complementosmeiomeio.page.scss\"],\r\n})\r\nexport class V2ItemComplementosmeiomeioPage implements OnInit {\r\n @Input() half: any;\r\n @Input() item: ItemCart;\r\n complements: any;\r\n\r\n itemVerification: any;\r\n complementsSubTotal: number = 0;\r\n\r\n buttonAvailability: boolean = false;\r\n\r\n constructor(\r\n private productService: ProductService,\r\n private modalController: ModalController,\r\n private toastController: ToastController,\r\n public utils: Utils\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.productService\r\n .getProductsHalfComplements(this.half.produtoId)\r\n .subscribe(\r\n (res: any) => {\r\n res = res.results;\r\n this.complements = res;\r\n\r\n this.processButtonAvailability();\r\n this.subTotal();\r\n },\r\n (err: any) => {\r\n console.log(err);\r\n }\r\n );\r\n }\r\n\r\n // Checa se o complemento está incluído\r\n hasOption(optionId: string) {\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n\r\n return (\r\n this.item.meiomeios[halfIndex].complementos.findIndex(\r\n (option) => option.pedidoItemOpcaoId == optionId\r\n ) != -1\r\n );\r\n // return false\r\n }\r\n\r\n /**\r\n * Mostra a quantidade de opções selecionadas naquela categoria de opções\r\n * @param complementId\r\n */\r\n getHalfsComplementsQuantity(complementId?: number): number {\r\n let i = 0;\r\n\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n\r\n this.item.meiomeios[halfIndex].complementos.forEach((item) => {\r\n item.produtosOpcaoTipoId === complementId && (i += item.quantidade || 0);\r\n });\r\n\r\n return i;\r\n }\r\n\r\n removeOption(\r\n option: ProductOption,\r\n optionType: ProductOptionType,\r\n event?: MouseEvent\r\n ) {\r\n if (event) event.stopPropagation();\r\n\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios.forEach(\r\n (complemento, index) => {\r\n if (\r\n complemento.complemento === option.nome &&\r\n complemento.Quantidade === 1\r\n ) {\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios.splice(\r\n index,\r\n 1\r\n );\r\n } else if (complemento.complemento === option.nome) {\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios[index]\r\n .Quantidade--;\r\n }\r\n }\r\n );\r\n\r\n let ComplementosMeioMeiosArr = [];\r\n\r\n this.item.meiomeios[halfIndex].complementos.forEach(\r\n (complemento, index) => {\r\n if (complemento.pedidoItemOpcaoId === option.produtosOpcaoId) {\r\n ComplementosMeioMeiosArr.push(index);\r\n }\r\n }\r\n );\r\n\r\n this.item.meiomeios[halfIndex].complementos.splice(\r\n ComplementosMeioMeiosArr.reverse()[0],\r\n 1\r\n );\r\n }\r\n\r\n addOption(\r\n option: ProductOption,\r\n optionType: ProductOptionType,\r\n event?: MouseEvent\r\n ) {\r\n if (event) event.stopPropagation();\r\n const qtd = this.getHalfsComplementsQuantity(\r\n optionType.produtosOpcaoTipoId\r\n );\r\n\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n let itemIndex = this.item.meiomeios.length - 1;\r\n let itemComplementIndex =\r\n this.item.meiomeios[halfIndex].complementos.length;\r\n\r\n if (qtd < optionType.qtdeMax) {\r\n this.item.meiomeios[halfIndex].complementos.push({\r\n i: itemIndex,\r\n i2: itemComplementIndex,\r\n nome: option.nome,\r\n pedidoItemOpcaoId: option.produtosOpcaoId,\r\n produtoDesc: this.half.nome,\r\n produtoPdv: option[\"produtoPdv\"],\r\n produtosOpcaoTipoId: optionType.produtosOpcaoTipoId,\r\n tipo: optionType.tipo,\r\n valor: option.valor,\r\n quantidade: 1,\r\n });\r\n const optionIndex = this.item.meiomeios[\r\n halfIndex\r\n ].CartComplementosMeioMeios.findIndex(\r\n (op) => op.complemento == option.nome\r\n );\r\n if (optionIndex == -1)\r\n (option.quantidade = 1) &&\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios.push({\r\n Quantidade: 1,\r\n complemento: option.nome,\r\n valor: option.valor,\r\n });\r\n else\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios[optionIndex]\r\n .Quantidade++;\r\n }\r\n }\r\n\r\n /**\r\n * Mostra a quantidade da opção selecionada\r\n */\r\n getOptionQtd(opt: ProductOption, optionId: string | number) {\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n\r\n const optionsIndex = this.item.meiomeios[\r\n halfIndex\r\n ].CartComplementosMeioMeios.findIndex(\r\n (option) => option.complemento == opt.nome\r\n );\r\n\r\n const option =\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios[optionsIndex];\r\n return option?.Quantidade || 0;\r\n }\r\n\r\n subTotal() {\r\n let subTotal: number = 0;\r\n\r\n this.item.meiomeios.forEach((item, halfIndex) => {\r\n let meioMeio = this.item.meiomeios[halfIndex];\r\n meioMeio.complementos.forEach(\r\n (item) => (subTotal = subTotal + item.valor)\r\n );\r\n });\r\n\r\n const maxHalf = this.item.meiomeios.reduce(function (prev, current) {\r\n return prev.valorRegular > current.valorRegular ? prev : current;\r\n });\r\n\r\n this.item.meiomeios[\r\n this.item.meiomeios.findIndex(\r\n (item) =>\r\n item.produtoGuid === maxHalf.produtoGuid &&\r\n item.produtoId === maxHalf.produtoId\r\n )\r\n ].valorVendaComplemento =\r\n this.item.meiomeios[\r\n this.item.meiomeios.findIndex(\r\n (item) =>\r\n item.produtoGuid === maxHalf.produtoGuid &&\r\n item.produtoId === maxHalf.produtoId\r\n )\r\n ].valorRegular + subTotal;\r\n this.complementsSubTotal = subTotal;\r\n\r\n this.processButtonAvailability();\r\n }\r\n\r\n processButtonAvailability() {\r\n let required: boolean = false;\r\n\r\n this.complements.forEach((complement) => {\r\n if (complement.obrigatorio) {\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n\r\n let index = this.item.meiomeios[halfIndex].complementos.findIndex(\r\n (k) => k.produtosOpcaoTipoId === complement.produtosOpcaoTipoId\r\n );\r\n\r\n index !== -1 ? (required = false) : (required = true);\r\n }\r\n });\r\n\r\n this.buttonAvailability = required;\r\n }\r\n\r\n /**\r\n * Troca as quantidades de opções\r\n * @obs A lógica tá bem chatinha de entender, então cuidado na hora de mexer\r\n * @param selectedOption\r\n * @param optionType\r\n */\r\n toggleOption(selectedOption: ProductOption, optionType: ProductOptionType) {\r\n const qtd = this.getHalfsComplementsQuantity(\r\n optionType.produtosOpcaoTipoId\r\n );\r\n\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n let itemIndex = this.item.meiomeios.length - 1;\r\n let itemComplementIndex =\r\n this.item.meiomeios[halfIndex].complementos.length;\r\n\r\n if (qtd < optionType.qtdeMax) {\r\n this.item.meiomeios[halfIndex].complementos.push({\r\n i: itemIndex,\r\n i2: itemComplementIndex,\r\n nome: selectedOption.nome,\r\n pedidoItemOpcaoId: selectedOption.produtosOpcaoId,\r\n produtoDesc: this.half.nome,\r\n produtoPdv: selectedOption[\"produtoPdv\"],\r\n produtosOpcaoTipoId: optionType.produtosOpcaoTipoId,\r\n tipo: optionType.tipo,\r\n valor: selectedOption.valor,\r\n quantidade: 1,\r\n });\r\n const optionIndex = this.item.meiomeios[\r\n halfIndex\r\n ].CartComplementosMeioMeios.findIndex(\r\n (op) => op.complemento == selectedOption.nome\r\n );\r\n if (optionIndex == -1)\r\n (selectedOption.quantidade = 1) &&\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios.push({\r\n Quantidade: 1,\r\n complemento: selectedOption.nome,\r\n valor: selectedOption.valor,\r\n });\r\n else\r\n this.item.meiomeios[halfIndex].CartComplementosMeioMeios[optionIndex]\r\n .Quantidade++;\r\n } else if (qtd == optionType.qtdeMax && optionType.tipo === 1) {\r\n let halfIndex = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === this.half.produtoId\r\n );\r\n\r\n let CartComplementosMeioMeios = null;\r\n\r\n this.complements.forEach((complement) => {\r\n if (\r\n complement.produtosOpcaoTipoId === selectedOption.produtosOpcaoTipoId\r\n ) {\r\n complement.produtoOpcaos.forEach((produto) => {\r\n CartComplementosMeioMeios = this.item.meiomeios[\r\n halfIndex\r\n ].CartComplementosMeioMeios.filter(\r\n (k) => k.complemento !== produto.nome\r\n );\r\n\r\n CartComplementosMeioMeios\r\n ? (this.item.meiomeios[halfIndex].CartComplementosMeioMeios =\r\n CartComplementosMeioMeios)\r\n : \"\";\r\n });\r\n }\r\n });\r\n\r\n let ComplementosMeioMeiosArr = [];\r\n\r\n this.item.meiomeios[halfIndex].complementos.forEach(\r\n (complemento, index) => {\r\n if (\r\n complemento.pedidoItemOpcaoId === selectedOption.produtosOpcaoId\r\n ) {\r\n ComplementosMeioMeiosArr.push(index);\r\n }\r\n }\r\n );\r\n\r\n this.item.meiomeios[halfIndex].complementos.splice(\r\n ComplementosMeioMeiosArr.reverse()[0],\r\n 1\r\n );\r\n\r\n this.toggleOption(selectedOption, optionType);\r\n }\r\n }\r\n\r\n // Adicionar e remover produtos do item\r\n changeNumber(operation: \"add\" | \"remove\") {\r\n this.item.number\r\n ? operation == \"add\"\r\n ? this.item.number++\r\n : this.item.number--\r\n : (this.item.number = 1);\r\n }\r\n\r\n /**\r\n * Salva as configurações dos complementos\r\n * @param item\r\n */\r\n addToCart() {\r\n console.log(this.item);\r\n\r\n this.closeItemDetailsMeioMeio();\r\n /* let complements1: any[] = [];\r\n let complements2: any[] = [];\r\n\r\n this.item.cartItemOpcoes.forEach((item, index) => {\r\n complements1.push({\r\n Quantidade: item.quantidade,\r\n complemento: item.nome,\r\n valor: item.valor,\r\n });\r\n\r\n complements2.push({\r\n i2: index,\r\n nome: item.nome,\r\n pedidoItemOpcaoId: item.produtosOpcaoId,\r\n produtoDesc: this.half.nome,\r\n produtoPdv: \"\",\r\n produtosOpcaoTipoId: item.produtosOpcaoTipoId,\r\n tipo: 1,\r\n valor: item.valor,\r\n });\r\n });\r\n\r\n this.half = { ...this.half, complements1, complements2 };\r\n\r\n console.log(complements1, complements2, this.half); */\r\n\r\n /* this.item.cartItemOpcoes.forEach((item)=>{\r\n this.half = {...this.half, CartComplementosMeioMeios:[]} }\r\n })\r\n \r\n console.log(this.item, this.half); */\r\n\r\n /* this.item.observacao = this.obs;\r\n console.log(this.obs); */\r\n /* const sub_options = this.options$.subscribe((options) => {\r\n let error: boolean; // Se existir algum erro nas validações, deve ser passado true para essa variável\r\n\r\n // Checagem de opcionais\r\n for (const option of options) {\r\n const qtd = this.getQtdSelected(option.produtosOpcaoTipoId);\r\n\r\n if (option.obrigatorio && option.quantidade > qtd) {\r\n this.alertCtrl\r\n .create({\r\n header: \"Ops! Faltou algo\",\r\n message: `A categoria ${option.nome} deve ter ${option.quantidade} escolhidos`,\r\n })\r\n .then((alert) => alert.present());\r\n error = true;\r\n break;\r\n } else if (option.qtdeMax < qtd) {\r\n this.alertCtrl\r\n .create({\r\n header: \"Ops!\",\r\n message: `A categoria ${option.nome} deve ter no máximo ${option.qtdeMax} escolhidos`,\r\n })\r\n .then((alert) => alert.present());\r\n error = true;\r\n break;\r\n }\r\n }\r\n sub_options.unsubscribe();\r\n\r\n // Checagem de meio a meios\r\n if (this.item.produto.numberMeiomeio > 1)\r\n if (this.item.meiomeios.length < 2) {\r\n this.alertCtrl\r\n .create({\r\n header: \"Ops! Faltou algo\",\r\n message: `Faltam ${\r\n this.item.produto.numberMeiomeio - this.item.meiomeios.length\r\n } sabores para serem escolhidos`,\r\n })\r\n .then((alert) => alert.present());\r\n error = true;\r\n }\r\n\r\n // Caso não haja erros, adicionará o item no carrinho\r\n if (!error) {\r\n if (this.mode == \"new\" || this.replay) {\r\n this.item.observacao = this.obs;\r\n this.cart.setItem(item);\r\n this.utils.animate(\"shaking adding\", \"cart-icon\", \"class\", 900);\r\n this.toCallOrder();\r\n } else if (this.mode == \"edit\") this.cart.editItem(item);\r\n this.closeItemDetails();\r\n console.log(\"editado:\", item);\r\n }\r\n }); */\r\n }\r\n\r\n callImageModal(img: string) {\r\n this.modalController\r\n .create({\r\n component: PictureViewerComponent,\r\n componentProps: {\r\n img,\r\n },\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n closeItemDetailsMeioMeio() {\r\n if (!this.buttonAvailability) {\r\n this.modalController.dismiss();\r\n } else {\r\n this.toastController\r\n .create({\r\n message:\r\n \"Não é possivel retornar no momento! Selecione o complemento obrigatório\",\r\n duration: 3000,\r\n color: \"danger\",\r\n })\r\n .then((toast) => {\r\n toast.present();\r\n });\r\n }\r\n }\r\n\r\n karmatests() {\r\n console.log(\r\n this.item.meiomeios[\r\n this.item.meiomeios.findIndex(\r\n (k) => k.produtoId === this.half.produtoId\r\n )\r\n ]\r\n );\r\n }\r\n}\r\n","export default \".cart-icon {\\n z-index: 2000;\\n cursor: pointer;\\n}\\n\\n.cart-icon:hover {\\n color: #00ff00;\\n}\\n\\n.cart-icon.shaking {\\n animation: wobble-hor-top ease normal both 0.8s;\\n}\\n\\n.cart-icon.shaking.adding {\\n color: #00ff00;\\n}\\n\\n.cart-icon.shaking.removing {\\n color: red;\\n}\\n\\n.select-complement::part(native) {\\n height: 100px;\\n}\\n\\n.select-complement.selected {\\n background-color: #2dd36f;\\n cursor: pointer;\\n transition-duration: 0.5s;\\n}\\n\\n.options-done {\\n background-color: #2dd36f;\\n}\\n\\n.quantity-badge {\\n transition-duration: 0.5s;\\n}\\n\\n.list-header-half {\\n padding-left: 5px;\\n}\\n\\n.name-half {\\n padding-left: 0;\\n}\\n\\n.text-half {\\n font-weight: bold;\\n font-size: 22px;\\n}\\n\\n.quantity-half {\\n text-align: right;\\n}\\n\\n.option-list {\\n border-radius: 5px;\\n background-color: var(--ion-color-light);\\n margin-bottom: 0.7em;\\n}\\n\\n.option-button {\\n width: 48px;\\n}\\n\\n.option-button ion-icon {\\n --ionicon-stroke-width: 96px;\\n}\\n\\n.addline {\\n display: flex;\\n flex: 1 1 0%;\\n flex-direction: inherit;\\n align-items: inherit;\\n align-self: stretch;\\n text-overflow: ellipsis;\\n overflow: inherit;\\n box-sizing: border-box;\\n height: 15vh;\\n}\\n\\n.imageprod {\\n border-radius: 50%;\\n height: inherit;\\n width: auto;\\n max-height: 50vh;\\n position: relative;\\n left: 7%;\\n}\\n\\n.col-half {\\n max-height: 320px;\\n overflow-y: scroll;\\n scroll-behavior: smooth;\\n}\\n\\n.footer-toolbar .btn-quantity-wrapper {\\n display: inline;\\n}\\n\\n.footer-toolbar .confirm-btn {\\n margin: 0;\\n}\\n\\n.footer-toolbar .confirm-btn ion-label {\\n text-transform: uppercase;\\n text-align: center;\\n}\\n\\n.btn-quantity {\\n --padding-start: 3px;\\n --padding-end: 3px;\\n}\\n\\n.btn-complement {\\n --padding-end: 5px;\\n padding-right: 5px;\\n margin-right: 5px;\\n color: black !important;\\n}\\n\\n.prodtitle {\\n position: relative;\\n font-size: 25px;\\n font-family: \\\"Work Sans\\\";\\n font-weight: bolder;\\n margin-left: 1%;\\n}\\n\\n.prodsubtitle {\\n position: relative;\\n margin-left: 1%;\\n}\\n\\n.proddesc {\\n background-color: var(--ion-color-light);\\n /* margin-bottom: .7em; */\\n position: relative;\\n border-radius: 15px;\\n}\\n\\n.divzona {\\n display: inline-grid;\\n vertical-align: middle;\\n height: 26vh;\\n margin-top: 5%;\\n}\\n\\n.info-wrapper {\\n --img-height: 150px;\\n}\\n\\n.info-wrapper .prod-image-wrapper {\\n padding: 0;\\n}\\n\\n.info-wrapper .prod-image-wrapper img {\\n height: var(--img-height);\\n width: calc(100% - 10px);\\n border-radius: 10px;\\n}\\n\\n.info-wrapper .description-wrapper {\\n max-height: var(--img-height);\\n overflow-y: auto;\\n background-color: var(--ion-color-light);\\n border-radius: 5px;\\n padding: 0;\\n}\\n\\n.info-wrapper .description-wrapper .prod-name-wrapper ion-label {\\n font-weight: bold;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItaXRlbS9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHYyXFx2Mi1pdGVtXFx2Mi1pdGVtLnBhZ2Uuc2NzcyIsInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItaXRlbS92Mi1pdGVtLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGFBQUE7RUFDQSxlQUFBO0FDQ0Y7O0FERUE7RUFDRSxjQUFBO0FDQ0Y7O0FERUE7RUFDRSwrQ0FBQTtBQ0NGOztBREVBO0VBQ0UsY0FBQTtBQ0NGOztBREVBO0VBQ0UsVUFBQTtBQ0NGOztBREVBO0VBQ0UsYUFBQTtBQ0NGOztBREVBO0VBQ0UseUJBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7QUNDRjs7QURFQTtFQUNFLHlCQUFBO0FDQ0Y7O0FERUE7RUFDRSx5QkFBQTtBQ0NGOztBREVBO0VBQ0UsaUJBQUE7QUNDRjs7QURFQTtFQUNFLGVBQUE7QUNDRjs7QURFQTtFQUNFLGlCQUFBO0VBQ0EsZUFBQTtBQ0NGOztBREVBO0VBQ0UsaUJBQUE7QUNDRjs7QURFQTtFQUNFLGtCQUFBO0VBQ0Esd0NBQUE7RUFDQSxvQkFBQTtBQ0NGOztBREVBO0VBQ0UsV0FBQTtBQ0NGOztBRENFO0VBQ0UsNEJBQUE7QUNDSjs7QURHQTtFQUNFLGFBQUE7RUFDQSxZQUFBO0VBQ0EsdUJBQUE7RUFDQSxvQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFDQSxpQkFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtBQ0FGOztBREdBO0VBQ0Usa0JBQUE7RUFDQSxlQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxRQUFBO0FDQUY7O0FER0E7RUFDRSxpQkFBQTtFQUNBLGtCQUFBO0VBQ0EsdUJBQUE7QUNBRjs7QURNRTtFQUNFLGVBQUE7QUNISjs7QURRRTtFQUdFLFNBQUE7QUNSSjs7QURVSTtFQUNFLHlCQUFBO0VBQ0Esa0JBQUE7QUNSTjs7QURhQTtFQUNFLG9CQUFBO0VBQ0Esa0JBQUE7QUNWRjs7QURhQTtFQUNFLGtCQUFBO0VBQ0Esa0JBQUE7RUFDQSxpQkFBQTtFQUNBLHVCQUFBO0FDVkY7O0FEYUE7RUFDRSxrQkFBQTtFQUNBLGVBQUE7RUFDQSx3QkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtBQ1ZGOztBRGFBO0VBQ0Usa0JBQUE7RUFDQSxlQUFBO0FDVkY7O0FEYUE7RUFDRSx3Q0FBQTtFQUNBLHlCQUFBO0VBQ0Esa0JBQUE7RUFFQSxtQkFBQTtBQ1hGOztBRGNBO0VBQ0Usb0JBQUE7RUFDQSxzQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FDWEY7O0FEY0E7RUFDRSxtQkFBQTtBQ1hGOztBRGFFO0VBQ0UsVUFBQTtBQ1hKOztBRGFJO0VBQ0UseUJBQUE7RUFDQSx3QkFBQTtFQUNBLG1CQUFBO0FDWE47O0FEZUU7RUFDRSw2QkFBQTtFQUNBLGdCQUFBO0VBQ0Esd0NBQUE7RUFDQSxrQkFBQTtFQUNBLFVBQUE7QUNiSjs7QURnQk07RUFDRSxpQkFBQTtBQ2RSIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItaXRlbS92Mi1pdGVtLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5jYXJ0LWljb24ge1xyXG4gIHotaW5kZXg6IDIwMDA7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcblxyXG4uY2FydC1pY29uOmhvdmVyIHtcclxuICBjb2xvcjogIzAwZmYwMDtcclxufVxyXG5cclxuLmNhcnQtaWNvbi5zaGFraW5nIHtcclxuICBhbmltYXRpb246IHdvYmJsZS1ob3ItdG9wIGVhc2Ugbm9ybWFsIGJvdGggMC44cztcclxufVxyXG5cclxuLmNhcnQtaWNvbi5zaGFraW5nLmFkZGluZyB7XHJcbiAgY29sb3I6ICMwMGZmMDA7XHJcbn1cclxuXHJcbi5jYXJ0LWljb24uc2hha2luZy5yZW1vdmluZyB7XHJcbiAgY29sb3I6IHJlZDtcclxufVxyXG5cclxuLnNlbGVjdC1jb21wbGVtZW50OjpwYXJ0KG5hdGl2ZSkge1xyXG4gIGhlaWdodDogMTAwcHg7XHJcbn1cclxuXHJcbi5zZWxlY3QtY29tcGxlbWVudC5zZWxlY3RlZCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJkZDM2ZjtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41cztcclxufVxyXG5cclxuLm9wdGlvbnMtZG9uZSB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzJkZDM2ZjtcclxufVxyXG5cclxuLnF1YW50aXR5LWJhZGdlIHtcclxuICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzO1xyXG59XHJcblxyXG4ubGlzdC1oZWFkZXItaGFsZiB7XHJcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcbn1cclxuXHJcbi5uYW1lLWhhbGYge1xyXG4gIHBhZGRpbmctbGVmdDogMDtcclxufVxyXG5cclxuLnRleHQtaGFsZiB7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgZm9udC1zaXplOiAyMnB4O1xyXG59XHJcblxyXG4ucXVhbnRpdHktaGFsZiB7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbn1cclxuXHJcbi5vcHRpb24tbGlzdCB7XHJcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XHJcbiAgbWFyZ2luLWJvdHRvbTogMC43ZW07XHJcbn1cclxuXHJcbi5vcHRpb24tYnV0dG9uIHtcclxuICB3aWR0aDogNDhweDtcclxuXHJcbiAgaW9uLWljb24ge1xyXG4gICAgLS1pb25pY29uLXN0cm9rZS13aWR0aDogOTZweDtcclxuICB9XHJcbn1cclxuXHJcbi5hZGRsaW5lIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXg6IDEgMSAwJTtcclxuICBmbGV4LWRpcmVjdGlvbjogaW5oZXJpdDtcclxuICBhbGlnbi1pdGVtczogaW5oZXJpdDtcclxuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIG92ZXJmbG93OiBpbmhlcml0O1xyXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgaGVpZ2h0OiAxNXZoO1xyXG59XHJcblxyXG4uaW1hZ2Vwcm9kIHtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgaGVpZ2h0OiBpbmhlcml0O1xyXG4gIHdpZHRoOiBhdXRvO1xyXG4gIG1heC1oZWlnaHQ6IDUwdmg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGxlZnQ6IDclO1xyXG59XHJcblxyXG4uY29sLWhhbGYge1xyXG4gIG1heC1oZWlnaHQ6IDMyMHB4O1xyXG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcclxuICBzY3JvbGwtYmVoYXZpb3I6IHNtb290aDtcclxufVxyXG5cclxuLmZvb3Rlci10b29sYmFyIHtcclxuICAvLyAtLXF1YW50aXR5LWJ0bi13aWR0aDogMjAwcHg7XHJcblxyXG4gIC5idG4tcXVhbnRpdHktd3JhcHBlciB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAvLyBwYWRkaW5nOiAyMHB4O1xyXG4gICAgLy8gd2lkdGg6IHZhcigtLXF1YW50aXR5LWJ0bi13aWR0aCk7XHJcbiAgfVxyXG5cclxuICAuY29uZmlybS1idG4ge1xyXG4gICAgLy8gZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgLy8gd2lkdGg6IGNhbGMoMTAwJSAtIHZhcigtLXF1YW50aXR5LWJ0bi13aWR0aCkpO1xyXG4gICAgbWFyZ2luOiAwO1xyXG5cclxuICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5idG4tcXVhbnRpdHkge1xyXG4gIC0tcGFkZGluZy1zdGFydDogM3B4O1xyXG4gIC0tcGFkZGluZy1lbmQ6IDNweDtcclxufVxyXG5cclxuLmJ0bi1jb21wbGVtZW50IHtcclxuICAtLXBhZGRpbmctZW5kOiA1cHg7XHJcbiAgcGFkZGluZy1yaWdodDogNXB4O1xyXG4gIG1hcmdpbi1yaWdodDogNXB4O1xyXG4gIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xyXG59XHJcblxyXG4ucHJvZHRpdGxlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgZm9udC1zaXplOiAyNXB4O1xyXG4gIGZvbnQtZmFtaWx5OiBcIldvcmsgU2Fuc1wiO1xyXG4gIGZvbnQtd2VpZ2h0OiBib2xkZXI7XHJcbiAgbWFyZ2luLWxlZnQ6IDElO1xyXG59XHJcblxyXG4ucHJvZHN1YnRpdGxlIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgbWFyZ2luLWxlZnQ6IDElO1xyXG59XHJcblxyXG4ucHJvZGRlc2Mge1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XHJcbiAgLyogbWFyZ2luLWJvdHRvbTogLjdlbTsgKi9cclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgLy8gbGVmdDogMnZ3O1xyXG4gIGJvcmRlci1yYWRpdXM6IDE1cHg7XHJcbn1cclxuXHJcbi5kaXZ6b25hIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtZ3JpZDtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gIGhlaWdodDogMjZ2aDtcclxuICBtYXJnaW4tdG9wOiA1JTtcclxufVxyXG5cclxuLmluZm8td3JhcHBlciB7XHJcbiAgLS1pbWctaGVpZ2h0OiAxNTBweDtcclxuXHJcbiAgLnByb2QtaW1hZ2Utd3JhcHBlciB7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIGltZyB7XHJcbiAgICAgIGhlaWdodDogdmFyKC0taW1nLWhlaWdodCk7XHJcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSAxMHB4KTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZXNjcmlwdGlvbi13cmFwcGVyIHtcclxuICAgIG1heC1oZWlnaHQ6IHZhcigtLWltZy1oZWlnaHQpO1xyXG4gICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICBwYWRkaW5nOiAwO1xyXG5cclxuICAgIC5wcm9kLW5hbWUtd3JhcHBlciB7XHJcbiAgICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiLmNhcnQtaWNvbiB7XG4gIHotaW5kZXg6IDIwMDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmNhcnQtaWNvbjpob3ZlciB7XG4gIGNvbG9yOiAjMDBmZjAwO1xufVxuXG4uY2FydC1pY29uLnNoYWtpbmcge1xuICBhbmltYXRpb246IHdvYmJsZS1ob3ItdG9wIGVhc2Ugbm9ybWFsIGJvdGggMC44cztcbn1cblxuLmNhcnQtaWNvbi5zaGFraW5nLmFkZGluZyB7XG4gIGNvbG9yOiAjMDBmZjAwO1xufVxuXG4uY2FydC1pY29uLnNoYWtpbmcucmVtb3Zpbmcge1xuICBjb2xvcjogcmVkO1xufVxuXG4uc2VsZWN0LWNvbXBsZW1lbnQ6OnBhcnQobmF0aXZlKSB7XG4gIGhlaWdodDogMTAwcHg7XG59XG5cbi5zZWxlY3QtY29tcGxlbWVudC5zZWxlY3RlZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZGQzNmY7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41cztcbn1cblxuLm9wdGlvbnMtZG9uZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZGQzNmY7XG59XG5cbi5xdWFudGl0eS1iYWRnZSB7XG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7XG59XG5cbi5saXN0LWhlYWRlci1oYWxmIHtcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XG59XG5cbi5uYW1lLWhhbGYge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG59XG5cbi50ZXh0LWhhbGYge1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgZm9udC1zaXplOiAyMnB4O1xufVxuXG4ucXVhbnRpdHktaGFsZiB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4ub3B0aW9uLWxpc3Qge1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gIG1hcmdpbi1ib3R0b206IDAuN2VtO1xufVxuXG4ub3B0aW9uLWJ1dHRvbiB7XG4gIHdpZHRoOiA0OHB4O1xufVxuLm9wdGlvbi1idXR0b24gaW9uLWljb24ge1xuICAtLWlvbmljb24tc3Ryb2tlLXdpZHRoOiA5NnB4O1xufVxuXG4uYWRkbGluZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXg6IDEgMSAwJTtcbiAgZmxleC1kaXJlY3Rpb246IGluaGVyaXQ7XG4gIGFsaWduLWl0ZW1zOiBpbmhlcml0O1xuICBhbGlnbi1zZWxmOiBzdHJldGNoO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGluaGVyaXQ7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGhlaWdodDogMTV2aDtcbn1cblxuLmltYWdlcHJvZCB7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgaGVpZ2h0OiBpbmhlcml0O1xuICB3aWR0aDogYXV0bztcbiAgbWF4LWhlaWdodDogNTB2aDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsZWZ0OiA3JTtcbn1cblxuLmNvbC1oYWxmIHtcbiAgbWF4LWhlaWdodDogMzIwcHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG59XG5cbi5mb290ZXItdG9vbGJhciAuYnRuLXF1YW50aXR5LXdyYXBwZXIge1xuICBkaXNwbGF5OiBpbmxpbmU7XG59XG4uZm9vdGVyLXRvb2xiYXIgLmNvbmZpcm0tYnRuIHtcbiAgbWFyZ2luOiAwO1xufVxuLmZvb3Rlci10b29sYmFyIC5jb25maXJtLWJ0biBpb24tbGFiZWwge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5idG4tcXVhbnRpdHkge1xuICAtLXBhZGRpbmctc3RhcnQ6IDNweDtcbiAgLS1wYWRkaW5nLWVuZDogM3B4O1xufVxuXG4uYnRuLWNvbXBsZW1lbnQge1xuICAtLXBhZGRpbmctZW5kOiA1cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDVweDtcbiAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xufVxuXG4ucHJvZHRpdGxlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmb250LXNpemU6IDI1cHg7XG4gIGZvbnQtZmFtaWx5OiBcIldvcmsgU2Fuc1wiO1xuICBmb250LXdlaWdodDogYm9sZGVyO1xuICBtYXJnaW4tbGVmdDogMSU7XG59XG5cbi5wcm9kc3VidGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbi1sZWZ0OiAxJTtcbn1cblxuLnByb2RkZXNjIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgLyogbWFyZ2luLWJvdHRvbTogLjdlbTsgKi9cbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiAxNXB4O1xufVxuXG4uZGl2em9uYSB7XG4gIGRpc3BsYXk6IGlubGluZS1ncmlkO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICBoZWlnaHQ6IDI2dmg7XG4gIG1hcmdpbi10b3A6IDUlO1xufVxuXG4uaW5mby13cmFwcGVyIHtcbiAgLS1pbWctaGVpZ2h0OiAxNTBweDtcbn1cbi5pbmZvLXdyYXBwZXIgLnByb2QtaW1hZ2Utd3JhcHBlciB7XG4gIHBhZGRpbmc6IDA7XG59XG4uaW5mby13cmFwcGVyIC5wcm9kLWltYWdlLXdyYXBwZXIgaW1nIHtcbiAgaGVpZ2h0OiB2YXIoLS1pbWctaGVpZ2h0KTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDEwcHgpO1xuICBib3JkZXItcmFkaXVzOiAxMHB4O1xufVxuLmluZm8td3JhcHBlciAuZGVzY3JpcHRpb24td3JhcHBlciB7XG4gIG1heC1oZWlnaHQ6IHZhcigtLWltZy1oZWlnaHQpO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG4gIHBhZGRpbmc6IDA7XG59XG4uaW5mby13cmFwcGVyIC5kZXNjcmlwdGlvbi13cmFwcGVyIC5wcm9kLW5hbWUtd3JhcHBlciBpb24tbGFiZWwge1xuICBmb250LXdlaWdodDogYm9sZDtcbn0iXX0= */\";","import { Component, OnInit, Input, Injectable } from \"@angular/core\";\r\nimport { Observable, Subscription } from \"rxjs\";\r\n\r\nimport {\r\n ModalController,\r\n AlertController,\r\n ToastController,\r\n} from \"@ionic/angular\";\r\n\r\nimport { ItemCart } from \"../../../../interfaces/itemCart.interface\";\r\nimport { Product } from \"../../../../models/produto.model\";\r\nimport {\r\n ProductOptionType,\r\n ProductOption,\r\n} from \"../../../../interfaces/product-option.interface\";\r\nimport { ProductService } from \"../../../../services/product.service\";\r\nimport { RestaurantService } from \"../../../../services/restaurant.service\";\r\nimport { Utils } from \"../../../../shared/util\";\r\nimport { Half } from \"../../../../models/half.model\";\r\nimport { CartService } from \"../../../../services/cart.service\";\r\nimport { NullTemplateVisitor } from \"@angular/compiler\";\r\nimport { PictureViewerComponent } from \"../picture-viewer/picture-viewer.component\";\r\nimport { environment } from \"src/environments/environment\";\r\nimport { V2TopBarComponent } from \"../v2-top-bar/v2-top-bar.component\";\r\nimport { dismiss } from \"@ionic/core/dist/types/utils/overlays\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\nimport { StorageService } from \"src/app/services/storage.service\";\r\nimport { V2ItemComplementosmeiomeioPage } from \"../v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page\";\r\n\r\n@Component({\r\n selector: \"v2-app-item\",\r\n templateUrl: \"./v2-item.page.html\",\r\n styleUrls: [\"./v2-item.page.scss\"],\r\n})\r\n@Injectable()\r\nexport class V2ItemPage implements OnInit {\r\n /**\r\n * Função para abrir o carrinho\r\n */\r\n @Input() openCartFn: any; // TODO revisar necessidade\r\n /**\r\n * Item do carrinho passado. eg: usado quando o produto já está no carrinho\r\n */\r\n @Input() itemCart: ItemCart; // TODO Revisar possibilidade de usar valor default = new ItemCart()\r\n /**\r\n * Produto do item do carrinho\r\n */\r\n @Input() prod?: Product;\r\n /**\r\n * Diz se o item é editável. Usado depois que o pedido foi finalizado\r\n */\r\n @Input() readOnly: boolean;\r\n /**\r\n * Permite readicionar o item ao carrinho\r\n */\r\n @Input() replay: boolean;\r\n\r\n item: ItemCart = new ItemCart(); //\r\n /**\r\n * Diz se o item é novo ou está sendo editado\r\n */\r\n mode: \"new\" | \"edit\" = \"new\"; // TODO revisar necessidade de variável\r\n /**\r\n * Observação do item\r\n */\r\n obs: string; // TODO Revisar possibilidade de usar diretamente no item e não em uma variável\r\n\r\n /**\r\n * Contém um observable com as opções do produto\r\n */\r\n options$: Observable = new Observable<\r\n ProductOptionType[]\r\n >();\r\n /**\r\n * Contém um observable com as opções dos complementos do produto\r\n */\r\n optionsMeioMeio$: Observable = new Observable<\r\n ProductOptionType[]\r\n >();\r\n /**\r\n * Inscrição de $options\r\n */\r\n sub_options: Subscription;\r\n /**\r\n * Observable de meio a meios. Só serão requisitados caso o numberMeioMeio do produto seja > 1\r\n */\r\n meios$: Observable;\r\n produtoOpcoes: Array = new Array();\r\n prodHalfEnab: boolean = false;\r\n\r\n public appMode$: Observable;\r\n public toastadd: any;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n public cart: CartService,\r\n protected modalController: ModalController,\r\n private productService: ProductService,\r\n public restaurantService: RestaurantService,\r\n private topbar: V2TopBarComponent,\r\n private config: ConfigurationService,\r\n private toastCtrl: ToastController,\r\n private storage: StorageService,\r\n public utils: Utils\r\n ) {\r\n this.readOnly = this.config.modoApp == \"menu\" ? true : false;\r\n const mode = this.storage.get(environment.storage.appMode);\r\n }\r\n\r\n ngOnInit() {\r\n this.appMode$ = this.config.getMode();\r\n // Caso nenhum Item seja passado na criação do modal/page ele irá criar um\r\n this.options$ = this.productService.getOptions(\r\n this.prod?.produtoId || this.itemCart.produto.produtoId\r\n );\r\n this.meios$ = this.productService.getHalfs(\r\n this.prod?.produtoId || this.itemCart.produto.produtoId\r\n );\r\n\r\n if (!this.itemCart) {\r\n this.item = new ItemCart();\r\n this.item.id = this.cart.getAllItems().length + 1;\r\n this.item.produto = this.prod;\r\n this.item.number = 1;\r\n // this.item.complementos = []\r\n this.item.observacao = \"\";\r\n this.obs = \"\";\r\n } else {\r\n const keys = Object.keys(this.itemCart);\r\n keys.forEach((key) => (this.item[key] = this.itemCart[key]));\r\n this.mode = \"edit\";\r\n this.obs = this.itemCart.observacao;\r\n }\r\n\r\n if (this.item.meiomeios.length >= 1) {\r\n const maxHalf = this.item.meiomeios.reduce(function (prev, current) {\r\n return prev.valorVenda > current.valorVenda ? prev : current;\r\n });\r\n\r\n this.item.meiomeios[\r\n this.item.meiomeios.findIndex(\r\n (k) =>\r\n k.produtoGuid === maxHalf.produtoGuid &&\r\n k.produtoId === maxHalf.produtoId &&\r\n k.tokenRestaurante === maxHalf.tokenRestaurante\r\n )\r\n ].valorVenda = maxHalf.valorVendaComplemento;\r\n }\r\n }\r\n\r\n /**\r\n * Fecha o modal\r\n */\r\n closeItemDetails() {\r\n this.modalController.dismiss();\r\n }\r\n\r\n /**\r\n * Tira o produto do carrinho\r\n * @deprecated\r\n * @param product\r\n */\r\n throwFromCart(product: Product) {\r\n this.cart.removeItem(product.produtoId);\r\n this.utils.animate(\"shaking removing\", \"cart-icon\", \"class\", 900);\r\n }\r\n\r\n /**\r\n * Adiciona o item no carrinho\r\n * @param item\r\n */\r\n addToCart(item: ItemCart) {\r\n this.item.observacao = this.obs;\r\n console.log(this.obs);\r\n const sub_options = this.options$.subscribe((options) => {\r\n let error: boolean; // Se existir algum erro nas validações, deve ser passado true para essa variável\r\n\r\n // Checagem de opcionais\r\n for (const option of options) {\r\n const qtd = this.getQtdSelected(option.produtosOpcaoTipoId);\r\n\r\n if (option.obrigatorio && option.quantidade > qtd) {\r\n this.alertCtrl\r\n .create({\r\n header: \"Ops! Faltou algo\",\r\n message: `A categoria ${option.nome} deve ter ${option.quantidade} escolhidos`,\r\n })\r\n .then((alert) => alert.present());\r\n error = true;\r\n break;\r\n } else if (option.qtdeMax < qtd) {\r\n this.alertCtrl\r\n .create({\r\n header: \"Ops!\",\r\n message: `A categoria ${option.nome} deve ter no máximo ${option.qtdeMax} escolhidos`,\r\n })\r\n .then((alert) => alert.present());\r\n error = true;\r\n break;\r\n }\r\n }\r\n sub_options.unsubscribe();\r\n\r\n // Checagem de meio a meios\r\n if (this.item.produto.numberMeiomeio > 1)\r\n if (this.item.meiomeios.length < 2) {\r\n this.alertCtrl\r\n .create({\r\n header: \"Ops! Faltou algo\",\r\n message: `Faltam ${\r\n this.item.produto.numberMeiomeio - this.item.meiomeios.length\r\n } sabores para serem escolhidos`,\r\n })\r\n .then((alert) => alert.present());\r\n error = true;\r\n }\r\n\r\n // Caso não haja erros, adicionará o item no carrinho\r\n if (!error) {\r\n if (this.mode == \"new\" || this.replay) {\r\n this.item.observacao = this.obs;\r\n this.cart.setItem(item);\r\n console.log(item, \"UUHUWHUIAHWEYBWAU\");\r\n this.utils.animate(\"shaking adding\", \"cart-icon\", \"class\", 900);\r\n this.toCallOrder();\r\n } else if (this.mode == \"edit\") this.cart.editItem(item);\r\n this.closeItemDetails();\r\n console.log(\"editado:\", item);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Cara, por algum motivo eu passo a função de abrir o carrinho, mas não lembro porque\r\n * @deprecated\r\n */\r\n openCartTrigger() {\r\n this.openCartFn();\r\n }\r\n\r\n /**\r\n * Ignora isso aqui kkkl\r\n * @ignore\r\n */\r\n itsTimeToEat() {\r\n this.utils.showToast({\r\n message: \"É hora do rango\",\r\n color: \"dark\",\r\n });\r\n }\r\n\r\n /**\r\n * Troca as quantidades de opções\r\n * @obs A lógica tá bem chatinha de entender, então cuidado na hora de mexer\r\n * @param selectedOption\r\n * @param optionType\r\n */\r\n toggleOption(selectedOption: ProductOption, optionType: ProductOptionType) {\r\n /**\r\n * Index da primeira opção encontrada com o ID do tipo de opção que ela pertence // TODO Verificar necessidade\r\n */\r\n const productOptionIndex = this.item.cartItemOpcoes.findIndex(\r\n (option) => option.produtosOpcaoTipoId == optionType.produtosOpcaoTipoId\r\n );\r\n /**\r\n * Opção com o mesmo id da opção que está sendo selecionada\r\n */\r\n const oldOption = this.item.cartItemOpcoes.find(\r\n (option) => option.produtosOpcaoId == selectedOption.produtosOpcaoId\r\n );\r\n /**\r\n * Primeira opção do tipo de opção da opção que está sendo selecionada\r\n */\r\n const firstOptionFromType = this.item.cartItemOpcoes[productOptionIndex];\r\n /**\r\n * Quantidade de opções selecionadas daquele tipo de opção\r\n */\r\n const qtd = this.getQtdSelected(optionType.produtosOpcaoTipoId);\r\n\r\n // ? Quantidade máxima de opção é igual a 1?\r\n if (optionType.qtdeMax == 1)\r\n if (productOptionIndex != -1)\r\n if (\r\n firstOptionFromType.produtosOpcaoId == selectedOption.produtosOpcaoId\r\n )\r\n if (!optionType.obrigatorio) {\r\n // SE a quantidade máxima é 1\r\n // ? Essa opção está no array de opções?\r\n // SE essa opção está no array\r\n // ? Essa opção que está no array, tem o mesmo ID da opção que está sendo selecionada?\r\n // SE essa opção tem o mesmo ID da opção que está sendo selecionada\r\n // ? Ela é obrigatória?\r\n // SE NÃO é obrigatória\r\n // A quantidade é zerada e o item é retirado do array\r\n selectedOption.quantidade = 0;\r\n this.item.cartItemOpcoes = this.item.cartItemOpcoes.filter(\r\n (option) =>\r\n option.produtosOpcaoId != selectedOption.produtosOpcaoId\r\n );\r\n } else;\r\n // Se for obrigatória, nada acontece\r\n else {\r\n // SE essa opção NÃO tem o mesmo ID da opção que está sendo selecionada\r\n // A opção selecionada recebe a quantidade 1 e é inserida no array de opções no lugar da que estava (está substituindo ela)\r\n firstOptionFromType.quantidade = 0;\r\n selectedOption.quantidade = 1;\r\n this.item.cartItemOpcoes[productOptionIndex] = selectedOption;\r\n }\r\n else {\r\n // SE essa opção não está no array de opções\r\n // Ela insere a opção nova no array com quantidade igual a 1\r\n selectedOption.quantidade = 1;\r\n this.item.cartItemOpcoes.push(selectedOption);\r\n }\r\n else if (productOptionIndex == -1) {\r\n // SE a quantidade máxima do tipo de opção NÃO é igual a 1\r\n // E(&&) ela NÃO está no array\r\n // Ela é adicionada\r\n selectedOption.quantidade = 1;\r\n this.item.cartItemOpcoes.push(selectedOption);\r\n } else if (oldOption?.produtosOpcaoId == selectedOption.produtosOpcaoId)\r\n // SE a quantidade máxima NÃO é igual a 1\r\n // E(&&) ela ESTÁ no array\r\n // E(&&) o id dela é igual a opção que está sendo selecionada\r\n // O array de opções rece um novo array mas sem ela (remove a opção do array)\r\n this.item.cartItemOpcoes = this.item.cartItemOpcoes.filter(\r\n (option) => option.produtosOpcaoId != selectedOption.produtosOpcaoId\r\n );\r\n else if (qtd < optionType.qtdeMax) {\r\n // SE a quantidade máxima NÃO é igual a 1\r\n // E(&&) ela ESTÁ no array\r\n // E(&&) o id dela NÃO é igual a opção que está sendo selecionada\r\n // Inserido é a opção dentro do array com quantidade 1\r\n selectedOption.quantidade = 1;\r\n this.item.cartItemOpcoes.push(selectedOption);\r\n }\r\n }\r\n\r\n addHalf(half: Half) {\r\n this.item.meiomeios.push(half);\r\n this.item.meiomeios[\r\n this.item.meiomeios.findIndex((item) => item.produtoId === half.produtoId)\r\n ].CartComplementosMeioMeios = [];\r\n this.item.meiomeios[\r\n this.item.meiomeios.findIndex((item) => item.produtoId === half.produtoId)\r\n ].complementos = [];\r\n this.item.meiomeios.forEach((item, index) => {\r\n this.item.meiomeios[index].valorRegular = item.valorVenda;\r\n });\r\n this.item.meiomeios.forEach((item, index) => {\r\n this.item.meiomeios[index].valorVendaComplemento = item.valorVenda;\r\n });\r\n this.item.meiomeios.forEach((item, index) => {\r\n this.item.meiomeios[index].Descricao = item.nome;\r\n });\r\n\r\n this.halfSubtotal();\r\n }\r\n\r\n removeHalf(half: Half) {\r\n const indexToRemove: number = this.item.meiomeios.findIndex(\r\n (h) => h.produtoId == half.produtoId\r\n );\r\n this.item.meiomeios = this.item.meiomeios.filter(\r\n (value, index) => index != indexToRemove\r\n );\r\n\r\n this.halfSubtotal();\r\n }\r\n\r\n halfSubtotal() {\r\n let complementsValue: number = 0;\r\n const maxHalf = this.item.meiomeios.reduce(function (prev, current) {\r\n return prev.valorVenda > current.valorVenda ? prev : current;\r\n });\r\n\r\n complementsValue = maxHalf.valorVenda;\r\n\r\n this.item.meiomeios.forEach((item) => {\r\n item.complementos.forEach((complemento) => {\r\n complementsValue = complementsValue + complemento.valor;\r\n });\r\n });\r\n\r\n const index = this.item.meiomeios.findIndex(\r\n (item) => item.produtoId === maxHalf.produtoId\r\n );\r\n\r\n this.item.meiomeios[index].valorVendaComplemento = complementsValue;\r\n }\r\n\r\n getHalfsQuantity(halfId?: number): number {\r\n return !halfId\r\n ? this.item.meiomeios.length\r\n : this.item.meiomeios.filter((half) => half.produtoId == halfId).length;\r\n }\r\n\r\n // Adicionar e remover produtos do item\r\n changeNumber(operation: \"add\" | \"remove\") {\r\n console.log(this.item.cartItemOpcoes);\r\n if(operation == \"add\") { \r\n if(this.item.cartItemOpcoes.length > 0) {\r\n this.item.cartItemOpcoes.forEach((i) => { \r\n i.quantidade += i.quantidade / this.item.number\r\n i.quantidade = Math.floor(i.quantidade)\r\n });\r\n } \r\n this.item.number++;\r\n } else if (operation == \"remove\") {\r\n if(this.item.cartItemOpcoes.length > 0) {\r\n this.item.cartItemOpcoes.forEach((i) => { \r\n i.quantidade -= i.quantidade / this.item.number\r\n i.quantidade = Math.ceil(i.quantidade)\r\n });\r\n } \r\n this.item.number--;\r\n } else {\r\n this.item.number = 1;\r\n } \r\n }\r\n\r\n // Checa se o complemento está incluído\r\n hasOption(optionId: string) {\r\n return (\r\n this.item.cartItemOpcoes.findIndex(\r\n (option) => option.produtosOpcaoId == optionId\r\n ) != -1\r\n );\r\n // return false\r\n }\r\n\r\n /**\r\n * Mostra a quantidade de opções selecionadas naquela categoria de opções\r\n * @param optionTypeId\r\n */\r\n getQtdSelected(optionTypeId: number) {\r\n let i = 0;\r\n this.item.cartItemOpcoes.forEach(\r\n (option) =>\r\n optionTypeId == option.produtosOpcaoTipoId &&\r\n (i += option.quantidade || 0)\r\n );\r\n return i;\r\n }\r\n\r\n /**\r\n * Mostra a quantidade da opção selecionada\r\n */\r\n getOptionQtd(optionId: string | number) {\r\n const optionsIndex = this.item.cartItemOpcoes.findIndex(\r\n (option) => option.produtosOpcaoId == optionId\r\n );\r\n const option = this.item.cartItemOpcoes[optionsIndex];\r\n return option?.quantidade || 0;\r\n }\r\n\r\n addOption(\r\n option: ProductOption,\r\n optionType: ProductOptionType,\r\n event?: MouseEvent\r\n ) {\r\n if (event) event.stopPropagation();\r\n const qtd = this.getQtdSelected(optionType.produtosOpcaoTipoId);\r\n if (qtd < optionType.qtdeMax) {\r\n const optionIndex = this.item.cartItemOpcoes.findIndex(\r\n (op) => op.produtosOpcaoId == option.produtosOpcaoId\r\n );\r\n if (optionIndex == -1)\r\n (option.quantidade = 1) && this.item.cartItemOpcoes.push(option);\r\n else this.item.cartItemOpcoes[optionIndex].quantidade++;\r\n }\r\n }\r\n\r\n removeOption(\r\n option: ProductOption,\r\n optionType: ProductOptionType,\r\n event?: MouseEvent\r\n ) {\r\n if (event) event.stopPropagation();\r\n if (option.quantidade > 1) option.quantidade--;\r\n else if (option.quantidade == 1) {\r\n option.quantidade--;\r\n this.item.cartItemOpcoes = this.item.cartItemOpcoes.filter(\r\n (op) => option.produtosOpcaoId != op.produtosOpcaoId\r\n );\r\n }\r\n }\r\n\r\n getHalfQuantityInItem(half: Half) {\r\n return this.item.meiomeios.filter((h) => h.produtoId == half.produtoId)\r\n .length;\r\n }\r\n\r\n callImageModal(img: string) {\r\n console.log(img);\r\n this.modalController\r\n .create({\r\n component: PictureViewerComponent,\r\n componentProps: {\r\n img,\r\n },\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n toCallOrder() {\r\n this.topbar.callOrder();\r\n if (this.config.modoApp != \"menu\") {\r\n let hideFooterTimeout = setTimeout(() => {\r\n this.utils.animate(\"shake-horizontal\", \"confirm-label\", \"class\", 3000);\r\n }, 1000);\r\n }\r\n }\r\n\r\n /**\r\n * Verifica se a parte requisitada, possui complementos obrigatórios. Se possuir, abre o modal direto com o alerta\r\n */\r\n verifyComplementsRequired(half: any) {\r\n this.productService.getProductsHalfComplements(half.produtoId).subscribe(\r\n (res: any) => {\r\n let index = res.results.findIndex((k) => k.obrigatorio === true);\r\n\r\n if (index !== -1) {\r\n this.toastCtrl\r\n .create({\r\n animated: true,\r\n duration: 2000,\r\n message: \"Um complemento obrigatório foi identificado\",\r\n })\r\n .then((toast) => toast.present());\r\n\r\n this.modalController\r\n .create({\r\n component: V2ItemComplementosmeiomeioPage,\r\n componentProps: {\r\n half,\r\n item: this.item,\r\n },\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n },\r\n (err: any) => {\r\n console.log(err, \"ERR\");\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Abre a tela de meio a meios\r\n */\r\n openMeioMeioComplements(half: any) {\r\n this.modalController\r\n .create({\r\n component: V2ItemComplementosmeiomeioPage,\r\n componentProps: {\r\n half,\r\n item: this.item,\r\n },\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => modal.present());\r\n }\r\n\r\n formatCurrency(value: number): string {\r\n return value.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n });\r\n }\r\n}\r\n","export default \".logo-wrapper {\\n --tab-height: 57px;\\n text-align: center;\\n}\\n.logo-wrapper img {\\n height: var(--tab-height);\\n}\\n.side-cart-menu {\\n height: 100vh;\\n}\\n.cart-itens-quantity-badge {\\n --badge-width: 25px;\\n border-radius: 50%;\\n height: var(--badge-width);\\n width: var(--badge-width);\\n text-align: center;\\n position: absolute;\\n top: 0;\\n right: calc(10px - (var(--badge-width)));\\n}\\n.cart-itens-quantity-badge span {\\n vertical-align: sub;\\n}\\nion-col {\\n text-align: center;\\n vertical-align: center;\\n}\\n.label-menu-text {\\n font-size: 14px;\\n}\\n@media (max-width: 599px) {\\n .label-menu-text {\\n font-size: 10px;\\n }\\n\\n #person_icon_login {\\n font-size: 11px;\\n margin-right: 3px;\\n margin-bottom: 3px;\\n }\\n}\\n@media (min-width: 600px) and (max-width: 1023px) {\\n .label-menu-text {\\n font-size: 12px;\\n }\\n\\n #person_icon_login {\\n font-size: 13px;\\n margin-right: 3px;\\n margin-bottom: 3px;\\n }\\n}\\n@media (min-width: 1024px) {\\n .label-menu-text {\\n font-size: 14px;\\n }\\n\\n #person_icon_login {\\n font-size: 15px;\\n margin-right: 3px;\\n margin-bottom: 3px;\\n }\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItdG9wLWJhci9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFxzaGFyZWRcXGNvbXBvbmVudHNcXHYyXFx2Mi10b3AtYmFyXFx2Mi10b3AtYmFyLmNvbXBvbmVudC5zY3NzIiwic3JjL2FwcC9zaGFyZWQvY29tcG9uZW50cy92Mi92Mi10b3AtYmFyL3YyLXRvcC1iYXIuY29tcG9uZW50LnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7RUFDRSxrQkFBQTtFQUNBLGtCQUFBO0FDQ0Y7QURBRTtFQUNFLHlCQUFBO0FDRUo7QURFQTtFQUNFLGFBQUE7QUNDRjtBREVBO0VBQ0UsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLDBCQUFBO0VBQ0EseUJBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLHdDQUFBO0FDQ0Y7QURDRTtFQUNFLG1CQUFBO0FDQ0o7QURHQTtFQUNFLGtCQUFBO0VBQ0Esc0JBQUE7QUNBRjtBREdBO0VBQ0UsZUFBQTtBQ0FGO0FER0E7RUFDRTtJQUNFLGVBQUE7RUNBRjs7RURHQTtJQUNFLGVBQUE7SUFDQSxpQkFBQTtJQUNBLGtCQUFBO0VDQUY7QUFDRjtBREdBO0VBQ0U7SUFDRSxlQUFBO0VDREY7O0VESUE7SUFDRSxlQUFBO0lBQ0EsaUJBQUE7SUFDQSxrQkFBQTtFQ0RGO0FBQ0Y7QURJQTtFQUNFO0lBQ0UsZUFBQTtFQ0ZGOztFREtBO0lBQ0UsZUFBQTtJQUNBLGlCQUFBO0lBQ0Esa0JBQUE7RUNGRjtBQUNGIiwiZmlsZSI6InNyYy9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdjIvdjItdG9wLWJhci92Mi10b3AtYmFyLmNvbXBvbmVudC5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmxvZ28td3JhcHBlciB7XHJcbiAgLS10YWItaGVpZ2h0OiA1N3B4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBpbWcge1xyXG4gICAgaGVpZ2h0OiB2YXIoLS10YWItaGVpZ2h0KTtcclxuICB9XHJcbn1cclxuXHJcbi5zaWRlLWNhcnQtbWVudSB7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxufVxyXG5cclxuLmNhcnQtaXRlbnMtcXVhbnRpdHktYmFkZ2Uge1xyXG4gIC0tYmFkZ2Utd2lkdGg6IDI1cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gIGhlaWdodDogdmFyKC0tYmFkZ2Utd2lkdGgpO1xyXG4gIHdpZHRoOiB2YXIoLS1iYWRnZS13aWR0aCk7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDA7XHJcbiAgcmlnaHQ6IGNhbGMoMTBweCAtICh2YXIoLS1iYWRnZS13aWR0aCkpKTtcclxuXHJcbiAgc3BhbiB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogc3ViO1xyXG4gIH1cclxufVxyXG5cclxuaW9uLWNvbCB7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5sYWJlbC1tZW51LXRleHQge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxufVxyXG5cclxuQG1lZGlhIChtYXgtd2lkdGg6IDU5OXB4KSB7XHJcbiAgLmxhYmVsLW1lbnUtdGV4dCB7XHJcbiAgICBmb250LXNpemU6IDEwcHg7XHJcbiAgfVxyXG5cclxuICAjcGVyc29uX2ljb25fbG9naW57XHJcbiAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDNweDtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSAobWluLXdpZHRoOiA2MDBweCkgYW5kIChtYXgtd2lkdGg6IDEwMjNweCkge1xyXG4gIC5sYWJlbC1tZW51LXRleHQge1xyXG4gICAgZm9udC1zaXplOiAxMnB4O1xyXG4gIH1cclxuXHJcbiAgI3BlcnNvbl9pY29uX2xvZ2lue1xyXG4gICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAzcHg7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XHJcbiAgfVxyXG59XHJcblxyXG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XHJcbiAgLmxhYmVsLW1lbnUtdGV4dCB7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgfVxyXG5cclxuICAjcGVyc29uX2ljb25fbG9naW57XHJcbiAgICBmb250LXNpemU6IDE1cHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDNweDtcclxuICB9XHJcbn1cclxuIiwiLmxvZ28td3JhcHBlciB7XG4gIC0tdGFiLWhlaWdodDogNTdweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLmxvZ28td3JhcHBlciBpbWcge1xuICBoZWlnaHQ6IHZhcigtLXRhYi1oZWlnaHQpO1xufVxuXG4uc2lkZS1jYXJ0LW1lbnUge1xuICBoZWlnaHQ6IDEwMHZoO1xufVxuXG4uY2FydC1pdGVucy1xdWFudGl0eS1iYWRnZSB7XG4gIC0tYmFkZ2Utd2lkdGg6IDI1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgaGVpZ2h0OiB2YXIoLS1iYWRnZS13aWR0aCk7XG4gIHdpZHRoOiB2YXIoLS1iYWRnZS13aWR0aCk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDA7XG4gIHJpZ2h0OiBjYWxjKDEwcHggLSAodmFyKC0tYmFkZ2Utd2lkdGgpKSk7XG59XG4uY2FydC1pdGVucy1xdWFudGl0eS1iYWRnZSBzcGFuIHtcbiAgdmVydGljYWwtYWxpZ246IHN1Yjtcbn1cblxuaW9uLWNvbCB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdmVydGljYWwtYWxpZ246IGNlbnRlcjtcbn1cblxuLmxhYmVsLW1lbnUtdGV4dCB7XG4gIGZvbnQtc2l6ZTogMTRweDtcbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU5OXB4KSB7XG4gIC5sYWJlbC1tZW51LXRleHQge1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgfVxuXG4gICNwZXJzb25faWNvbl9sb2dpbiB7XG4gICAgZm9udC1zaXplOiAxMXB4O1xuICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDYwMHB4KSBhbmQgKG1heC13aWR0aDogMTAyM3B4KSB7XG4gIC5sYWJlbC1tZW51LXRleHQge1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgfVxuXG4gICNwZXJzb25faWNvbl9sb2dpbiB7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIG1hcmdpbi1yaWdodDogM3B4O1xuICAgIG1hcmdpbi1ib3R0b206IDNweDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubGFiZWwtbWVudS10ZXh0IHtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gIH1cblxuICAjcGVyc29uX2ljb25fbG9naW4ge1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgICBtYXJnaW4tYm90dG9tOiAzcHg7XG4gIH1cbn0iXX0= */\";","import { UsergestorService } from \"./../../../../services/usergestor.service\";\r\nimport { Component, EventEmitter, Injectable, Input, OnInit, Output } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { AlertController, IonInput, IonMenu, ModalController } from \"@ionic/angular\";\r\nimport { Restaurant } from \"../../../../models/restaurant.model\";\r\nimport { CameraService } from \"../../../../services/camera.service\";\r\nimport { RestaurantService } from \"../../../../services/restaurant.service\";\r\nimport { GalleryService } from \"../../../../services/providers/gallery.service\";\r\nimport { AuthService } from \"../../../../shared/auth.service\";\r\nimport { environment } from \"../../../../../environments/environment\";\r\nimport { Utils } from \"../../../../shared/util\";\r\nimport { ConfigurationService } from \"../../../../services/configuration.service\";\r\nimport { CartService } from \"../../../../services/cart.service\";\r\nimport { flatMap } from \"rxjs/operators\";\r\nimport { SideCartComponent } from \"../side-cart/side-cart.component\";\r\nimport { ToastaddService } from \"src/app/services/toastadd.service\";\r\nimport { SigninPage } from \"src/app/v2/account/signin/signin.page\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"app-v2-top-bar\",\r\n templateUrl: \"./v2-top-bar.component.html\",\r\n styleUrls: [\"./v2-top-bar.component.scss\"],\r\n})\r\n@Injectable()\r\nexport class V2TopBarComponent implements OnInit {\r\n @Input(\"options\") public options: V2TopBarOptions;\r\n @Input(\"mode\") mode: string = \"home\";\r\n @Output(\"changeTable\") changeTable: EventEmitter = new EventEmitter();\r\n rest$: Observable;\r\n tableNumber$: Observable;\r\n appMode$: Observable;\r\n account$: Observable;\r\n ficha$: Observable;\r\n\r\n constructor(private alertCtrl: AlertController, private auth: AuthService, private cameraService: CameraService, private cart: CartService, public config: ConfigurationService, private gallery: GalleryService, private restService: RestaurantService, private router: Router, private utils: Utils, private toastAdd: ToastaddService, private modalController: ModalController, private userGestorController: UsergestorService, private location: Location) {}\r\n\r\n /* Remover o comentário do bloco abaixo quando for gerar APK \r\n ngOnInit() {\r\n this.config\r\n .configV2({\r\n cnpj: \"32759021000181\", //CPNJ DO CLIENTE, PEGAR NO 113;\r\n mode: \"qrcode\",\r\n reference: 1,\r\n })\r\n .subscribe((result) => {\r\n this.config.initServices().subscribe((res) => {\r\n this.rest$ = this.restService.getRest();\r\n this.tableNumber$ = this.auth.getTableV2();\r\n this.appMode$ = this.config.getMode();\r\n this.ficha$ = this.cart.getFichaV2();\r\n });\r\n });\r\n */\r\n\r\n /* comentar as 5 linhas abaixo quando for gerar o APK */\r\n ngOnInit() {\r\n this.rest$ = this.restService.getRest();\r\n this.tableNumber$ = this.auth.getTableV2();\r\n this.appMode$ = this.config.getMode();\r\n this.ficha$ = this.cart.getFichaV2();\r\n\r\n let mesaId = \"\";\r\n this.tableNumber$.subscribe((event) => (mesaId = event));\r\n if (!mesaId) {\r\n this.router.navigate([environment.routePaths.v2.version, environment.routePaths.v2.scanner]);\r\n }\r\n }\r\n\r\n callReturn() {\r\n this.location.back();\r\n }\r\n\r\n callOrder() {\r\n const ionMenu: IonMenu = document.getElementById(\"side-cart\") as any;\r\n ionMenu?.open?.();\r\n\r\n if (this.config.isTablet) {\r\n if (this.config.modoApp != \"menu\") {\r\n if (this.cart.getTotalItems() > 0) {\r\n this.toastAdd.displayToastAdd(\"Existem pedidos não enviados. Enviar agora?\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n authenticationHandler() {\r\n const userGestor = this.userGestorController.getUser();\r\n\r\n if (userGestor === null) {\r\n this.router.navigate([\"/v2/conta/login\"]);\r\n } else {\r\n this.router.navigate([\"/v2/conta/detalhes\"]);\r\n }\r\n }\r\n\r\n authenticationState(): string {\r\n let LABEL = \"\";\r\n const userGestor = this.userGestorController.getUser();\r\n\r\n if (userGestor === null) {\r\n LABEL = \"Login\";\r\n } else {\r\n LABEL = userGestor.nome;\r\n }\r\n return LABEL;\r\n }\r\n\r\n goToOrders() {\r\n this.router.navigate([\"/v2/historico\"]);\r\n }\r\n\r\n takePicture() {\r\n this.cameraService.takePicture().subscribe({\r\n next: (img64) => {\r\n if (img64) this.gallery.include(img64);\r\n },\r\n error: (err) =>\r\n this.alertCtrl\r\n .create({\r\n message: err,\r\n })\r\n .then((alert) => alert.present()),\r\n });\r\n }\r\n\r\n confirmTable() {\r\n const restPwdInput: IonInput = document.getElementById(\"rest-pwd-table-change-input\") as any;\r\n const tableNumberInput: IonInput = document.getElementById(\"table-number-table-change-input\") as any;\r\n\r\n const rest$ = this.restService.getRest();\r\n rest$.subscribe({\r\n next: (rest) => {\r\n if (rest.senhaMaster === restPwdInput.value) {\r\n this.auth.changeTable(tableNumberInput.value as number);\r\n this.router.navigate([environment.routePaths.v2.version, environment.routePaths.v2.home]);\r\n } else\r\n this.utils.showAlert({\r\n message: \"Senha incorreta\",\r\n });\r\n },\r\n });\r\n }\r\n\r\n totalItensFromCart() {\r\n return this.cart.getTotalItems();\r\n }\r\n}\r\nexport interface V2TopBarOptions {\r\n backButtonUrl?: string;\r\n showOrderButton?: boolean;\r\n showChangeTableButton?: boolean;\r\n imageUrl?: string;\r\n color?: string;\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from \"@angular/router\";\r\nimport { retry, tap } from \"rxjs/operators\";\r\n\r\nimport { RestaurantService } from \"../../services/restaurant.service\";\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { environment } from \"../../../environments/environment\";\r\n\r\n/**\r\n * Caso o restaurante não esteja operando, ele redirecionará para página de restaurante fechado\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class OperationGuard implements CanActivate {\r\n \r\n constructor(\r\n private restaurantService: RestaurantService,\r\n private router: Router,\r\n private storage: StorageService,\r\n ) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const cnpj: string = this.storage.get(environment.storage.cnpj)\r\n\r\n const promiseRest = this.restaurantService.getByCnpj(cnpj).pipe(retry(2), tap(rest => this.restaurantService.setRestaurant(rest))).toPromise()\r\n return promiseRest.then(rest => rest.isOperation || this.router.createUrlTree([environment.routePaths.closed]))\r\n .catch(error => Promise.resolve(this.router.createUrlTree([environment.routePaths.sorry])))\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from \"@angular/router\";\r\n\r\nimport { StorageService } from \"../../services/storage.service\";\r\nimport { environment } from \"../../../environments/environment\";\r\n\r\n/**\r\n * Se não houver cnpj cadastrado, ele abrirá a página de scanner para que seja redirecionado à uma rota\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ScannerGuard implements CanActivate {\r\n\r\n constructor(\r\n private router: Router,\r\n private storage: StorageService\r\n ) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n if(state.url.includes('home')) {\r\n const cnpj: string = this.storage.get(environment.storage.cnpj)\r\n return !!cnpj || this.router.createUrlTree([environment.routePaths.scanner])\r\n } else return !!route.params.cnpj || this.router.createUrlTree([environment.routePaths.scanner])\r\n }\r\n}","import { DefaultUrlSerializer } from '@angular/router';\r\n\r\nexport class LowerCaseUrlSerializer extends DefaultUrlSerializer {\r\n parse(url: string) {\r\n return super.parse(url.toLowerCase())\r\n }\r\n}","// Funções úteis no desenvolvimento\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ToastController, AlertController, IonInput, LoadingController } from '@ionic/angular';\r\nimport { BarcodeScanner, BarcodeScanResult } from '@ionic-native/barcode-scanner/ngx';\r\n\r\nimport { environment } from '../../environments/environment';\r\nimport { Localizacao } from '../models/address/localizacao.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class Utils {\r\n private spinner: HTMLIonLoadingElement\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private barcodeScn: BarcodeScanner,\r\n private http: HttpClient,\r\n private loadingCtrl: LoadingController,\r\n private toastCtrl: ToastController\r\n ) { }\r\n\r\n /**\r\n * Chama a câmera para escanear um QRCode\r\n */\r\n scanQr(): Promise {\r\n // const barcodeScanner = new BarcodeScanner()\r\n return this.barcodeScn.scan({\r\n showTorchButton: true\r\n })\r\n }\r\n\r\n /**\r\n * Separa uma string em vários pedaços\r\n * @param str\r\n * @param size Tamanho de cada pedaço\r\n */\r\n chunkSubstr(str: string, size: number) {\r\n const numChunks = Math.ceil(str.length / size)\r\n const chunks = new Array(numChunks)\r\n \r\n for (let i = 0, o = 0; i < numChunks; ++i, o += size) {\r\n chunks[i] = str.substr(o, size)\r\n }\r\n return chunks\r\n }\r\n\r\n /**\r\n * Anima um elemmento no DOM\r\n * @param animateName\r\n * @param element\r\n * @param getBy Seleção por classe ou ID - 'id' | 'class'\r\n * @param timer Tempo de duração da animação\r\n */\r\n animate(animateName: string, element: string, getBy: 'id' | 'class' = 'id', timer: number = 1000) {\r\n const elements = getBy == 'id' ? [document.getElementById(element)] : document.getElementsByClassName(element)\r\n for (const element of elements as any) {\r\n element.className += ' ' + animateName;\r\n if(timer => 0) {\r\n setTimeout(() => {\r\n element.className = element.className.replace(' ' + animateName, '').replace(animateName, '')\r\n }, timer)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Converte um valor para o tipo passado\r\n * @param value \r\n * @param mode Conversão\r\n */\r\n convert = (value: any, mode: 'numberToPriceBr'|'numberToPriceBrEditing'|'cardNumber'|'cardNumberHide'|'numberToCpf'|'numberToCnpj'|'onlyNumber'|'phoneNumber'|'cardExpDate'|'cardCvv') => {\r\n if(!value) {\r\n return value\r\n }\r\n\r\n let result;\r\n switch(mode) {\r\n case 'numberToPriceBr':\r\n // const valNtpbr = Number((value + '').replace(/[^0-9.]/gm, ''))\r\n // result = valNtpbr.toFixed(2).replace('.', ',')\r\n const valNtpbr = value + '';\r\n result = (valNtpbr+(valNtpbr.includes('.') ? '' : ',')).replace('.', ',');\r\n let lengthAfterComma: number = result.substr(result.indexOf(',')).length;\r\n while(lengthAfterComma < 3) {\r\n result += '0';\r\n lengthAfterComma++;\r\n }\r\n break;\r\n case 'numberToPriceBrEditing':\r\n const valsa = (value + '').replace(/[^0-9]/gm, '')\r\n result = valsa.length == 2 ? '0, ' + valsa : (valsa.length == 1 ? '0, 0' + valsa : [...(Number(valsa.substr(0, valsa.length - 2)) + ''), ', ', ...valsa.substr(valsa.length - 2)].join(''))\r\n break;\r\n case 'cardNumber':\r\n const valCn = (value + '').replace(/[^0-9]/gm, '');\r\n result = this.chunkSubstr(valCn.substr(0, 16), 4).join(' ')\r\n break;\r\n case 'cardNumberHide':\r\n const valCnh = '********'+(value+'').substr((value+'').length - 4);\r\n result = this.chunkSubstr(valCnh, 4).join(' ')\r\n break;\r\n case 'numberToCpf':\r\n const valNtc = (value + '').replace(/[^0-9]/gm, '')\r\n // result = this.chunkSubstr(valNtc.substr(0, valNtc.length - 2), 3).join('.') + '-' + valNtc.substr(valNtc.length - 2)\r\n result = valNtc.length < 4 ? valNtc : valNtc.length < 10 ? this.chunkSubstr(valNtc.substr(0, valNtc.length), 3).join('.') : this.chunkSubstr(valNtc.substr(0, 9), 3).join('.') + '-' + valNtc.substr(9, 2)\r\n break;\r\n case 'cardExpDate':\r\n const valExpDate = (value+'').replace(/[^0-9]/gm, '')\r\n result = valExpDate.length > 2 ? valExpDate.substr(0, 2) + '/' + valExpDate.substr(2, 2) : valExpDate\r\n break;\r\n case 'cardCvv':\r\n const valCvv = (value+'').replace(/[^0-9]/gm, '')\r\n result = valCvv.substr(0, 3)\r\n break;\r\n case 'numberToCnpj':\r\n const valueNtcj = (value + '').replace(/[^0-9]/gm, '')\r\n result = valueNtcj.substr(0, 2) + (valueNtcj.length > 2 ? '.' + valueNtcj.substr(2, 3) + (valueNtcj.length > 5 ? '.' + valueNtcj.substr(5, 3) + (valueNtcj.length > 8 ? '/' + valueNtcj.substr(8, 4) + (valueNtcj.length > 12 ? '-' + valueNtcj.substr(12, 2): ''): ''): '') : '');\r\n break;\r\n case 'onlyNumber':\r\n const valueOn = (value + '').replace(/[^0-9]/gm, '');\r\n result = valueOn;\r\n break;\r\n case 'phoneNumber':\r\n const valuePn = (value + '').replace(/[^0-9]/gm, '');\r\n result = valuePn.length > 0 ? valuePn.length < 11 ? '(' + valuePn.substr(0, 2) + (valuePn.length > 2 ? ') ' + valuePn.substr(2, 4) + (valuePn.length > 6 ? '-' + valuePn.substr(6, 4) : '') : '') : '(' + valuePn.substr(0, 2) + (valuePn.length > 2 ? ') ' + valuePn.substr(2, 1) + (valuePn.length > 3 ? ' ' + valuePn.substr(3, 4) + (valuePn.length > 6 ? '-' + valuePn.substr(7, 4): '') : '') : '') : '';\r\n break;\r\n default:\r\n result = value;\r\n break;\r\n }\r\n return result\r\n }\r\n\r\n /**\r\n * Converte uma string ou número para um cpf formatado\r\n * @param value \r\n */\r\n numberToCpf(value: string|number) {\r\n const phone = (value + '').replace(/[^0-9]/gm, '')\r\n const result = phone.length < 4 ?\r\n phone\r\n : phone.length < 10 ?\r\n this.chunkSubstr(phone.substr(0, phone.length), 3).join('.')\r\n : this.chunkSubstr(phone.substr(0, 9), 3).join('.') + '-' + phone.substr(9, 2)\r\n return result\r\n }\r\n\r\n /**\r\n * Converte uma string ou number para um número de telefone formatado (Sem o código do país)\r\n * @param value \r\n */\r\n phoneNumber(value: string|number) {\r\n const valuePn = (value + '').replace(/[^0-9]/gm, '');\r\n const result = valuePn.length > 0 ?\r\n valuePn.length < 11 ?\r\n '(' + valuePn.substr(0, 2) + (valuePn.length > 2 ?\r\n ') ' + valuePn.substr(2, 4) + (valuePn.length > 6 ?\r\n '-' + valuePn.substr(6, 4)\r\n : '')\r\n : '')\r\n : '(' + valuePn.substr(0, 2) + (valuePn.length > 2 ?\r\n ') ' + valuePn.substr(2, 1) + (valuePn.length > 3 ?\r\n ' ' + valuePn.substr(3, 4) + (valuePn.length > 6 ?\r\n '-' + valuePn.substr(7, 4)\r\n : '')\r\n : '')\r\n : '')\r\n : '';\r\n return result\r\n }\r\n\r\n /**\r\n * Converte uma string ou number pra um cep formatado\r\n * @param cep \r\n */\r\n numberToCep(cep: string|number): string {\r\n const value = (cep + '').replace(/[^0-9]/gm, '')\r\n const result = value.length < 6 ? value : value.substr(0, 5) + '-' + value.substr(5, 3)\r\n return result\r\n }\r\n\r\n /**\r\n * Converte uma string ou number pra um preço em moeda brasileira. Não volta acompanhado de `R$`\r\n * @param value \r\n */\r\n numberToPriceBr(value: string|number): string {\r\n const price = value + ''\r\n let result = (price+(price.includes('.') ? '' : ',')).replace('.', ',')\r\n let lengthAfterComma: number = result.substr(result.indexOf(',')).length\r\n while(lengthAfterComma < 3) {\r\n result += '0'\r\n lengthAfterComma++\r\n }\r\n return result\r\n }\r\n\r\n /**\r\n * Instancia um toast simples\r\n * @param options \r\n */\r\n showToast(options: { message?: string, duration?: number, color?: string, position?: 'bottom'|'middle'|'top' } | string) {\r\n const toast = this.toastCtrl.create({\r\n message: typeof options == 'string' ? options : options.message,\r\n duration: (options as any).duration || 2000,\r\n color: (options as any).color || 'primary',\r\n position: (options as any).position || 'bottom'\r\n })\r\n toast.then(t => t.present())\r\n return toast\r\n }\r\n\r\n /**\r\n * Instancia um alert simples\r\n * @param options \r\n */\r\n showAlert(options: { message?: string, header?: string, subheader?: string, buttons?: { text: string, handler?: any }[] }) {\r\n const alert = this.alertCtrl.create({\r\n message: options.message,\r\n header: options.header,\r\n subHeader: options.subheader,\r\n buttons: options.buttons\r\n })\r\n alert.then(a => a.present())\r\n return alert\r\n }\r\n\r\n maskInput(element: IonInput, mode) {\r\n if(mode) {\r\n if(mode !='waiterPassword') {\r\n element.value = this.convert(element.value, mode);\r\n } else {\r\n element.value = this.convert(element.value, 'onlyNumber').substr(0, 4);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Dependendo do boolean passado, mostra ou esconde o spinner na tela\r\n */\r\n setStateLoading(load: boolean) {\r\n if(load) {\r\n this.loadingCtrl.create({\r\n translucent: true,\r\n keyboardClose: true,\r\n spinner: null,\r\n message: '',\r\n }).then(spinner => {\r\n this.spinner = spinner\r\n this.spinner.present()\r\n })\r\n } else setTimeout(() => this.spinner.dismiss(), 1000)\r\n }\r\n\r\n /**\r\n * Retorna se a string ou number de cpf passado é válido\r\n * @param cpfValue \r\n */\r\n cpfIsValid(cpfValue: string|number): boolean {\r\n const cpf: string = (cpfValue + '').replace(/[^0-9]/gm, '')\r\n if(cpf.length != 11) return false;\r\n\r\n const cpfNumbersString: string[] = cpf.split('')\r\n const cpfNumbers: number[] = cpfNumbersString.map(number => Number(number))\r\n\r\n // dígito X\r\n const x = cpfNumbers[9]\r\n const y = cpfNumbers[10]\r\n\r\n const a = cpfNumbers[0] * 10\r\n const b = cpfNumbers[1] * 9\r\n const c = cpfNumbers[2] * 8\r\n const d = cpfNumbers[3] * 7\r\n const e = cpfNumbers[4] * 6\r\n const f = cpfNumbers[5] * 5\r\n const g = cpfNumbers[6] * 4\r\n const h = cpfNumbers[7] * 3\r\n const i = cpfNumbers[8] * 2\r\n\r\n const somaX = a + b + c + d + e + f + g + h + i\r\n const rX = somaX % 11\r\n\r\n // dígito Y\r\n const x2 = cpfNumbers[9] * 2\r\n const y2 = cpfNumbers[10]\r\n\r\n const a2 = cpfNumbers[0] * 11\r\n const b2 = cpfNumbers[1] * 10\r\n const c2 = cpfNumbers[2] * 9\r\n const d2 = cpfNumbers[3] * 8\r\n const e2 = cpfNumbers[4] * 7\r\n const f2 = cpfNumbers[5] * 6\r\n const g2 = cpfNumbers[6] * 5\r\n const h2 = cpfNumbers[7] * 4\r\n const i2 = cpfNumbers[8] * 3\r\n\r\n const somaY = x2 + a2 + b2 + c2 + d2 + e2 + f2 + g2 + h2 + i2\r\n const rY = somaY % 11\r\n\r\n // cálculo de verificação dos dígitos\r\n let xCorreto: number\r\n let yCorreto: number\r\n\r\n if(rX == 0 || rX == 1) xCorreto = 0\r\n else xCorreto = 11 - rX;\r\n\r\n if(rY == 0 || rY == 1) yCorreto = 0\r\n else yCorreto = 11 - rY;\r\n\r\n const cpfCorreto = [(a2/11), (b2/10), (c2/9), (d2/8), (e2/7), (f2/6), (g2/5), (h2/4), (i2/3), xCorreto, yCorreto].join('')\r\n\r\n return cpf == cpfCorreto\r\n }\r\n\r\n /**\r\n * Checa se o elemento passado está visível na tela\r\n */\r\n isOnScreen(element: HTMLElement, correction?: { x: number, y: number }): boolean {\r\n const rect = element.getBoundingClientRect()\r\n\r\n return (\r\n rect.top >= -(((rect.height - (correction?.y || 0))/100)*80) &&\r\n rect.left >= 0 &&\r\n rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.right <= (window.innerWidth || document.documentElement.clientWidth)\r\n )\r\n }\r\n\r\n // isOnElement(element: HTMLElement) {\r\n // return (\r\n // element.offsetTop > element.parentElement.offsetHeight\r\n // )\r\n // }\r\n\r\n /**\r\n * Retorna a string passada com somente a primeira letra maiúscula\r\n * @param value \r\n */\r\n firstCharUpperOnly(value: string): string {\r\n const str = value.trim()\r\n return str.trim().length > 0 ? str[0].toUpperCase() + str.substr(1).toLowerCase() : str.toUpperCase()\r\n }\r\n\r\n /**\r\n * Pesquisa o endereço do cep na api\r\n */\r\n askCep(value: string|number): Observable {\r\n const cep = (value + '').replace(/[^0-9]/gm, '')\r\n return this.http.get(`${environment.SERVERHOST}/localizacao/viacep/${cep}`)\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\nimport { ItemCart } from '../interfaces/itemCart.interface';\r\nimport { Localizacao } from '../models/address/localizacao.model';\r\nimport { Utils } from './util';\r\n\r\n@Injectable({\r\n providedIn: \"root\"\r\n})\r\nexport class WhatsMsgService {\r\n\r\n constructor(\r\n private utils: Utils,\r\n ) { }\r\n\r\n /**\r\n * Retorna a mensagem formatada que será enviada via whatsapp - rota `zap`\r\n */\r\n buildMsg(parameters: {\r\n restaurantName: string,\r\n userName: string,\r\n items: ItemCart[],\r\n pedidoTotal?: number,\r\n userFone: number,\r\n mode: 'user'|'table'\r\n aquisition: 'Retirada'|'Entrega'| '',\r\n endereco: Localizacao,\r\n pagamento: number,\r\n troco: number,\r\n observation: string,\r\n totalValue: number,\r\n tableNumber?: number|string\r\n }): string {\r\n const date = new Date()\r\n let msg = '*' + parameters.restaurantName.toUpperCase() + '*'\r\n + '%0a'\r\n + '*' + `${date.getDate()}/${date.getMonth() + 1}/${date.getFullYear()}` + ' | ' + `${date.getHours().toLocaleString()}:${date.getMinutes().toLocaleString()}` + '*'\r\n + '%0a'\r\n + '%0a'\r\n\r\n + 'Nome: *' + parameters.userName + '*'\r\n + (parameters.tableNumber ? /*('%0aMesa: *' + parameters.tableNumber + '*')*/'' : '')\r\n + ''\r\n + '%0a'\r\n + (parameters.userFone ? this.utils.phoneNumber(parameters.userFone) : '')\r\n + '%0a'\r\n + '~-----------------------------------------------~'\r\n + '%0a'\r\n + '%0a'\r\n parameters.items.forEach(item => {\r\n let halfStr: string = ''\r\n item.meiomeios.forEach(half => {\r\n halfStr += (`_• 1 / ${item.produto.numberMeiomeio} ${half.nome}_%0a`)\r\n })\r\n\r\n let optStr: string = ''\r\n item.cartItemOpcoes.forEach(option => {\r\n optStr += (`_•${option.nome} x${option.quantidade}_%0a`)\r\n })\r\n optStr = optStr.substr(0, optStr.length - 3)\r\n console.log(item)\r\n msg += '*' + item.produto.nome.trim() + '* ```x' + item.number + '```' +\r\n '%0a' +\r\n (item.meiomeios.length > 0 ? ('*Meio a meios* %0a' + halfStr) : '') +\r\n '%0a' +\r\n '%0a' +\r\n optStr +\r\n '%0a ' +\r\n (item?.observacao || '') +\r\n '%0a' +\r\n '%0a' +\r\n 'R$ ' + this.utils.numberToPriceBr(ItemCart.calcTotalValue(item)) +\r\n '%0a' +\r\n '~-----------------------------------------------~' +\r\n '%0a'\r\n })\r\n msg += '%0a'\r\n + (parameters.observation ? ('*Observação*: ' + parameters.observation) : '')\r\n + '%0a'\r\n + '%0a'\r\n + '*TOTAL: R$ ' + this.utils.numberToPriceBr(parameters.pedidoTotal) + '*'\r\n + '%0a'\r\n + '%0a'\r\n + '~-----------------------------------------------~'\r\n + '%0a'\r\n + '%0a'\r\n + (parameters.aquisition ? ('*' + parameters.aquisition + '*') : '')\r\n + '%0a'\r\n + (parameters.aquisition ? (parameters.aquisition == 'Entrega' ?\r\n ('%0a' + parameters.endereco.logradouro + ', ' + parameters.endereco.numero + ' - ' + parameters.endereco.bairro\r\n + '%0a' + parameters.endereco.localidade + '/' + parameters.endereco.uf + ' - '\r\n + (parameters.endereco.cep ? this.utils.numberToCep(parameters.endereco.cep) : '')\r\n + '%0a' + (parameters.endereco.complemento ? 'Complt: '+parameters.endereco.complemento : ''))\r\n : '') : '')\r\n + '%0a'\r\n + 'Forma de pagamento: ' + (parameters.pagamento == 1 ? 'Dinheiro' : 'Cartão')\r\n + '%0a'\r\n // + 'Taxa de entrega: ' + parameters.deliveryFee\r\n + '%0a'\r\n + (parameters.troco ? ('Troco: R$ ' + this.utils.numberToPriceBr((parameters.troco - parameters.totalValue).toFixed(2))) : '')\r\n\r\n return msg\r\n }\r\n}","export default \"ion-content {\\n --background: linear-gradient(0deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.1)),\\n url(\\\"/assets/v2/ZMmesav.jpg\\\") no-repeat center center / cover;\\n}\\nion-content .cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\nion-content #logoV {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #logoV img {\\n margin-top: 10px;\\n width: 30%;\\n}\\nion-content #logoH {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #logoH img {\\n width: 15%;\\n}\\nion-content .wrapper {\\n position: absolute;\\n top: 35%;\\n left: 4%;\\n right: 4%;\\n}\\nion-content .wrapper .form-wrapper {\\n box-shadow: none;\\n border-radius: 20px;\\n padding: 15px 10px;\\n}\\nion-content .wrapper .form-wrapper ion-item {\\n --background: #efefef;\\n --padding-start: 10px;\\n --highlight-height: 0;\\n --border-width: 0;\\n --padding-top: 0;\\n --min-height: 40px;\\n margin-bottom: 15px;\\n border-radius: 5px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-icon {\\n font-size: 18px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-input {\\n margin-left: 10px;\\n font-size: 14px;\\n color: black;\\n font-weight: bold;\\n text-align: center;\\n justify-content: center;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-button {\\n margin-top: 25px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-label {\\n color: aliceblue;\\n text-align: center;\\n display: flex;\\n justify-content: center;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL2NvbWFuZGEtc2Nhbi9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFx2MlxcZmluaXNoaW5nLXBhZ2VzXFxjb21hbmRhLXNjYW5cXGNvbWFuZGEtc2Nhbi5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy9jb21hbmRhLXNjYW4vY29tYW5kYS1zY2FuLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJOytEQUFBO0FDRUo7QURDSTtFQUNJLGVBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLFVBQUE7QUNDUjtBREVJO0VBQ0ksYUFBQTtFQUNBLHVCQUFBO0FDQVI7QURFUTtFQUNJLGdCQUFBO0VBQ0EsVUFBQTtBQ0FaO0FESUk7RUFDSSxhQUFBO0VBQ0EsdUJBQUE7QUNGUjtBRElRO0VBQ0ksVUFBQTtBQ0ZaO0FETUk7RUFDSSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtBQ0pSO0FETVE7RUFDSSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUNKWjtBRE1ZO0VBQ0kscUJBQUE7RUFDQSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ0poQjtBRE1nQjtFQUNJLGVBQUE7QUNKcEI7QURPZ0I7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLHVCQUFBO0FDTHBCO0FEUWdCO0VBQ0ksZ0JBQUE7QUNOcEI7QURTZ0I7RUFDSSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0FDUHBCIiwiZmlsZSI6InNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL2NvbWFuZGEtc2Nhbi9jb21hbmRhLXNjYW4ucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaW9uLWNvbnRlbnR7XHJcbiAgICAtLWJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC4xKSksXHJcbiAgICB1cmwoXCIvYXNzZXRzL3YyL1pNbWVzYXYuanBnXCIpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyIC8gY292ZXI7XHJcblxyXG4gICAgLmNhbmNlbC1hY3Rpb24tYnRuIHtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgei1pbmRleDogMTtcclxuICAgIH1cclxuXHJcbiAgICAjbG9nb1Yge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICAgICAgd2lkdGg6IDMwJTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgI2xvZ29IIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxNSU7XHJcbiAgICAgICAgfVxyXG4gICAgfSAgICBcclxuICAgXHJcbiAgICAud3JhcHBlciB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogMzUlO1xyXG4gICAgICAgIGxlZnQ6IDQlO1xyXG4gICAgICAgIHJpZ2h0OiA0JTtcclxuXHJcbiAgICAgICAgLmZvcm0td3JhcHBlciB7XHJcbiAgICAgICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDE1cHggMTBweDtcclxuXHJcbiAgICAgICAgICAgIGlvbi1pdGVtIHtcclxuICAgICAgICAgICAgICAgIC0tYmFja2dyb3VuZDogI2VmZWZlZjtcclxuICAgICAgICAgICAgICAgIC0tcGFkZGluZy1zdGFydDogMTBweDtcclxuICAgICAgICAgICAgICAgIC0taGlnaGxpZ2h0LWhlaWdodDogMDtcclxuICAgICAgICAgICAgICAgIC0tYm9yZGVyLXdpZHRoOiAwO1xyXG4gICAgICAgICAgICAgICAgLS1wYWRkaW5nLXRvcDogMDtcclxuICAgICAgICAgICAgICAgIC0tbWluLWhlaWdodDogNDBweDtcclxuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcblxyXG4gICAgICAgICAgICAgICAgaW9uLWljb24ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpb24taW5wdXQge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlvbi1idXR0b24ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaW9uLWxhYmVsIHtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogYWxpY2VibHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOyBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSAgICAgICAgICAgXHJcbiAgICAgICAgfVxyXG4gICAgfSAgIFxyXG59XHJcbiIsImlvbi1jb250ZW50IHtcbiAgLS1iYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMGRlZywgcmdiYSgwLCAwLCAwLCAwLjcpLCByZ2JhKDAsIDAsIDAsIDAuMSkpLFxuICB1cmwoXCIvYXNzZXRzL3YyL1pNbWVzYXYuanBnXCIpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyIC8gY292ZXI7XG59XG5pb24tY29udGVudCAuY2FuY2VsLWFjdGlvbi1idG4ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcbn1cbmlvbi1jb250ZW50ICNsb2dvViB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuaW9uLWNvbnRlbnQgI2xvZ29WIGltZyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG59XG5pb24tY29udGVudCAjbG9nb0gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNsb2dvSCBpbWcge1xuICB3aWR0aDogMTUlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMzUlO1xuICBsZWZ0OiA0JTtcbiAgcmlnaHQ6IDQlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIHBhZGRpbmc6IDE1cHggMTBweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0ge1xuICAtLWJhY2tncm91bmQ6ICNlZmVmZWY7XG4gIC0tcGFkZGluZy1zdGFydDogMTBweDtcbiAgLS1oaWdobGlnaHQtaGVpZ2h0OiAwO1xuICAtLWJvcmRlci13aWR0aDogMDtcbiAgLS1wYWRkaW5nLXRvcDogMDtcbiAgLS1taW4taGVpZ2h0OiA0MHB4O1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1pY29uIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24taW5wdXQge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24tYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMjVweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWxhYmVsIHtcbiAgY29sb3I6IGFsaWNlYmx1ZTtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn0iXX0= */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { AlertController, ModalController, Platform } from \"@ionic/angular\";\r\nimport { take, tap } from \"rxjs/operators\";\r\nimport { CartService } from \"src/app/services/cart.service\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\nimport { ToastaddService } from \"src/app/services/toastadd.service\";\r\n\r\nimport { environment } from \"src/environments/environment\";\r\n\r\nimport { QrcodeService } from \"../../../services/qrcode.service\";\r\n\r\n@Component({\r\n selector: \"app-comanda-scan\",\r\n templateUrl: \"./comanda-scan.page.html\",\r\n styleUrls: [\"./comanda-scan.page.scss\"],\r\n})\r\nexport class ComandaScanPage implements OnInit {\r\n private web: boolean;\r\n private ios: boolean;\r\n private camSide: any;\r\n private isTablet: boolean;\r\n private isNroMesa: boolean = false;\r\n private logoZimmer: any;\r\n private restImagem: any;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private modalCtrl: ModalController,\r\n private qrScanner: QrcodeService,\r\n private cart: CartService,\r\n private config: ConfigurationService,\r\n private alerta: ToastaddService,\r\n platform: Platform\r\n ) {\r\n this.web = platform.is(\"mobileweb\") || platform.is(\"desktop\");\r\n this.isTablet = this.config.isTablet;\r\n this.logoZimmer = \"assets/v2/logo_zimmer.png\";\r\n this.restImagem =\r\n this.config.imagemRest.imagem != null\r\n ? this.config.imagemRest.imagem\r\n : this.logoZimmer;\r\n // this.ios = platform.is('ios') || platform.is('iphone') || platform.is('ipad')\r\n // this.camSide = this.ios ? 'trás' : 'back'\r\n // this.isNroMesa = this.config.isNroMesa\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n\r\n /**\r\n * Chama o scanner de QR Code\r\n */\r\n scan() {\r\n if (!this.config.isNroTable) {\r\n this.alerta.alertaMsg(\r\n \"Número da mesa em branco, digite corretamente para receber seu pedido\"\r\n );\r\n this.cancelAction();\r\n return;\r\n }\r\n this.qrScanner\r\n .scan({\r\n useNativePlugin: !this.web,\r\n side: \"back\",\r\n validation: (value: string) => value.length === 36 || value.length <= 8,\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: (result) => {\r\n /* this.config.isNroTable = false;\r\n this.modalCtrl.dismiss(\r\n result,\r\n \"confirm\",\r\n environment.modals.comandaScannerId\r\n ); */\r\n this.cart.testMonitorID().subscribe((monitor) => {\r\n if (monitor.verificaComanda) {\r\n if (result.length <= 8 && /(^\\d+$)/.test(result)) {\r\n this.cart.testCardID(parseInt(result)).subscribe(\r\n (res) => {\r\n if (!res) {\r\n return this.alertCtrl\r\n .create({\r\n message: \"Comanda inexistente!\",\r\n buttons: [\r\n {\r\n text: \"Tentar Novamente\",\r\n handler: () => {\r\n this.scan();\r\n },\r\n },\r\n ],\r\n })\r\n .then((alert) => {\r\n alert.present();\r\n });\r\n } else {\r\n if (!res.ativo) {\r\n return this.alertCtrl\r\n .create({\r\n message: \"Comanda bloqueada. Chame o garçom!\",\r\n buttons: [\r\n {\r\n text: \"Tentar Novamente\",\r\n handler: () => {\r\n this.scan();\r\n },\r\n },\r\n ],\r\n })\r\n .then((alert) => {\r\n alert.present();\r\n });\r\n } else if (!res.aberto) {\r\n return this.alertCtrl\r\n .create({\r\n message: \"Comanda não disponível. Chame o garçom!\",\r\n buttons: [\r\n {\r\n text: \"Tentar Novamente\",\r\n handler: () => {\r\n this.scan();\r\n },\r\n },\r\n ],\r\n })\r\n .then((alert) => {\r\n alert.present();\r\n });\r\n } else {\r\n this.config.isNroTable = false;\r\n this.modalCtrl.dismiss(\r\n result,\r\n \"confirm\",\r\n environment.modals.comandaScannerId\r\n );\r\n }\r\n }\r\n },\r\n (err) => {\r\n return this.alertCtrl\r\n .create({\r\n message: \"Ocorreu um erro ao ler a Comanda!\",\r\n buttons: [\r\n {\r\n text: \"Tentar Novamente\",\r\n handler: () => {\r\n this.scan();\r\n },\r\n },\r\n ],\r\n })\r\n .then((alert) => {\r\n alert.present();\r\n });\r\n }\r\n );\r\n } else if (/([A-Za-z0-9-]{36})+/.test(result)) {\r\n this.config.isNroTable = false;\r\n this.modalCtrl.dismiss(\r\n result,\r\n \"confirm\",\r\n environment.modals.comandaScannerId\r\n );\r\n } else {\r\n this.alertCtrl\r\n .create({\r\n message: \"Ocorreu um erro ao ler a Comanda!\",\r\n buttons: [\r\n {\r\n text: \"Tentar Novamente\",\r\n handler: () => {\r\n this.scan();\r\n },\r\n },\r\n ],\r\n })\r\n .then((alert) => {\r\n alert.present();\r\n });\r\n }\r\n } else {\r\n this.config.isNroTable = false;\r\n this.modalCtrl.dismiss(\r\n result,\r\n \"confirm\",\r\n environment.modals.comandaScannerId\r\n );\r\n }\r\n });\r\n },\r\n error: (err) => {\r\n console.log(err, \"ERRO\");\r\n this.alertCtrl.create({ message: err }).then((alert) => {\r\n this.config.isNroTable = false;\r\n alert\r\n .onDidDismiss()\r\n .then(() => this.modalCtrl.dismiss(undefined, \"cancel\"));\r\n alert.present();\r\n });\r\n },\r\n });\r\n }\r\n}\r\n","export default \"ion-content {\\n --background: linear-gradient(0deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.1)),\\n url(\\\"/assets/v2/numberv.jpg\\\") no-repeat center center / cover;\\n}\\nion-content .cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\nion-content #mensagem {\\n font-size: large;\\n}\\nion-content .mesa {\\n width: 100px;\\n}\\nion-content #logoV {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #logoV img {\\n margin-top: 10px;\\n width: 30%;\\n}\\nion-content #logoH {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #logoH img {\\n width: 15%;\\n}\\nion-content .wrapper {\\n position: absolute;\\n top: 35%;\\n left: 4%;\\n right: 4%;\\n}\\nion-content .wrapper .form-wrapper {\\n box-shadow: none;\\n border-radius: 20px;\\n padding: 15px 10px;\\n}\\nion-content .wrapper .form-wrapper ion-item {\\n --background: #efefef;\\n --padding-start: 10px;\\n --highlight-height: 0;\\n --border-width: 0;\\n --padding-top: 0;\\n --min-height: 40px;\\n margin-bottom: 15px;\\n border-radius: 5px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-icon {\\n font-size: 18px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-input {\\n margin-left: 10px;\\n font-size: 14px;\\n color: black;\\n font-weight: bold;\\n text-align: center;\\n justify-content: center;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-button {\\n margin-top: 25px;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3RhYmxlLXBhZ2UvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcdjJcXGZpbmlzaGluZy1wYWdlc1xcdGFibGUtcGFnZVxcdGFibGUtcGFnZS5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy90YWJsZS1wYWdlL3RhYmxlLXBhZ2UucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0U7aUVBQUE7QUNFRjtBRENFO0VBQ0UsZUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsVUFBQTtBQ0NKO0FEQ0U7RUFDRSxnQkFBQTtBQ0NKO0FEQ0U7RUFDRSxZQUFBO0FDQ0o7QURFRTtFQUNFLGFBQUE7RUFDQSx1QkFBQTtBQ0FKO0FERUk7RUFDRSxnQkFBQTtFQUNBLFVBQUE7QUNBTjtBRElFO0VBQ0UsYUFBQTtFQUNBLHVCQUFBO0FDRko7QURJSTtFQUNFLFVBQUE7QUNGTjtBRDBCRTtFQUNFLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0FDeEJKO0FEMEJJO0VBQ0UsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0FDeEJOO0FEMEJNO0VBQ0UscUJBQUE7RUFDQSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ3hCUjtBRDBCUTtFQUNFLGVBQUE7QUN4QlY7QUQyQlE7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSxrQkFBQTtFQUNBLHVCQUFBO0FDekJWO0FENEJRO0VBQ0UsZ0JBQUE7QUMxQlYiLCJmaWxlIjoic3JjL2FwcC92Mi9maW5pc2hpbmctcGFnZXMvdGFibGUtcGFnZS90YWJsZS1wYWdlLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImlvbi1jb250ZW50IHtcclxuICAtLWJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCByZ2JhKDAsIDAsIDAsIDAuNyksIHJnYmEoMCwgMCwgMCwgMC4xKSksXHJcbiAgICB1cmwoXCIvYXNzZXRzL3YyL251bWJlcnYuanBnXCIpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyIC8gY292ZXI7XHJcblxyXG4gIC5jYW5jZWwtYWN0aW9uLWJ0biB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDEwcHg7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgei1pbmRleDogMTtcclxuICB9XHJcbiAgI21lbnNhZ2VtIHtcclxuICAgIGZvbnQtc2l6ZTogbGFyZ2U7XHJcbiAgfVxyXG4gIC5tZXNhIHtcclxuICAgIHdpZHRoOiAxMDBweDtcclxuICB9XHJcblxyXG4gICNsb2dvViB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgd2lkdGg6IDMwJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICNsb2dvSCB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgaW1nIHtcclxuICAgICAgd2lkdGg6IDE1JTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vICNwaG90by1mdWxsc2NyZWVuIHtcclxuICAvLyAgICAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIC8vICAgICBtYXgtaGVpZ2h0OiAxMDAlXHJcbiAgLy8gfVxyXG5cclxuICAvLyAuZmxleC1jb250ZW50IHtcclxuICAvLyAgICAgbWFyZ2luOiAwcHggYXV0bztcclxuICAvLyAgICAgd2lkdGg6IDEwMCU7XHJcbiAgLy8gICAgIGhlaWdodDogMTAwJTtcclxuICAvLyAgICAgZGlzcGxheTogZmxleDtcclxuICAvLyAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAvLyAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgLy8gICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgLy8gfVxyXG5cclxuICAvLyAjY2VsY29tYW5kYS1jb250ZW50IHtcclxuICAvLyAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XHJcbiAgLy8gICAgIC8vLS1iYWNrZ3JvdW5kOiBub25lIHRyYW5zcGFyZW50O1xyXG4gIC8vIH1cclxuXHJcbiAgLndyYXBwZXIge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAzNSU7XHJcbiAgICBsZWZ0OiA0JTtcclxuICAgIHJpZ2h0OiA0JTtcclxuXHJcbiAgICAuZm9ybS13cmFwcGVyIHtcclxuICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgICAgcGFkZGluZzogMTVweCAxMHB4O1xyXG5cclxuICAgICAgaW9uLWl0ZW0ge1xyXG4gICAgICAgIC0tYmFja2dyb3VuZDogI2VmZWZlZjtcclxuICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDEwcHg7XHJcbiAgICAgICAgLS1oaWdobGlnaHQtaGVpZ2h0OiAwO1xyXG4gICAgICAgIC0tYm9yZGVyLXdpZHRoOiAwO1xyXG4gICAgICAgIC0tcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgLS1taW4taGVpZ2h0OiA0MHB4O1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuICAgICAgICBpb24taWNvbiB7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpb24taW5wdXQge1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW9uLWJ1dHRvbiB7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCJpb24tY29udGVudCB7XG4gIC0tYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDBkZWcsIHJnYmEoMCwgMCwgMCwgMC43KSwgcmdiYSgwLCAwLCAwLCAwLjEpKSxcbiAgICB1cmwoXCIvYXNzZXRzL3YyL251bWJlcnYuanBnXCIpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyIC8gY292ZXI7XG59XG5pb24tY29udGVudCAuY2FuY2VsLWFjdGlvbi1idG4ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcbn1cbmlvbi1jb250ZW50ICNtZW5zYWdlbSB7XG4gIGZvbnQtc2l6ZTogbGFyZ2U7XG59XG5pb24tY29udGVudCAubWVzYSB7XG4gIHdpZHRoOiAxMDBweDtcbn1cbmlvbi1jb250ZW50ICNsb2dvViB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuaW9uLWNvbnRlbnQgI2xvZ29WIGltZyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG59XG5pb24tY29udGVudCAjbG9nb0gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNsb2dvSCBpbWcge1xuICB3aWR0aDogMTUlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMzUlO1xuICBsZWZ0OiA0JTtcbiAgcmlnaHQ6IDQlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciB7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIHBhZGRpbmc6IDE1cHggMTBweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0ge1xuICAtLWJhY2tncm91bmQ6ICNlZmVmZWY7XG4gIC0tcGFkZGluZy1zdGFydDogMTBweDtcbiAgLS1oaWdobGlnaHQtaGVpZ2h0OiAwO1xuICAtLWJvcmRlci13aWR0aDogMDtcbiAgLS1wYWRkaW5nLXRvcDogMDtcbiAgLS1taW4taGVpZ2h0OiA0MHB4O1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1pY29uIHtcbiAgZm9udC1zaXplOiAxOHB4O1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24taW5wdXQge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogYmxhY2s7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24tYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMjVweDtcbn0iXX0= */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { AlertController, IonInput, ModalController } from \"@ionic/angular\";\r\nimport { Observable } from \"rxjs\";\r\nimport { CartService } from \"src/app/services/cart.service\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\nimport { ToastaddService } from \"src/app/services/toastadd.service\";\r\nimport { environment } from \"src/environments/environment\";\r\n\r\n@Component({\r\n selector: \"app-table-page\",\r\n templateUrl: \"./table-page.page.html\",\r\n styleUrls: [\"./table-page.page.scss\"],\r\n})\r\nexport class TablePagePage implements OnInit {\r\n private isTablet: boolean;\r\n private inputNro: number | undefined;\r\n private restImagem: any;\r\n private logoZimmer: any;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private modalCtrl: ModalController,\r\n private config: ConfigurationService,\r\n private cartService: CartService,\r\n private alerta: ToastaddService\r\n ) {\r\n //this.web = platform.is('mobileweb') || platform.is('desktop')\r\n this.isTablet = this.config.isTablet;\r\n this.logoZimmer = \"assets/v2/logo_zimmer.png\";\r\n this.restImagem =\r\n this.config.imagemRest.imagem != null\r\n ? this.config.imagemRest.imagem\r\n : this.logoZimmer;\r\n this.config.isNroTable = false;\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n\r\n saveNumber() {\r\n if (this.inputNro == undefined) {\r\n this.alerta.alertaMsg(\r\n \"Número da mesa em branco, digite corretamente para receber seu pedido\"\r\n );\r\n return;\r\n }\r\n const inputNumber = this.inputNro;\r\n this.modalCtrl.dismiss(\r\n inputNumber,\r\n \"confirm\",\r\n environment.table_number_input_id\r\n );\r\n this.config.isNroTable = true;\r\n }\r\n\r\n persistOnlyNumbers(event: any) {\r\n let characterCode = event.which ? event.which : event.keyCode;\r\n\r\n if (characterCode > 31 && (characterCode < 48 || characterCode > 57))\r\n return false;\r\n return true;\r\n }\r\n}\r\n","export default \".img-wrapper img {\\n height: 128px;\\n width: 128px;\\n}\\n\\n.cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\n\\n.license-plate-input {\\n text-transform: uppercase;\\n}\\n\\n.confirm-label {\\n text-transform: uppercase;\\n}\\n\\n.confirm-button {\\n position: absolute;\\n bottom: 0;\\n width: 100vw;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1kcml2ZS9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFx2MlxcZmluaXNoaW5nLXBhZ2VzXFx1c2VyLWluZm8tZHJpdmVcXHVzZXItaW5mby1kcml2ZS5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy91c2VyLWluZm8tZHJpdmUvdXNlci1pbmZvLWRyaXZlLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDSTtFQUNJLGFBQUE7RUFDQSxZQUFBO0FDQVI7O0FESUE7RUFDSSxlQUFBO0VBQ0EsU0FBQTtFQUNBLE9BQUE7RUFDQSxVQUFBO0FDREo7O0FESUE7RUFDSSx5QkFBQTtBQ0RKOztBRElBO0VBQ0kseUJBQUE7QUNESjs7QURJQTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFlBQUE7QUNESiIsImZpbGUiOiJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy91c2VyLWluZm8tZHJpdmUvdXNlci1pbmZvLWRyaXZlLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi5pbWctd3JhcHBlciB7XHJcbiAgICBpbWcge1xyXG4gICAgICAgIGhlaWdodDogMTI4cHg7XHJcbiAgICAgICAgd2lkdGg6IDEyOHB4O1xyXG4gICAgfVxyXG59XHJcblxyXG4uY2FuY2VsLWFjdGlvbi1idG4ge1xyXG4gICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgdG9wOiAxMHB4O1xyXG4gICAgbGVmdDogMDtcclxuICAgIHotaW5kZXg6IDE7XHJcbn1cclxuXHJcbi5saWNlbnNlLXBsYXRlLWlucHV0IHtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuXHJcbi5jb25maXJtLWxhYmVsIHtcclxuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuXHJcbi5jb25maXJtLWJ1dHRvbiB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICBib3R0b206IDA7XHJcbiAgICB3aWR0aDogMTAwdnc7XHJcbn1cclxuIiwiLmltZy13cmFwcGVyIGltZyB7XG4gIGhlaWdodDogMTI4cHg7XG4gIHdpZHRoOiAxMjhweDtcbn1cblxuLmNhbmNlbC1hY3Rpb24tYnRuIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG59XG5cbi5saWNlbnNlLXBsYXRlLWlucHV0IHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cblxuLmNvbmZpcm0tbGFiZWwge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uY29uZmlybS1idXR0b24ge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGJvdHRvbTogMDtcbiAgd2lkdGg6IDEwMHZ3O1xufSJdfQ== */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nimport { AlertController, ModalController } from \"@ionic/angular\";\r\n\r\nimport { Card } from \"../../../models/payment/card.model\";\r\nimport {\r\n dayNamesBr,\r\n dayShortNamesBr,\r\n monthNamesBr,\r\n monthShortNamesBr,\r\n} from \"../../../shared/components/v2/input-datetime/input-datetime.component\";\r\nimport { MaskService } from \"../../../services/providers/mask.service\";\r\n\r\n@Component({\r\n selector: \"app-user-info-drive\",\r\n templateUrl: \"./user-info-drive.page.html\",\r\n styleUrls: [\"./user-info-drive.page.scss\"],\r\n})\r\nexport class UserInfoDrivePage implements OnInit {\r\n public form: FormGroup;\r\n dateNow: Date = new Date();\r\n dayNames: string[] = dayNamesBr;\r\n dayShortNames: string[] = dayShortNamesBr;\r\n monthNames: string[] = monthNamesBr;\r\n monthShortNames: string[] = monthShortNamesBr;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private formBuilder: FormBuilder,\r\n public mask: MaskService,\r\n private modalCtrl: ModalController\r\n ) {}\r\n\r\n ngOnInit() {\r\n this.buildForm();\r\n }\r\n\r\n private buildForm() {\r\n this.form = this.formBuilder.group({\r\n userName: [null, [Validators.required, Validators.minLength(3)]],\r\n licensePlate: [null, [Validators.required, Validators.minLength(7)]],\r\n method: [1, [Validators.required]],\r\n cpf: [null, [Validators.required, Validators.minLength(14)]],\r\n phone: [null, []],\r\n card: this.formBuilder.group({\r\n cardNumber: [null, [Validators.required, Validators.minLength(16)]],\r\n cvv: [null, [Validators.required, Validators.minLength(3)]],\r\n dateExp: [null, [Validators.required, Validators.minLength(5)]],\r\n }),\r\n });\r\n }\r\n\r\n confirm() {\r\n const formattedData = {\r\n userName: this.form.value.userName,\r\n licensePlate: this.form.value.licensePlate,\r\n phone: (this.form.value.phone + \"\").replace(/[^0-9]/gm, \"\"),\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n method: this.form.value.method,\r\n card: new Card({\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n cvv: this.form.value.card?.cvv,\r\n monthExp: this.form.value.card?.dateExp?.substr(0, 2),\r\n yearExp: this.form.value.card?.dateExp?.substr(3, 2),\r\n titular: this.form.value.userName,\r\n num: this.form.value.card?.cardNumber?.replace(/[^0-9]/gm, \"\"),\r\n }),\r\n };\r\n this.modalCtrl.dismiss(formattedData, \"confirm\");\r\n }\r\n\r\n /**\r\n * Altera os validadores do form para que o botão de enviar pedido seja liberado\r\n */\r\n toggleValidators(method: number): void {\r\n // Pega os campos\r\n const cardNumberField = this.form.get(\"card.cardNumber\");\r\n const cvvField = this.form.get(\"card.cvv\");\r\n const dateExpField = this.form.get(\"card.dateExp\");\r\n const cpfField = this.form.get(\"cpf\");\r\n\r\n // Checa o método de pagamento\r\n if (method == 2) {\r\n // Limpa validadores\r\n cardNumberField.clearValidators();\r\n cvvField.clearValidators();\r\n dateExpField.clearValidators();\r\n cpfField.clearValidators();\r\n } else {\r\n // Adiciona os validadores\r\n cardNumberField.setValidators([\r\n Validators.required,\r\n Validators.minLength(16),\r\n ]);\r\n cvvField.setValidators([Validators.required, Validators.minLength(3)]);\r\n dateExpField.setValidators([\r\n Validators.required,\r\n Validators.minLength(5),\r\n ]);\r\n cpfField.setValidators([Validators.required, Validators.minLength(14)]);\r\n }\r\n\r\n // Atualiza os valores dos campos e faz a validação deles\r\n cardNumberField.updateValueAndValidity();\r\n cvvField.updateValueAndValidity();\r\n dateExpField.updateValueAndValidity();\r\n cpfField.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * Pergunta se o usuário verificou os dados digitados\r\n */\r\n next() {\r\n this.alertCtrl\r\n .create({\r\n message: \"Não esqueça de revisar seus dados\",\r\n buttons: [\r\n {\r\n text: \"PROSSEGUIR\",\r\n handler: () => this.confirmData(),\r\n },\r\n {\r\n text: \"REVISAR INFORMAÇÕES\",\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n\r\n confirmData() {\r\n const formattedData = {\r\n userName: this.form.value.userName,\r\n licensePlate: this.form.value.licensePlate,\r\n phone: (this.form.value.phone + \"\").replace(/[^0-9]/gm, \"\"),\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n method: this.form.value.method,\r\n card: new Card({\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n cvv: this.form.value.card?.cvv,\r\n monthExp: this.form.value.card?.dateExp?.substr(5, 2),\r\n yearExp: this.form.value.card?.dateExp?.substr(2, 2),\r\n titular: this.form.value.userName,\r\n num: this.form.value.card?.cardNumber?.replace(/[^0-9]/gm, \"\"),\r\n }),\r\n };\r\n this.modalCtrl.dismiss(formattedData, \"confirm\");\r\n }\r\n\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n}\r\n","export default \"ion-content {\\n --background: url(\\\"/assets/background/background.jpeg\\\") no-repeat center center / cover;\\n}\\nion-content #header {\\n height: 40%;\\n background: #f2e61d;\\n display: flex;\\n flex-direction: column;\\n color: #ffffff;\\n border-radius: 0px 0px 20px 20px;\\n}\\nion-content #header #app-bar {\\n height: 60px;\\n padding: 0 16px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\nion-content #header #app-bar ion-icon {\\n font-size: 24px;\\n}\\nion-content #header #app-bar .cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\nion-content #header #logo {\\n width: 100px;\\n height: 100px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: 20px;\\n align-self: center;\\n margin-top: 10%;\\n background: #f2e61d;\\n}\\nion-content #header #logo img {\\n width: 90%;\\n}\\nion-content #header #logoV {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoV img {\\n margin-top: 10px;\\n width: 30%;\\n background-color: var(--ion-color-dark);\\n border-radius: 20px;\\n}\\nion-content #header #logoH {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoH img {\\n width: 10%;\\n background-color: var(--ion-color-dark);\\n border-radius: 20px;\\n}\\nion-content #header h2 {\\n text-align: center;\\n font-weight: bold;\\n margin: 0;\\n font-size: 20px;\\n letter-spacing: 1px;\\n margin-top: 5px;\\n color: #232529;\\n}\\nion-content .wrapper {\\n position: absolute;\\n top: 30%;\\n left: 4%;\\n right: 4%;\\n}\\nion-content .wrapper .form-wrapper {\\n box-shadow: none;\\n border-radius: 20px;\\n padding: 15px 10px;\\n}\\nion-content .wrapper .form-wrapper ion-item {\\n --background: #efefef;\\n --padding-start: 10px;\\n --highlight-height: 0;\\n --border-width: 0;\\n --padding-top: 0;\\n --min-height: 40px;\\n margin-bottom: 15px;\\n border-radius: 5px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-icon {\\n font-size: 18px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-input {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-label {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-button {\\n margin-top: 25px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-datetime {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .line-text {\\n padding: 0 30px;\\n position: relative;\\n height: 20px;\\n margin-top: 30px;\\n}\\nion-content .wrapper .line-text .lines {\\n height: 1px;\\n background: #858585;\\n display: block;\\n}\\nion-content .wrapper .line-text .text {\\n position: absolute;\\n top: -7px;\\n left: 50%;\\n transform: translateX(-50%);\\n background: #e0dfe6;\\n padding: 0 16px;\\n font-size: 10px;\\n font-weight: 500;\\n color: #5e5e5e;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1yZXF1ZXN0LWNhcmQvQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcdjJcXGZpbmlzaGluZy1wYWdlc1xcdXNlci1pbmZvLXJlcXVlc3QtY2FyZFxcdXNlci1pbmZvLXJlcXVlc3QtY2FyZC5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy91c2VyLWluZm8tcmVxdWVzdC1jYXJkL3VzZXItaW5mby1yZXF1ZXN0LWNhcmQucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksdUZBQUE7QUNDSjtBRENJO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsY0FBQTtFQUNBLGdDQUFBO0FDQ047QURDTTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtFQUNBLDhCQUFBO0VBQ0EsbUJBQUE7QUNDVjtBRENVO0VBQ0ksZUFBQTtBQ0NkO0FERVU7RUFDRSxlQUFBO0VBQ0EsU0FBQTtFQUNBLE9BQUE7RUFDQSxVQUFBO0FDQVo7QURLTTtFQUNJLFlBQUE7RUFDQSxhQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0FDSFY7QURLVTtFQUNJLFVBQUE7QUNIZDtBRE9JO0VBQ0ksYUFBQTtFQUNBLHVCQUFBO0FDTFI7QURPUTtFQUNJLGdCQUFBO0VBQ0EsVUFBQTtFQUNBLHVDQUFBO0VBQ0EsbUJBQUE7QUNMWjtBRFNJO0VBQ0ksYUFBQTtFQUNBLHVCQUFBO0FDUFI7QURTUTtFQUNJLFVBQUE7RUFDQSx1Q0FBQTtFQUNBLG1CQUFBO0FDUFo7QURXTTtFQUNJLGtCQUFBO0VBQ0EsaUJBQUE7RUFDQSxTQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUNUVjtBRGFJO0VBQ0ksa0JBQUE7RUFDQSxRQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7QUNYUjtBRGFRO0VBQ0ksZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0FDWFo7QURhWTtFQUNJLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxxQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7QUNYaEI7QURhZ0I7RUFDSSxlQUFBO0FDWHBCO0FEY2dCO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQ1pwQjtBRGVnQjtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUNicEI7QURnQmdCO0VBQ0ksZ0JBQUE7QUNkcEI7QURpQmdCO0VBQ0ksaUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQ2ZwQjtBRG9CUTtFQUNJLGVBQUE7RUFDQSxrQkFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtBQ2xCWjtBRG9CWTtFQUNJLFdBQUE7RUFDQSxtQkFBQTtFQUNBLGNBQUE7QUNsQmhCO0FEcUJZO0VBQ0ksa0JBQUE7RUFDQSxTQUFBO0VBQ0EsU0FBQTtFQUNBLDJCQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsY0FBQTtBQ25CaEIiLCJmaWxlIjoic3JjL2FwcC92Mi9maW5pc2hpbmctcGFnZXMvdXNlci1pbmZvLXJlcXVlc3QtY2FyZC91c2VyLWluZm8tcmVxdWVzdC1jYXJkLnBhZ2Uuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbImlvbi1jb250ZW50e1xyXG4gICAgLS1iYWNrZ3JvdW5kOiB1cmwoXCIvYXNzZXRzL2JhY2tncm91bmQvYmFja2dyb3VuZC5qcGVnXCIpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyIC8gY292ZXI7Ly92YXIoLS1pb24tY29sb3ItZGFyayk7Ly8jZTBkZmU2Oy8vdmFyKC0taW9uLWNvbG9yLWRhcmspO1xyXG4gICAgXHJcbiAgICAjaGVhZGVyIHsgICBcclxuICAgICAgaGVpZ2h0OiA0MCU7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmMmU2MWQ7IC8vI2YyZTYxZCB6aW1tZXJcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgY29sb3I6ICNmZmZmZmY7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDBweCAwcHggMjBweCAyMHB4O1xyXG5cclxuICAgICAgI2FwcC1iYXIge1xyXG4gICAgICAgICAgaGVpZ2h0OiA2MHB4O1xyXG4gICAgICAgICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgaW9uLWljb24ge1xyXG4gICAgICAgICAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAuY2FuY2VsLWFjdGlvbi1idG4ge1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgICAgIHRvcDogMTBweDtcclxuICAgICAgICAgICAgbGVmdDogMDtcclxuICAgICAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICB9XHJcbiAgICAgICBcclxuICAgICAgfVxyXG5cclxuICAgICAgI2xvZ28ge1xyXG4gICAgICAgICAgd2lkdGg6IDEwMHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAxMDBweDtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogMTAlO1xyXG4gICAgICAgICAgYmFja2dyb3VuZDogI2YyZTYxZDtcclxuXHJcbiAgICAgICAgICBpbWcge1xyXG4gICAgICAgICAgICAgIHdpZHRoOiA5MCU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAjbG9nb1Yge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICAgICAgd2lkdGg6IDMwJTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAjbG9nb0gge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgICAgd2lkdGg6IDEwJTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAgIGgyIHtcclxuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgICAgbWFyZ2luOiAwO1xyXG4gICAgICAgICAgZm9udC1zaXplOiAyMHB4O1xyXG4gICAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcclxuICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICAgIGNvbG9yOiAjMjMyNTI5OyAvLyBkYXJrICMyMzI1MjlcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC53cmFwcGVyIHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiAzMCU7XHJcbiAgICAgICAgbGVmdDogNCU7XHJcbiAgICAgICAgcmlnaHQ6IDQlO1xyXG5cclxuICAgICAgICAuZm9ybS13cmFwcGVyIHtcclxuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcclxuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgICAgICAgICAgcGFkZGluZzogMTVweCAxMHB4O1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaW9uLWl0ZW0ge1xyXG4gICAgICAgICAgICAgICAgLS1iYWNrZ3JvdW5kOiAjZWZlZmVmO1xyXG4gICAgICAgICAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgLS1oaWdobGlnaHQtaGVpZ2h0OiAwO1xyXG4gICAgICAgICAgICAgICAgLS1ib3JkZXItd2lkdGg6IDA7XHJcbiAgICAgICAgICAgICAgICAtLXBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgICAgICAgICAgLS1taW4taGVpZ2h0OiA0MHB4O1xyXG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTVweDtcclxuICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDtcclxuXHJcbiAgICAgICAgICAgICAgICBpb24taWNvbiB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxOHB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlvbi1pbnB1dCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpb24tbGFiZWwge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgICAgICAgICAgICBjb2xvcjogIzVlNWU1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpb24tYnV0dG9uIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAyNXB4O1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlvbi1kYXRldGltZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9ICAgICAgICAgICBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5saW5lLXRleHQge1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAwIDMwcHg7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgICAgaGVpZ2h0OiAyMHB4OyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAzMHB4O1xyXG5cclxuICAgICAgICAgICAgLmxpbmVzIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMXB4O1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogIzg1ODU4NTtcclxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOyBcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLnRleHQge1xyXG4gICAgICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICAgICAgdG9wOiAtN3B4O1xyXG4gICAgICAgICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2UwZGZlNjtcclxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDtcclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgICAgICAgICAgICBjb2xvcjogIzVlNWU1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuLy8gY3NzIGFudGlnb1xyXG4vLyAuaW1nLXdyYXBwZXIge1xyXG4vLyAgICAgaW1nIHtcclxuLy8gICAgICAgICBoZWlnaHQ6IDEyOHB4O1xyXG4vLyAgICAgICAgIHdpZHRoOiAxMjhweDtcclxuLy8gICAgIH1cclxuLy8gfVxyXG5cclxuLy8gLmNhbmNlbC1hY3Rpb24tYnRuIHtcclxuLy8gICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuLy8gICAgIHRvcDogMTBweDtcclxuLy8gICAgIGxlZnQ6IDA7XHJcbi8vICAgICB6LWluZGV4OiAxO1xyXG4vLyB9XHJcblxyXG4vLyAuY29uZmlybS1sYWJlbCAge1xyXG4vLyAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuLy8gfVxyXG5cclxuLy8gLmNvbmZpcm0tYnV0dG9uIHtcclxuLy8gICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuLy8gICAgIGJvdHRvbTogMDtcclxuLy8gICAgIHdpZHRoOiAxMDB2dztcclxuLy8gfVxyXG4iLCJpb24tY29udGVudCB7XG4gIC0tYmFja2dyb3VuZDogdXJsKFwiL2Fzc2V0cy9iYWNrZ3JvdW5kL2JhY2tncm91bmQuanBlZ1wiKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlciAvIGNvdmVyO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciB7XG4gIGhlaWdodDogNDAlO1xuICBiYWNrZ3JvdW5kOiAjZjJlNjFkO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgYm9yZGVyLXJhZGl1czogMHB4IDBweCAyMHB4IDIwcHg7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNhcHAtYmFyIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2FwcC1iYXIgaW9uLWljb24ge1xuICBmb250LXNpemU6IDI0cHg7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNhcHAtYmFyIC5jYW5jZWwtYWN0aW9uLWJ0biB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxMHB4O1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nbyB7XG4gIHdpZHRoOiAxMDBweDtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMTAlO1xuICBiYWNrZ3JvdW5kOiAjZjJlNjFkO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nbyBpbWcge1xuICB3aWR0aDogOTAlO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nb1Yge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29WIGltZyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29IIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNsb2dvSCBpbWcge1xuICB3aWR0aDogMTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG5pb24tY29udGVudCAjaGVhZGVyIGgyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgY29sb3I6ICMyMzI1Mjk7XG59XG5pb24tY29udGVudCAud3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzMCU7XG4gIGxlZnQ6IDQlO1xuICByaWdodDogNCU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgcGFkZGluZzogMTVweCAxMHB4O1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSB7XG4gIC0tYmFja2dyb3VuZDogI2VmZWZlZjtcbiAgLS1wYWRkaW5nLXN0YXJ0OiAxMHB4O1xuICAtLWhpZ2hsaWdodC1oZWlnaHQ6IDA7XG4gIC0tYm9yZGVyLXdpZHRoOiAwO1xuICAtLXBhZGRpbmctdG9wOiAwO1xuICAtLW1pbi1oZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWljb24ge1xuICBmb250LXNpemU6IDE4cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1pbnB1dCB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24tbGFiZWwge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogIzVlNWU1ZTtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWJ1dHRvbiB7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1kYXRldGltZSB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmxpbmUtdGV4dCB7XG4gIHBhZGRpbmc6IDAgMzBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDIwcHg7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAubGluZS10ZXh0IC5saW5lcyB7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiAjODU4NTg1O1xuICBkaXNwbGF5OiBibG9jaztcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5saW5lLXRleHQgLnRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTdweDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGJhY2tncm91bmQ6ICNlMGRmZTY7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzVlNWU1ZTtcbn0iXX0= */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nimport { AlertController, ModalController } from \"@ionic/angular\";\r\n\r\nimport { MaskService } from \"../../../services/providers/mask.service\";\r\nimport {\r\n dayNamesBr,\r\n dayShortNamesBr,\r\n monthNamesBr,\r\n monthShortNamesBr,\r\n} from \"../../../shared/components/v2/input-datetime/input-datetime.component\";\r\nimport { Card } from \"../../../models/payment/card.model\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\n\r\n@Component({\r\n selector: \"app-user-info-request-card\",\r\n templateUrl: \"./user-info-request-card.page.html\",\r\n styleUrls: [\"./user-info-request-card.page.scss\"],\r\n})\r\nexport class UserInfoRequestCardPage implements OnInit {\r\n form: FormGroup;\r\n dateNow: Date = new Date();\r\n dayNames: string[] = dayNamesBr;\r\n dayShortNames: string[] = dayShortNamesBr;\r\n monthNames: string[] = monthNamesBr;\r\n monthShortNames: string[] = monthShortNamesBr;\r\n appmode: any;\r\n isTablet: boolean;\r\n restImagem: any;\r\n logoZimmer: any;\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private formBuilder: FormBuilder,\r\n public mask: MaskService,\r\n private modalCtrl: ModalController,\r\n private config: ConfigurationService\r\n ) {\r\n this.appmode = this.config.modoApp;\r\n this.isTablet = this.config.isTablet;\r\n this.logoZimmer = \"assets/v2/logo_zimmer.png\";\r\n this.restImagem =\r\n this.config.imagemRest.imagem != null\r\n ? this.config.imagemRest.imagem\r\n : this.logoZimmer;\r\n }\r\n\r\n /**\r\n * Monta o form\r\n */\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n userName: [null, [Validators.required, Validators.minLength(3)]],\r\n method: [1, [Validators.required]],\r\n cpf: [null, [Validators.required, Validators.minLength(14)]],\r\n phone: [null, [Validators.required]],\r\n card: this.formBuilder.group({\r\n cardNumber: [null, [Validators.required, Validators.minLength(16)]],\r\n cvv: [null, [Validators.required, Validators.minLength(3)]],\r\n dateExp: [null, [Validators.required, Validators.minLength(5)]],\r\n }),\r\n });\r\n console.log(this.form);\r\n }\r\n\r\n /**\r\n * Altera os validadores do form para que o botão de enviar pedido seja liberado\r\n */\r\n toggleValidators(method: number): void {\r\n console.log(this.form);\r\n\r\n // Pega os campos\r\n const cardNumberField = this.form.get(\"card.cardNumber\");\r\n const cvvField = this.form.get(\"card.cvv\");\r\n const dateExpField = this.form.get(\"card.dateExp\");\r\n const cpfField = this.form.get(\"cpf\");\r\n\r\n // Checa o método de pagamento\r\n if (method == 2) {\r\n // Limpa validadores\r\n cardNumberField.clearValidators();\r\n cvvField.clearValidators();\r\n dateExpField.clearValidators();\r\n cpfField.clearValidators();\r\n } else {\r\n // Adiciona os validadores\r\n cardNumberField.setValidators([\r\n Validators.required,\r\n Validators.minLength(16),\r\n ]);\r\n cvvField.setValidators([Validators.required, Validators.minLength(3)]);\r\n dateExpField.setValidators([\r\n Validators.required,\r\n Validators.minLength(5),\r\n ]);\r\n cpfField.setValidators([Validators.required, Validators.minLength(14)]);\r\n }\r\n\r\n // this.form.updateValueAndValidity()\r\n\r\n // Atualiza os valores dos campos e faz a validação deles\r\n cardNumberField.updateValueAndValidity();\r\n cvvField.updateValueAndValidity();\r\n dateExpField.updateValueAndValidity();\r\n cpfField.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * Fecha o modal sem enviar nada e com a role 'cancel'\r\n */\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n\r\n /**\r\n * Fecha o modal e retorna os dados digitados\r\n */\r\n confirmData() {\r\n const formattedData = {\r\n userName: this.form.value.userName,\r\n phone: (this.form.value.phone + \"\").replace(/[^0-9]/gm, \"\"),\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n method: this.form.value.method,\r\n card: new Card({\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n cvv: this.form.value.card?.cvv,\r\n monthExp: this.form.value.card?.dateExp?.substr(5, 2),\r\n yearExp: this.form.value.card?.dateExp?.substr(2, 2),\r\n titular: this.form.value.userName,\r\n num: this.form.value.card?.cardNumber?.replace(/[^0-9]/gm, \"\"),\r\n }),\r\n };\r\n this.modalCtrl.dismiss(formattedData, \"confirm\");\r\n }\r\n\r\n /**\r\n * Pergunta se o usuário verificou os dados digitados\r\n */\r\n next() {\r\n this.alertCtrl\r\n .create({\r\n message:\r\n \"Clique em OK se estiver tudo certo, ou clique em cancelar e revise os dados.\",\r\n animated: true,\r\n header: \"Atenção!\",\r\n mode: \"ios\",\r\n buttons: [\r\n {\r\n text: \"OK\",\r\n handler: () => this.confirmData(),\r\n },\r\n {\r\n text: \"CANCELAR\",\r\n cssClass: \"alert_font_cancel\",\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n}\r\n","export default \"ion-content {\\n --background: url(\\\"/assets/background/background.jpeg\\\") no-repeat center center / cover;\\n}\\nion-content #header {\\n height: 50%;\\n background: #f2e61d;\\n display: flex;\\n flex-direction: column;\\n color: #ffffff;\\n border-radius: 0px 0px 20px 20px;\\n}\\nion-content #header #app-bar {\\n height: 60px;\\n padding: 0 16px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\nion-content #header #app-bar ion-icon {\\n font-size: 24px;\\n}\\nion-content #header #app-bar .cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\nion-content #header #logo {\\n width: 100px;\\n height: 100px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: 20px;\\n align-self: center;\\n margin-top: 10%;\\n background: #f2e61d;\\n}\\nion-content #header #logo img {\\n width: 90%;\\n}\\nion-content #header #logoV {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoV img {\\n margin-top: 10px;\\n width: 30%;\\n}\\nion-content #header #logoH {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoH img {\\n width: 10%;\\n}\\nion-content #header h2 {\\n text-align: center;\\n font-weight: bold;\\n margin: 0;\\n font-size: 20px;\\n letter-spacing: 1px;\\n margin-top: 5px;\\n color: #232529;\\n}\\nion-content .wrapper {\\n position: absolute;\\n top: 35%;\\n left: 4%;\\n right: 4%;\\n}\\nion-content .wrapper .form-wrapper {\\n box-shadow: none;\\n border-radius: 20px;\\n padding: 15px 10px;\\n}\\nion-content .wrapper .form-wrapper ion-item {\\n --background: #efefef;\\n --padding-start: 10px;\\n --highlight-height: 0;\\n --border-width: 0;\\n --padding-top: 0;\\n --min-height: 40px;\\n margin-bottom: 15px;\\n border-radius: 5px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-icon {\\n font-size: 18px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-input {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-label {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-button {\\n margin-top: 25px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-datetime {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .line-text {\\n padding: 0 30px;\\n position: relative;\\n height: 20px;\\n margin-top: 30px;\\n}\\nion-content .wrapper .line-text .lines {\\n height: 1px;\\n background: #858585;\\n display: block;\\n}\\nion-content .wrapper .line-text .text {\\n position: absolute;\\n top: -7px;\\n left: 50%;\\n transform: translateX(-50%);\\n background: #e0dfe6;\\n padding: 0 16px;\\n font-size: 10px;\\n font-weight: 500;\\n color: #5e5e5e;\\n}\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1yZXF1ZXN0LWNvbnN1bW8vQzpcXFVzZXJzXFxVc2VyXFxEZXNrdG9wXFxQcm9qZXRvc1xcSW9uaWNcXFppbW1lci9zcmNcXGFwcFxcdjJcXGZpbmlzaGluZy1wYWdlc1xcdXNlci1pbmZvLXJlcXVlc3QtY29uc3Vtb1xcdXNlci1pbmZvLXJlcXVlc3QtY29uc3Vtby5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy91c2VyLWluZm8tcmVxdWVzdC1jb25zdW1vL3VzZXItaW5mby1yZXF1ZXN0LWNvbnN1bW8ucGFnZS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0VBQ0ksdUZBQUE7QUNDSjtBRENJO0VBQ0UsV0FBQTtFQUNBLG1CQUFBO0VBQ0EsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsY0FBQTtFQUNBLGdDQUFBO0FDQ047QURDTTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtFQUNBLDhCQUFBO0VBQ0EsbUJBQUE7QUNDVjtBRENVO0VBQ0ksZUFBQTtBQ0NkO0FERVU7RUFDRSxlQUFBO0VBQ0EsU0FBQTtFQUNBLE9BQUE7RUFDQSxVQUFBO0FDQVo7QURLTTtFQUNJLFlBQUE7RUFDQSxhQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0FDSFY7QURLVTtFQUNJLFVBQUE7QUNIZDtBRE9NO0VBQ0UsYUFBQTtFQUNBLHVCQUFBO0FDTFI7QURPUTtFQUNJLGdCQUFBO0VBQ0EsVUFBQTtBQ0xaO0FEU0k7RUFDSSxhQUFBO0VBQ0EsdUJBQUE7QUNQUjtBRFNRO0VBQ0ksVUFBQTtBQ1BaO0FEV007RUFDSSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDVFY7QURhSTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0FDWFI7QURhUTtFQUNJLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ1haO0FEYVk7RUFDSSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0FDWGhCO0FEYWdCO0VBQ0ksZUFBQTtBQ1hwQjtBRGNnQjtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUNacEI7QURlZ0I7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDYnBCO0FEZ0JnQjtFQUNJLGdCQUFBO0FDZHBCO0FEaUJnQjtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUNmcEI7QURvQlE7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7QUNsQlo7QURvQlk7RUFDSSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0FDbEJoQjtBRHFCWTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSwyQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNuQmhCIiwiZmlsZSI6InNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1yZXF1ZXN0LWNvbnN1bW8vdXNlci1pbmZvLXJlcXVlc3QtY29uc3Vtby5wYWdlLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJpb24tY29udGVudHtcclxuICAgIC0tYmFja2dyb3VuZDogdXJsKFwiL2Fzc2V0cy9iYWNrZ3JvdW5kL2JhY2tncm91bmQuanBlZ1wiKSBuby1yZXBlYXQgY2VudGVyIGNlbnRlciAvIGNvdmVyOy8vI2UwZGZlNjsvL3ZhcigtLWlvbi1jb2xvci1kYXJrKTtcclxuICAgIFxyXG4gICAgI2hlYWRlciB7XHJcbiAgICAgIGhlaWdodDogNTAlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZjJlNjFkOyAvLyNmMmU2MWQgemltbWVyXHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgIGNvbG9yOiAjZmZmZmZmO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwcHggMHB4IDIwcHggMjBweDtcclxuXHJcbiAgICAgICNhcHAtYmFyIHtcclxuICAgICAgICAgIGhlaWdodDogNjBweDtcclxuICAgICAgICAgIHBhZGRpbmc6IDAgMTZweDtcclxuICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cclxuICAgICAgICAgIGlvbi1pY29uIHtcclxuICAgICAgICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmNhbmNlbC1hY3Rpb24tYnRuIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgICAgICB0b3A6IDEwcHg7XHJcbiAgICAgICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgXHJcbiAgICAgIH1cclxuXHJcbiAgICAgICNsb2dvIHtcclxuICAgICAgICAgIHdpZHRoOiAxMDBweDtcclxuICAgICAgICAgIGhlaWdodDogMTAwcHg7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcclxuICAgICAgICAgIG1hcmdpbi10b3A6IDEwJTtcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICNmMmU2MWQ7XHJcblxyXG4gICAgICAgICAgaW1nIHtcclxuICAgICAgICAgICAgICB3aWR0aDogOTAlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAjbG9nb1Yge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgICAgbWFyZ2luLXRvcDogMTBweDtcclxuICAgICAgICAgICAgd2lkdGg6IDMwJTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgI2xvZ29IIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMCU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICAgaDIge1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgICAgY29sb3I6ICMyMzI1Mjk7IC8vIGRhcmsgIzIzMjUyOVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXBwZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDM1JTtcclxuICAgICAgICBsZWZ0OiA0JTtcclxuICAgICAgICByaWdodDogNCU7XHJcblxyXG4gICAgICAgIC5mb3JtLXdyYXBwZXIge1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDEwcHg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpb24taXRlbSB7XHJcbiAgICAgICAgICAgICAgICAtLWJhY2tncm91bmQ6ICNlZmVmZWY7XHJcbiAgICAgICAgICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAtLWhpZ2hsaWdodC1oZWlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgICAtLWJvcmRlci13aWR0aDogMDtcclxuICAgICAgICAgICAgICAgIC0tcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgICAgICAgICAtLW1pbi1oZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuICAgICAgICAgICAgICAgIGlvbi1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaW9uLWlucHV0IHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM1ZTVlNWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlvbi1idXR0b24ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaW9uLWRhdGV0aW1lIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM1ZTVlNWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxpbmUtdGV4dCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMzBweDtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XHJcblxyXG4gICAgICAgICAgICAubGluZXMge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjODU4NTg1O1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAudGV4dCB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICB0b3A6IC03cHg7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTBkZmU2O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiaW9uLWNvbnRlbnQge1xuICAtLWJhY2tncm91bmQ6IHVybChcIi9hc3NldHMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLmpwZWdcIikgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXIgLyBjb3Zlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIge1xuICBoZWlnaHQ6IDUwJTtcbiAgYmFja2dyb3VuZDogI2YyZTYxZDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDBweCAwcHggMjBweCAyMHB4O1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjYXBwLWJhciB7XG4gIGhlaWdodDogNjBweDtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNhcHAtYmFyIGlvbi1pY29uIHtcbiAgZm9udC1zaXplOiAyNHB4O1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjYXBwLWJhciAuY2FuY2VsLWFjdGlvbi1idG4ge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMTBweDtcbiAgbGVmdDogMDtcbiAgei1pbmRleDogMTtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ28ge1xuICB3aWR0aDogMTAwcHg7XG4gIGhlaWdodDogMTAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gIG1hcmdpbi10b3A6IDEwJTtcbiAgYmFja2dyb3VuZDogI2YyZTYxZDtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ28gaW1nIHtcbiAgd2lkdGg6IDkwJTtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29WIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNsb2dvViBpbWcge1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICB3aWR0aDogMzAlO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nb0gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29IIGltZyB7XG4gIHdpZHRoOiAxMCU7XG59XG5pb24tY29udGVudCAjaGVhZGVyIGgyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgY29sb3I6ICMyMzI1Mjk7XG59XG5pb24tY29udGVudCAud3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzNSU7XG4gIGxlZnQ6IDQlO1xuICByaWdodDogNCU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgcGFkZGluZzogMTVweCAxMHB4O1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSB7XG4gIC0tYmFja2dyb3VuZDogI2VmZWZlZjtcbiAgLS1wYWRkaW5nLXN0YXJ0OiAxMHB4O1xuICAtLWhpZ2hsaWdodC1oZWlnaHQ6IDA7XG4gIC0tYm9yZGVyLXdpZHRoOiAwO1xuICAtLXBhZGRpbmctdG9wOiAwO1xuICAtLW1pbi1oZWlnaHQ6IDQwcHg7XG4gIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gIGJvcmRlci1yYWRpdXM6IDVweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWljb24ge1xuICBmb250LXNpemU6IDE4cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1pbnB1dCB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24tbGFiZWwge1xuICBtYXJnaW4tbGVmdDogMTBweDtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBjb2xvcjogIzVlNWU1ZTtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWJ1dHRvbiB7XG4gIG1hcmdpbi10b3A6IDI1cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1kYXRldGltZSB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmxpbmUtdGV4dCB7XG4gIHBhZGRpbmc6IDAgMzBweDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBoZWlnaHQ6IDIwcHg7XG4gIG1hcmdpbi10b3A6IDMwcHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAubGluZS10ZXh0IC5saW5lcyB7XG4gIGhlaWdodDogMXB4O1xuICBiYWNrZ3JvdW5kOiAjODU4NTg1O1xuICBkaXNwbGF5OiBibG9jaztcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5saW5lLXRleHQgLnRleHQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTdweDtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gIGJhY2tncm91bmQ6ICNlMGRmZTY7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBmb250LXdlaWdodDogNTAwO1xuICBjb2xvcjogIzVlNWU1ZTtcbn0iXX0= */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\n\r\nimport { AlertController, ModalController } from \"@ionic/angular\";\r\n\r\nimport { MaskService } from \"../../../services/providers/mask.service\";\r\nimport {\r\n dayNamesBr,\r\n dayShortNamesBr,\r\n monthNamesBr,\r\n monthShortNamesBr,\r\n} from \"../../../shared/components/v2/input-datetime/input-datetime.component\";\r\nimport { Card } from \"../../../models/payment/card.model\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { cardConsumo } from \"src/app/models/payment/consumo.model\";\r\nimport { PaymentService } from \"src/app/services/payment.service\";\r\nimport { ToastaddService } from \"src/app/services/toastadd.service\";\r\nimport { CartService } from \"src/app/services/cart.service\";\r\nimport { Utils } from \"src/app/shared/util\";\r\n\r\n@Component({\r\n selector: \"app-user-info-request-consumo\",\r\n templateUrl: \"./user-info-request-consumo.page.html\",\r\n styleUrls: [\"./user-info-request-consumo.page.scss\"],\r\n})\r\nexport class UserInfoRequestConsumoPage implements OnInit {\r\n form: FormGroup;\r\n dateNow: Date = new Date();\r\n dayNames: string[] = dayNamesBr;\r\n dayShortNames: string[] = dayShortNamesBr;\r\n monthNames: string[] = monthNamesBr;\r\n monthShortNames: string[] = monthShortNamesBr;\r\n isTablet: boolean;\r\n restImagem: any;\r\n logoZimmer: any;\r\n saldoCartao$: Observable;\r\n cardCliente: {\r\n cartaoid: string;\r\n nro: any;\r\n saldo: any;\r\n };\r\n\r\n constructor(\r\n private alertCtrl: AlertController,\r\n private formBuilder: FormBuilder,\r\n public mask: MaskService,\r\n private modalCtrl: ModalController,\r\n private config: ConfigurationService,\r\n private alerta: ToastaddService,\r\n private payment: PaymentService,\r\n private cartService: CartService,\r\n private utils: Utils\r\n ) {\r\n // this.appmode = this.config.modoApp\r\n // console.log(this.appmode);\r\n this.isTablet = this.config.isTablet;\r\n this.logoZimmer = \"assets/v2/logo_zimmer.png\";\r\n this.restImagem =\r\n this.config.imagemRest.imagem != null\r\n ? this.config.imagemRest.imagem\r\n : this.logoZimmer;\r\n }\r\n\r\n /**\r\n * Monta o form\r\n */\r\n ngOnInit() {\r\n this.form = this.formBuilder.group({\r\n userName: [null, [Validators.required, Validators.minLength(3)]],\r\n method: [1, [Validators.required]],\r\n cpf: [null, [Validators.required, Validators.minLength(14)]],\r\n phone: [null, [Validators.required]],\r\n cardConsumo: [null, [Validators.required]],\r\n card: this.formBuilder.group({\r\n cardNumber: [null, [Validators.required, Validators.minLength(16)]],\r\n cvv: [null, [Validators.required, Validators.minLength(3)]],\r\n dateExp: [null, [Validators.required, Validators.minLength(5)]],\r\n }),\r\n });\r\n console.log(this.form, \"form\");\r\n }\r\n\r\n /**\r\n * Altera os validadores do form para que o botão de enviar pedido seja liberado\r\n */\r\n toggleValidators(method: number): void {\r\n console.log(this.form, \"form\");\r\n // Pega os campos\r\n const cardNumberField = this.form.get(\"card.cardNumber\");\r\n const cvvField = this.form.get(\"card.cvv\");\r\n const dateExpField = this.form.get(\"card.dateExp\");\r\n const cpfField = this.form.get(\"cpf\");\r\n const consumoField = this.form.get(\"cardConsumo\");\r\n\r\n // Checa o método de pagamento\r\n if (method == 3) {\r\n // Limpa validadores\r\n cardNumberField.clearValidators();\r\n cvvField.clearValidators();\r\n dateExpField.clearValidators();\r\n\r\n cardNumberField.updateValueAndValidity();\r\n cvvField.updateValueAndValidity();\r\n dateExpField.updateValueAndValidity();\r\n\r\n // Adiciona os validadores\r\n consumoField.setValidators([Validators.required]);\r\n cpfField.setValidators([Validators.required, Validators.minLength(14)]);\r\n\r\n consumoField.updateValueAndValidity();\r\n cpfField.updateValueAndValidity();\r\n } else {\r\n // Limpa validadores\r\n consumoField.clearValidators();\r\n consumoField.updateValueAndValidity();\r\n // Adiciona os validadores\r\n cardNumberField.setValidators([\r\n Validators.required,\r\n Validators.minLength(16),\r\n ]);\r\n cvvField.setValidators([Validators.required, Validators.minLength(3)]);\r\n dateExpField.setValidators([\r\n Validators.required,\r\n Validators.minLength(5),\r\n ]);\r\n cpfField.setValidators([Validators.required, Validators.minLength(14)]);\r\n\r\n cardNumberField.updateValueAndValidity();\r\n cvvField.updateValueAndValidity();\r\n dateExpField.updateValueAndValidity();\r\n cpfField.updateValueAndValidity();\r\n }\r\n\r\n // this.form.updateValueAndValidity()\r\n\r\n // Atualiza os valores dos campos e faz a validação deles\r\n // if(method == 1){\r\n // cardNumberField.updateValueAndValidity()\r\n // cvvField.updateValueAndValidity()\r\n // dateExpField.updateValueAndValidity()\r\n // cpfField.updateValueAndValidity()\r\n // }else{\r\n // consumoField.updateValueAndValidity()\r\n // cpfField.updateValueAndValidity()\r\n // }\r\n }\r\n\r\n /**\r\n * Fecha o modal sem enviar nada e com a role 'cancel'\r\n */\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n\r\n /**\r\n * Fecha o modal e retorna os dados digitados\r\n */\r\n confirmData(method: number) {\r\n if (method == 1) {\r\n const formattedData = {\r\n userName: this.form.value.userName,\r\n phone: (this.form.value.phone + \"\").replace(/[^0-9]/gm, \"\"),\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n method: this.form.value.method,\r\n card: new Card({\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n cvv: this.form.value.card?.cvv,\r\n monthExp: this.form.value.card?.dateExp?.substr(5, 2),\r\n yearExp: this.form.value.card?.dateExp?.substr(2, 2),\r\n titular: this.form.value.userName,\r\n num: this.form.value.card?.cardNumber?.replace(/[^0-9]/gm, \"\"),\r\n }),\r\n };\r\n this.modalCtrl.dismiss(formattedData, \"confirm\");\r\n } else {\r\n const restid = this.config.restauranteId;\r\n const nroCard = this.form.value.cardConsumo;\r\n const totalCart = this.cartService.getTotalValue();\r\n\r\n this.saldoCartao$ = this.payment.getSaldoConsumo(restid, nroCard);\r\n this.saldoCartao$.subscribe((data) => {\r\n if (data != null) {\r\n this.cardCliente = {\r\n cartaoid: data.cartaoConsumoId,\r\n nro: data.numero,\r\n saldo: data.saldoAtual,\r\n };\r\n if (totalCart > this.cardCliente.saldo) {\r\n let saldo = this.utils.convert(\r\n this.cardCliente.saldo,\r\n \"numberToPriceBr\"\r\n );\r\n this.alerta.alertaMsg(\r\n \"Saldo Atual: R$ \" + saldo,\r\n \"Saldo insuficiente\"\r\n );\r\n return;\r\n }\r\n const formattedData = {\r\n userName: this.form.value.userName,\r\n phone: (this.form.value.phone + \"\").replace(/[^0-9]/gm, \"\"),\r\n cpf: this.form.value.cpf?.replace(/[^0-9]/gm, \"\"),\r\n method: this.form.value.method,\r\n cardConsumo: new cardConsumo({\r\n cartaoConsumoId: this.cardCliente.cartaoid,\r\n numero: this.cardCliente.nro,\r\n saldoAtual: this.cardCliente.saldo,\r\n }),\r\n };\r\n this.modalCtrl.dismiss(formattedData, \"confirm\");\r\n } else {\r\n this.alerta.alertaMsg(\r\n \"Cartão inexistente ou não cadastrado\",\r\n \"ATENÇÃO!\"\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Pergunta se o usuário verificou os dados digitados\r\n */\r\n next(method: number) {\r\n this.alertCtrl\r\n .create({\r\n message:\r\n \"Clique em OK se estiver tudo certo, ou clique em cancelar e revise os dados.\",\r\n animated: true,\r\n header: \"Atenção!\",\r\n mode: \"ios\",\r\n buttons: [\r\n {\r\n text: \"OK\",\r\n handler: () => this.confirmData(method),\r\n },\r\n {\r\n text: \"Cancelar\",\r\n cssClass: \"alert_font_cancel\",\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n}\r\n","export default \"ion-content {\\n --background: url(\\\"/assets/background/background.jpeg\\\") no-repeat center\\n center / cover;\\n}\\nion-content #header {\\n height: 30%;\\n background: #2d2d2d;\\n display: flex;\\n flex-direction: column;\\n color: #ffffff;\\n}\\nion-content #header #app-bar {\\n height: 60px;\\n padding: 0 16px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\nion-content #header #app-bar ion-icon {\\n font-size: 24px;\\n}\\nion-content #header #app-bar .cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\nion-content #header #logo {\\n width: 100px;\\n height: 100px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: 20px;\\n align-self: center;\\n margin-top: 10%;\\n background: #2d2d2d;\\n}\\nion-content #header #logo img {\\n width: 90%;\\n}\\nion-content #header #logoV {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoV img {\\n margin-top: 10px;\\n width: 30%;\\n background-color: var(--ion-color-dark);\\n border-radius: 20px;\\n}\\nion-content #header #logoH {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoH img {\\n width: 10%;\\n background-color: var(--ion-color-dark);\\n border-radius: 20px;\\n}\\nion-content #header h2 {\\n text-align: center;\\n font-weight: bold;\\n margin: 0;\\n font-size: 20px;\\n letter-spacing: 1px;\\n margin-top: 5px;\\n color: #f6f6f6;\\n}\\nion-content .wrapper {\\n position: absolute;\\n top: 30%;\\n left: 4%;\\n right: 4%;\\n}\\nion-content .wrapper .form-wrapper {\\n box-shadow: none;\\n border-radius: 0 0 5px 5px;\\n}\\nion-content .wrapper .form-wrapper ion-item {\\n --background: #efefef;\\n --padding-start: 10px;\\n --highlight-height: 0;\\n --border-width: 0;\\n --padding-top: 0;\\n --min-height: 40px;\\n margin-bottom: 7px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-icon {\\n font-size: 18px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-input {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-label {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-button {\\n margin-top: 25px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-datetime {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-card-content {\\n --background: #f4f4f4;\\n padding: 10px;\\n}\\nion-content .wrapper .line-text {\\n /* padding: 0 30px;\\n position: relative;*/\\n height: 36px;\\n margin-top: 30px;\\n background-color: #2d2d2d;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: 5px 5px 0 0;\\n /* .lines {\\n height: 1px;\\n background: #858585;\\n display: block;\\n } */\\n}\\nion-content .wrapper .line-text .text {\\n font-size: 13px;\\n font-weight: 600;\\n color: #f4f4f4;\\n}\\nion-card {\\n padding: 0;\\n margin: 0;\\n}\\n.cancel-action-btn {\\n z-index: 99999 !important;\\n}\\n.cancel-action-btn * {\\n z-index: 99999 !important;\\n}\\n#sub {\\n width: 100%;\\n display: flex;\\n justify-content: center;\\n margin-top: 10px;\\n margin-bottom: 10px;\\n}\\n#sub h2 {\\n background-color: #f4f4f4;\\n padding: 3px 10px 3px 10px;\\n border-radius: 7px;\\n font-size: 14px !important;\\n color: #2d2d2d !important;\\n}\\n.full-width {\\n width: 100% !important;\\n}\\n/* old css\\n.img-wrapper {\\n img {\\n height: 128px;\\n width: 128px;\\n }\\n}\\n\\n\\n\\n.confirm-label {\\n text-transform: uppercase;\\n}\\n\\n.confirm-button {\\n position: absolute;\\n bottom: 0;\\n width: 100vw;\\n}*/\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1yZXF1ZXN0LWdlc3Rvci9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFx2MlxcZmluaXNoaW5nLXBhZ2VzXFx1c2VyLWluZm8tcmVxdWVzdC1nZXN0b3JcXHVzZXItaW5mby1yZXF1ZXN0LWdlc3Rvci5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy91c2VyLWluZm8tcmVxdWVzdC1nZXN0b3IvdXNlci1pbmZvLXJlcXVlc3QtZ2VzdG9yLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFO2tCQUFBO0FDRUY7QURDRTtFQUNFLFdBQUE7RUFDQSxtQkFBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7QUNDSjtBRENJO0VBQ0UsWUFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0VBQ0EsOEJBQUE7RUFDQSxtQkFBQTtBQ0NOO0FEQ007RUFDRSxlQUFBO0FDQ1I7QURFTTtFQUNFLGVBQUE7RUFDQSxTQUFBO0VBQ0EsT0FBQTtFQUNBLFVBQUE7QUNBUjtBRElJO0VBQ0UsWUFBQTtFQUNBLGFBQUE7RUFDQSxhQUFBO0VBQ0EsdUJBQUE7RUFDQSxtQkFBQTtFQUNBLG1CQUFBO0VBQ0Esa0JBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7QUNGTjtBRElNO0VBQ0UsVUFBQTtBQ0ZSO0FETUk7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7QUNKTjtBRE1NO0VBQ0UsZ0JBQUE7RUFDQSxVQUFBO0VBQ0EsdUNBQUE7RUFDQSxtQkFBQTtBQ0pSO0FEUUk7RUFDRSxhQUFBO0VBQ0EsdUJBQUE7QUNOTjtBRFFNO0VBQ0UsVUFBQTtFQUNBLHVDQUFBO0VBQ0EsbUJBQUE7QUNOUjtBRFVJO0VBQ0Usa0JBQUE7RUFDQSxpQkFBQTtFQUNBLFNBQUE7RUFDQSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQ1JOO0FEWUU7RUFDRSxrQkFBQTtFQUNBLFFBQUE7RUFDQSxRQUFBO0VBQ0EsU0FBQTtBQ1ZKO0FEWUk7RUFDRSxnQkFBQTtFQUNBLDBCQUFBO0FDVk47QURZTTtFQUNFLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxxQkFBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxrQkFBQTtFQUNBLGtCQUFBO0FDVlI7QURZUTtFQUNFLGVBQUE7QUNWVjtBRGFRO0VBQ0UsaUJBQUE7RUFDQSxlQUFBO0VBQ0EsY0FBQTtBQ1hWO0FEY1E7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDWlY7QURlUTtFQUNFLGdCQUFBO0FDYlY7QURnQlE7RUFDRSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDZFY7QURrQk07RUFDRSxxQkFBQTtFQUNBLGFBQUE7QUNoQlI7QURvQkk7RUFDRTtzQkFBQTtFQUVBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLHlCQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSwwQkFBQTtFQUVBOzs7O0tBQUE7QUNmTjtBRHFCTTtFQUNFLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNuQlI7QUR5QkE7RUFDRSxVQUFBO0VBQ0EsU0FBQTtBQ3RCRjtBRHlCQTtFQUNFLHlCQUFBO0FDdEJGO0FEd0JFO0VBQ0UseUJBQUE7QUN0Qko7QUQwQkE7RUFDRSxXQUFBO0VBQ0EsYUFBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtBQ3ZCRjtBRHlCRTtFQUNFLHlCQUFBO0VBQ0EsMEJBQUE7RUFDQSxrQkFBQTtFQUNBLDBCQUFBO0VBQ0EseUJBQUE7QUN2Qko7QUQyQkE7RUFDRSxzQkFBQTtBQ3hCRjtBRDJCQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQUEiLCJmaWxlIjoic3JjL2FwcC92Mi9maW5pc2hpbmctcGFnZXMvdXNlci1pbmZvLXJlcXVlc3QtZ2VzdG9yL3VzZXItaW5mby1yZXF1ZXN0LWdlc3Rvci5wYWdlLnNjc3MiLCJzb3VyY2VzQ29udGVudCI6WyJpb24tY29udGVudCB7XHJcbiAgLS1iYWNrZ3JvdW5kOiB1cmwoXCIvYXNzZXRzL2JhY2tncm91bmQvYmFja2dyb3VuZC5qcGVnXCIpIG5vLXJlcGVhdCBjZW50ZXJcclxuICAgIGNlbnRlciAvIGNvdmVyOyAvLyNlMGRmZTY7Ly92YXIoLS1pb24tY29sb3ItZGFyayk7XHJcblxyXG4gICNoZWFkZXIge1xyXG4gICAgaGVpZ2h0OiAzMCU7XHJcbiAgICBiYWNrZ3JvdW5kOiAjMmQyZDJkOyAvLyNmMmU2MWQgemltbWVyXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgIGNvbG9yOiAjZmZmZmZmO1xyXG5cclxuICAgICNhcHAtYmFyIHtcclxuICAgICAgaGVpZ2h0OiA2MHB4O1xyXG4gICAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgIGlvbi1pY29uIHtcclxuICAgICAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5jYW5jZWwtYWN0aW9uLWJ0biB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMTBweDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAjbG9nbyB7XHJcbiAgICAgIHdpZHRoOiAxMDBweDtcclxuICAgICAgaGVpZ2h0OiAxMDBweDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcclxuICAgICAgbWFyZ2luLXRvcDogMTAlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjMmQyZDJkO1xyXG5cclxuICAgICAgaW1nIHtcclxuICAgICAgICB3aWR0aDogOTAlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgI2xvZ29WIHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblxyXG4gICAgICBpbWcge1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgICAgICAgd2lkdGg6IDMwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICNsb2dvSCB7XHJcbiAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cclxuICAgICAgaW1nIHtcclxuICAgICAgICB3aWR0aDogMTAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaDIge1xyXG4gICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcclxuICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICBjb2xvcjogI2Y2ZjZmNjsgLy8gZGFyayAjMjMyNTI5XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAud3JhcHBlciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDMwJTtcclxuICAgIGxlZnQ6IDQlO1xyXG4gICAgcmlnaHQ6IDQlO1xyXG5cclxuICAgIC5mb3JtLXdyYXBwZXIge1xyXG4gICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAwIDAgNXB4IDVweDtcclxuXHJcbiAgICAgIGlvbi1pdGVtIHtcclxuICAgICAgICAtLWJhY2tncm91bmQ6ICNlZmVmZWY7XHJcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAxMHB4O1xyXG4gICAgICAgIC0taGlnaGxpZ2h0LWhlaWdodDogMDtcclxuICAgICAgICAtLWJvcmRlci13aWR0aDogMDtcclxuICAgICAgICAtLXBhZGRpbmctdG9wOiAwO1xyXG4gICAgICAgIC0tbWluLWhlaWdodDogNDBweDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiA3cHg7XHJcblxyXG4gICAgICAgIGlvbi1pY29uIHtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMThweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlvbi1pbnB1dCB7XHJcbiAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW9uLWxhYmVsIHtcclxuICAgICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgY29sb3I6ICM1ZTVlNWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpb24tYnV0dG9uIHtcclxuICAgICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpb24tZGF0ZXRpbWUge1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICBjb2xvcjogIzVlNWU1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlvbi1jYXJkLWNvbnRlbnQge1xyXG4gICAgICAgIC0tYmFja2dyb3VuZDogI2Y0ZjRmNDtcclxuICAgICAgICBwYWRkaW5nOiAxMHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmxpbmUtdGV4dCB7XHJcbiAgICAgIC8qIHBhZGRpbmc6IDAgMzBweDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlOyovXHJcbiAgICAgIGhlaWdodDogMzZweDtcclxuICAgICAgbWFyZ2luLXRvcDogMzBweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzJkMmQyZDtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwO1xyXG5cclxuICAgICAgLyogLmxpbmVzIHtcclxuICAgICAgICBoZWlnaHQ6IDFweDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjODU4NTg1O1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9ICovXHJcblxyXG4gICAgICAudGV4dCB7XHJcbiAgICAgICAgZm9udC1zaXplOiAxM3B4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgY29sb3I6ICNmNGY0ZjQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmlvbi1jYXJkIHtcclxuICBwYWRkaW5nOiAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhbmNlbC1hY3Rpb24tYnRuIHtcclxuICB6LWluZGV4OiA5OTk5OSAhaW1wb3J0YW50O1xyXG5cclxuICAqIHtcclxuICAgIHotaW5kZXg6IDk5OTk5ICFpbXBvcnRhbnQ7XHJcbiAgfVxyXG59XHJcblxyXG4jc3ViIHtcclxuICB3aWR0aDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIG1hcmdpbi10b3A6IDEwcHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHJcbiAgaDIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y0ZjRmNDtcclxuICAgIHBhZGRpbmc6IDNweCAxMHB4IDNweCAxMHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogN3B4O1xyXG4gICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XHJcbiAgICBjb2xvcjogIzJkMmQyZCAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLmZ1bGwtd2lkdGgge1xyXG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbn1cclxuXHJcbi8qIG9sZCBjc3NcclxuLmltZy13cmFwcGVyIHtcclxuICAgIGltZyB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMjhweDtcclxuICAgICAgICB3aWR0aDogMTI4cHg7XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG5cclxuLmNvbmZpcm0tbGFiZWwge1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxufVxyXG5cclxuLmNvbmZpcm0tYnV0dG9uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHdpZHRoOiAxMDB2dztcclxufSovXHJcbiIsImlvbi1jb250ZW50IHtcbiAgLS1iYWNrZ3JvdW5kOiB1cmwoXCIvYXNzZXRzL2JhY2tncm91bmQvYmFja2dyb3VuZC5qcGVnXCIpIG5vLXJlcGVhdCBjZW50ZXJcbiAgICBjZW50ZXIgLyBjb3Zlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIge1xuICBoZWlnaHQ6IDMwJTtcbiAgYmFja2dyb3VuZDogIzJkMmQyZDtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgY29sb3I6ICNmZmZmZmY7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNhcHAtYmFyIHtcbiAgaGVpZ2h0OiA2MHB4O1xuICBwYWRkaW5nOiAwIDE2cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2FwcC1iYXIgaW9uLWljb24ge1xuICBmb250LXNpemU6IDI0cHg7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNhcHAtYmFyIC5jYW5jZWwtYWN0aW9uLWJ0biB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAxMHB4O1xuICBsZWZ0OiAwO1xuICB6LWluZGV4OiAxO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nbyB7XG4gIHdpZHRoOiAxMDBweDtcbiAgaGVpZ2h0OiAxMDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgbWFyZ2luLXRvcDogMTAlO1xuICBiYWNrZ3JvdW5kOiAjMmQyZDJkO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nbyBpbWcge1xuICB3aWR0aDogOTAlO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nb1Yge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29WIGltZyB7XG4gIG1hcmdpbi10b3A6IDEwcHg7XG4gIHdpZHRoOiAzMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29IIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNsb2dvSCBpbWcge1xuICB3aWR0aDogMTAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG5pb24tY29udGVudCAjaGVhZGVyIGgyIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgbWFyZ2luOiAwO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGxldHRlci1zcGFjaW5nOiAxcHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbiAgY29sb3I6ICNmNmY2ZjY7XG59XG5pb24tY29udGVudCAud3JhcHBlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAzMCU7XG4gIGxlZnQ6IDQlO1xuICByaWdodDogNCU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIHtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDVweCA1cHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIHtcbiAgLS1iYWNrZ3JvdW5kOiAjZWZlZmVmO1xuICAtLXBhZGRpbmctc3RhcnQ6IDEwcHg7XG4gIC0taGlnaGxpZ2h0LWhlaWdodDogMDtcbiAgLS1ib3JkZXItd2lkdGg6IDA7XG4gIC0tcGFkZGluZy10b3A6IDA7XG4gIC0tbWluLWhlaWdodDogNDBweDtcbiAgbWFyZ2luLWJvdHRvbTogN3B4O1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24taWNvbiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWlucHV0IHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICM1ZTVlNWU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1sYWJlbCB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24tYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMjVweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWRhdGV0aW1lIHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICM1ZTVlNWU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1jYXJkLWNvbnRlbnQge1xuICAtLWJhY2tncm91bmQ6ICNmNGY0ZjQ7XG4gIHBhZGRpbmc6IDEwcHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAubGluZS10ZXh0IHtcbiAgLyogcGFkZGluZzogMCAzMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7Ki9cbiAgaGVpZ2h0OiAzNnB4O1xuICBtYXJnaW4tdG9wOiAzMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQyZDJkO1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7XG4gIC8qIC5saW5lcyB7XG4gICAgaGVpZ2h0OiAxcHg7XG4gICAgYmFja2dyb3VuZDogIzg1ODU4NTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfSAqL1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmxpbmUtdGV4dCAudGV4dCB7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgY29sb3I6ICNmNGY0ZjQ7XG59XG5cbmlvbi1jYXJkIHtcbiAgcGFkZGluZzogMDtcbiAgbWFyZ2luOiAwO1xufVxuXG4uY2FuY2VsLWFjdGlvbi1idG4ge1xuICB6LWluZGV4OiA5OTk5OSAhaW1wb3J0YW50O1xufVxuLmNhbmNlbC1hY3Rpb24tYnRuICoge1xuICB6LWluZGV4OiA5OTk5OSAhaW1wb3J0YW50O1xufVxuXG4jc3ViIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAxMHB4O1xuICBtYXJnaW4tYm90dG9tOiAxMHB4O1xufVxuI3N1YiBoMiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNGY0ZjQ7XG4gIHBhZGRpbmc6IDNweCAxMHB4IDNweCAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA3cHg7XG4gIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICBjb2xvcjogIzJkMmQyZCAhaW1wb3J0YW50O1xufVxuXG4uZnVsbC13aWR0aCB7XG4gIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG59XG5cbi8qIG9sZCBjc3Ncbi5pbWctd3JhcHBlciB7XG4gICAgaW1nIHtcbiAgICAgICAgaGVpZ2h0OiAxMjhweDtcbiAgICAgICAgd2lkdGg6IDEyOHB4O1xuICAgIH1cbn1cblxuXG5cbi5jb25maXJtLWxhYmVsIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uY29uZmlybS1idXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDEwMHZ3O1xufSovIl19 */\";","import { take } from \"rxjs/operators\";\r\nimport { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Observable } from \"rxjs\";\r\nimport { AlertController, ModalController } from \"@ionic/angular\";\r\nimport { Localizacao } from \"../../../models/address/localizacao.model\";\r\nimport { AddAddressPage } from \"../../../shared/components/v2/add-address/add-address.page\";\r\nimport { environment } from \"../../../../environments/environment\";\r\nimport { MaskService } from \"../../../services/providers/mask.service\";\r\nimport { AuthService } from \"../../../shared/auth.service\";\r\nimport { CartService } from \"../../../services/cart.service\";\r\nimport { RestaurantService } from \"../../../services/restaurant.service\";\r\nimport { Restaurant } from \"../../../models/restaurant.model\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\nimport { ToastaddService } from \"src/app/services/toastadd.service\";\r\nimport { Cart } from \"src/app/models/cart/cart.model\";\r\nimport { ItemCart } from \"src/app/interfaces/itemCart.interface\";\r\nimport { V2ItemPage } from \"src/app/shared/components/v2/v2-item/v2-item.page\";\r\nimport { UsergestorService } from \"src/app/services/usergestor.service\";\r\n\r\n@Component({\r\n selector: \"app-user-info-request-gestor\",\r\n templateUrl: \"./user-info-request-gestor.page.html\",\r\n styleUrls: [\"./user-info-request-gestor.page.scss\"],\r\n})\r\nexport class UserInfoRequestGestorPage implements OnInit {\r\n form: FormGroup;\r\n tableNumber: string;\r\n rest$: Observable;\r\n isTablet: boolean;\r\n restImagem: any;\r\n logoZimmer: any;\r\n checked: boolean;\r\n isDisabled: boolean = true;\r\n phoneNumberData: any;\r\n confirmado: boolean = false;\r\n cartProds: Cart;\r\n totalFinal: number = 0;\r\n totalFrete: number = 0;\r\n final: number = 0;\r\n bFrete: number = 0;\r\n btn_mensagem: string = \"PREENCHA OS CAMPOS\";\r\n fechado: boolean = false;\r\n retirada: boolean = false;\r\n tempoEntrega: string = \"0 - 0 min\";\r\n tempoRetira: string = \"0 - 0 min\";\r\n\r\n constructor(private auth: AuthService, private alertCtrl: AlertController, private alerta: ToastaddService, private cart: CartService, private formBuilder: FormBuilder, public mask: MaskService, private modalCtrl: ModalController, private restService: RestaurantService, public config: ConfigurationService, private cartService: CartService, private userGestorController: UsergestorService) {\r\n this.isTablet = this.config.isTablet;\r\n this.logoZimmer = \"assets/v2/logo_zimmer.png\";\r\n this.restImagem = this.config.imagemRest.imagem != null ? this.config.imagemRest.imagem : this.logoZimmer;\r\n }\r\n\r\n ngOnInit() {\r\n this.cartProds = this.cartService.getCart();\r\n this.rest$ = this.restService.getRest();\r\n this.retirada = this.restService.getRestaurant()[\"aceitaRetira\"];\r\n const sub = this.auth.getTableV2().subscribe({\r\n next: (tableNumber) => {\r\n this.tableNumber = tableNumber;\r\n this.buildForm();\r\n // sub.unsubscribe()\r\n },\r\n });\r\n\r\n /*this.cartProds.items.forEach((item) => {\r\n if (item.meiomeios.length === 0) {\r\n this.totalFinal +=\r\n (item.produto.valorPromocao ||\r\n item.produto.valorRegular ||\r\n item.produto.valorVenda) * item.number;\r\n\r\n item.cartItemOpcoes.forEach((complementos) => {\r\n this.totalFinal +=\r\n complementos.valor * complementos.quantidade * item.number;\r\n });\r\n } else if (item.meiomeios.length >= 1) {\r\n const maxHalf = item.meiomeios.reduce(function (prev, current) {\r\n return prev.valorVenda > current.valorVenda ? prev : current;\r\n });\r\n\r\n this.totalFinal += maxHalf.valorVendaComplemento * item.number;\r\n }\r\n });*/\r\n\r\n this.rest$.subscribe((restaurante: any) => {\r\n this.tempoEntrega = restaurante.tempoEntrega;\r\n this.tempoRetira = restaurante.tempoRetira;\r\n })\r\n\r\n this.cartProds.items.forEach((option) => (this.totalFinal += this.cartService.calcTotalItemValue(option)));\r\n\r\n this.form.controls[\"valorFinal\"].setValue(\r\n \"Total: \" +\r\n this.totalFinal.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n })\r\n );\r\n this.final = this.totalFinal;\r\n }\r\n\r\n /**\r\n * Monta o form\r\n */\r\n private buildForm() {\r\n this.form = this.formBuilder.group({\r\n userName: [this.userGestorController.getUser()?.nome, [Validators.required]],\r\n userPhone: [this.userGestorController.getUser()?.fone, [Validators.required]],\r\n aquisition: [this.retirada || this.userGestorController.getUser()?.cep ? 1 : 2, [Validators.required]],\r\n address: this.formBuilder.group({\r\n cep: [this.userGestorController.getUser()?.cep],\r\n bairro: [this.userGestorController.getUser()?.bairro],\r\n localidade: [this.userGestorController.getUser()?.localidade],\r\n logradouro: [this.userGestorController.getUser()?.logradouro],\r\n numero: [this.userGestorController.getUser()?.numero],\r\n uf: [this.userGestorController.getUser()?.uf],\r\n complemento: [this.userGestorController.getUser()?.complemento],\r\n }),\r\n payment: [2, [Validators.required]],\r\n change: [null],\r\n observation: [null],\r\n checked: [false],\r\n frete: [\r\n \"Entrega: \" +\r\n this.totalFrete.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n }),\r\n ],\r\n valorFinal: [\r\n \"Total: \" +\r\n this.totalFinal.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n }),\r\n ],\r\n });\r\n }\r\n\r\n /**\r\n * Altera os validadoes do campo de logradouro no form baseado no método de aquisição (ENTREGA ou RETIRADA)\r\n * @param aquisitionMethod\r\n */\r\n changeRequiredOfLogradouro(aquisitionMethod: number) {\r\n const field = this.form.get(\"address.logradouro\");\r\n if (aquisitionMethod == 1) field.clearValidators();\r\n else field.setValidators([Validators.required]);\r\n field.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * Chama o componente de busca de endereço\r\n */\r\n callAddAddressPage() {\r\n this.modalCtrl\r\n .create({\r\n component: AddAddressPage,\r\n id: environment.addAddressModalId,\r\n componentProps: {\r\n address: this.form.value.address.logradouro ? this.form.value.address : undefined,\r\n },\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n // Se retornar success == true na data do dismiss do modal\r\n if (dismiss.data.success) {\r\n // Seta a localização no formulário\r\n const address: Localizacao = dismiss.data.address;\r\n this.form.patchValue({\r\n address,\r\n });\r\n }\r\n });\r\n modal.present();\r\n });\r\n }\r\n\r\n /**\r\n * Fecha o modal com a role 'cancel' sem enviar nenhum dado\r\n */\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n\r\n updateCheck() {\r\n //this.isDisabled = this.form.value.checked ? false : true\r\n this.form.value.change = 0;\r\n console.log(this.form, \"form\");\r\n }\r\n\r\n update() {\r\n this.form.value.change = 0;\r\n console.log(this.form, \"form\");\r\n }\r\n\r\n /**\r\n * Envia o pedido para o gestor\r\n * @param rest\r\n */\r\n confirmInfo(rest: Restaurant) {\r\n console.log(rest, \"rest\");\r\n console.log(this.form.value, \"FORM\");\r\n\r\n const success = this.cart.sendOrderGestor(\r\n {\r\n aquisition: this.form.value.aquisition,\r\n endereco: this.form.value.address,\r\n number: rest.foneCelular,\r\n observation: this.form.value.observation,\r\n pagamento: this.form.value.payment,\r\n troco: this.form.value.change ? this.form.value.change : 0,\r\n userFone: this.form.value.userPhone,\r\n userName: this.form.value.userName,\r\n tableNumber: this.tableNumber,\r\n frete: this.totalFrete,\r\n },\r\n this.form.value.aquisition == 2 ? true : false,\r\n { phone: this.form.value.userPhone }\r\n );\r\n\r\n success.subscribe(\r\n (res: any) => {\r\n if (res === false) {\r\n this.confirmado = false;\r\n return this.alerta.alertaMsg(\"Ocorreu um erro ao realizar o pedido, tente novamente.\", \"ATENÇÃO\");\r\n }\r\n if (res !== false) {\r\n return this.modalCtrl.dismiss(this.form.value, \"confirm\");\r\n }\r\n },\r\n (err: any) => {\r\n this.confirmado = false;\r\n return this.alerta.alertaMsg(\"Ocorreu um erro ao realizar o pedido, tente novamente.\", \"ATENÇÃO\");\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Pergunta se o usuário verificou os dados digitados\r\n */\r\n next(rest: Restaurant) {\r\n const restaurant: any = rest;\r\n this.confirmado = true;\r\n\r\n console.log(restaurant.pedidoMinimo, this.totalFinal, this.totalFrete, \"IWJDUIWuadi\");\r\n\r\n if (restaurant.pedidoMinimo > this.totalFinal - this.totalFrete) {\r\n this.confirmado = false;\r\n return this.alerta.alertaMsg(\"O seu pedido não atende ao valor minimo do restaurante.\", \"ATENÇÃO\");\r\n }\r\n\r\n this.alertCtrl\r\n .create({\r\n message: \"Clique em OK se estiver tudo certo, ou clique em cancelar e revise os dados.\",\r\n animated: true,\r\n header: \"Atenção!\",\r\n mode: \"ios\",\r\n buttons: [\r\n {\r\n text: \"OK\",\r\n handler: () => this.validation(rest),\r\n //this.confirmInfo(rest)\r\n },\r\n {\r\n text: \"Cancelar\",\r\n cssClass: \"alert_font_cancel\",\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n\r\n validation(rest: Restaurant) {\r\n console.log(this.form, \"form\");\r\n\r\n if (this.form.value.payment == 1 && this.form.value.checked) {\r\n if (this.form.value.change == 0) {\r\n this.alerta.alertaMsg(\"Preencha o valor do troco.\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n }\r\n\r\n if (this.form.value.aquisition == 0) {\r\n this.alerta.alertaMsg(\"Escolha uma forma de entrega!\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n\r\n if (this.form.value.aquisition == 2) {\r\n if (this.form.value.address.logradouro == null || this.form.value.address.logradouro == \"\") {\r\n this.alerta.alertaMsg(\"Preencha o nome da rua!\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n if (this.form.value.address.numero == null || this.form.value.address.numero == \"\") {\r\n this.alerta.alertaMsg(\"Preencha o numero!\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n if (this.form.value.address.bairro == null || this.form.value.address.bairro == \"\") {\r\n this.alerta.alertaMsg(\"Preencha o bairro!\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n if (this.form.value.address.localidade == null || this.form.value.address.localidade == \"\") {\r\n this.alerta.alertaMsg(\"Preencha a cidade!\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n if (this.form.value.address.cep == null || this.form.value.address.cep == \"\") {\r\n this.alerta.alertaMsg(\"Preencha o CEP!\", \"ATENÇÃO\");\r\n this.confirmado = false;\r\n return;\r\n }\r\n }\r\n this.confirmInfo(rest);\r\n }\r\n\r\n freteCalcv(cep: string | number | any = this.form.value.address.cep && this.form.value.aquisition === 2 ? this.form.value.address.cep : this.restService.getRestaurant().cep) {\r\n let x = [cep.slice(0, 5), \"-\", cep.slice(5)].join(\"\");\r\n\r\n cep = x;\r\n\r\n if (cep && cep.length == 9 ? cep : this.form.value.address.cep && this.form.value.address.cep.length == 9 ? this.form.value.address.cep : \"00000-000\") {\r\n this.rest$.subscribe((restaurante) => {\r\n this.restService.getByToken(cep && cep.length == 9 ? cep : this.form.value.address.cep && this.form.value.address.cep.length == 9 ? this.form.value.address.cep : \"00000-000\", restaurante.token).subscribe((result: any) => {\r\n if (result.results[0].valorEntrega && !isNaN(result.results[0].valorEntrega) && result.results[0].valorEntrega !== 0) {\r\n this.totalFrete = result.results[0].valorEntrega;\r\n\r\n this.form.controls[\"frete\"].setValue(\r\n \"Entrega: \" +\r\n this.totalFrete.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n })\r\n );\r\n\r\n this.totalFinal = this.final + result.results[0].valorEntrega;\r\n\r\n this.form.controls[\"valorFinal\"].setValue(\r\n \"Total: \" +\r\n this.totalFinal.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n })\r\n );\r\n\r\n this.bFrete = result.results[0].valorEntrega;\r\n\r\n setTimeout(() => {\r\n if (this.form.value.aquisition === 1) {\r\n this.totalFinal = this.totalFinal - this.totalFrete;\r\n this.totalFrete = 0;\r\n\r\n this.form.controls[\"frete\"].setValue(\r\n \"Entrega: \" +\r\n this.totalFrete.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n })\r\n );\r\n\r\n this.form.controls[\"valorFinal\"].setValue(\r\n \"Total: \" +\r\n this.totalFinal.toLocaleString(\"pt-br\", {\r\n style: \"currency\",\r\n currency: \"BRL\",\r\n })\r\n );\r\n }\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n this.fechado = false;\r\n if (!this.form.value.userName) {\r\n return (this.btn_mensagem = \"PREENCHA SEU NOME\");\r\n } else if (!this.form.value.userPhone || (this.form.value.userPhone.length !== 14 && this.form.value.userPhone.length !== 13)) {\r\n return (this.btn_mensagem = \"PREENCHA SEU TELEFONE\");\r\n } else if (result.results[0].status === \"AREA SEM COBERTURA\") {\r\n this.btn_mensagem = \"ÁREA SEM COBERTURA\";\r\n } else if (result.results[0].status === \"FECHADO\") {\r\n this.btn_mensagem = \"RESTAURANTE FECHADO\";\r\n } else if (result.results[0].status === \"SEJA BEM VINDO.\") {\r\n this.btn_mensagem = \"FINALIZAR PEDIDO\";\r\n } else if (this.form.value.aquisition === 2 && (!this.form.value.address.cep || !this.form.value.address.bairro || !this.form.value.address.localidade || !this.form.value.address.logradouro || !this.form.value.address.numero || !this.form.value.address.uf)) {\r\n return (this.btn_mensagem = \"PREENCHA A ENTREGA\");\r\n } else if (result.results[0].status.includes(\"FECHADO\") && result.results[0].status.includes(\"abre\")) {\r\n this.fechado = true;\r\n this.btn_mensagem = \"RESTAURANTE FECHADO (ABRE AS \" + new Date(result.results[0].abreAs).toLocaleTimeString().slice(0, 5) + \")\";\r\n }\r\n });\r\n });\r\n });\r\n }\r\n }\r\n\r\n viacep() {\r\n setTimeout(() => {\r\n let cep = this.form.value.address.cep;\r\n\r\n console.log(cep);\r\n\r\n if (cep && cep.length === 9) {\r\n this.cartService\r\n .getAddressDataUsingCEP(cep)\r\n .pipe(take(1))\r\n .subscribe((res: any) => {\r\n this.form.controls[\"address\"].setValue({\r\n cep: res.cep,\r\n bairro: res.bairro,\r\n localidade: res.localidade,\r\n logradouro: res.logradouro,\r\n numero: null,\r\n uf: res.uf,\r\n complemento: res.complemento,\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n persistOnlyNumbers(event: any) {\r\n let characterCode = event.which ? event.which : event.keyCode;\r\n\r\n if (characterCode > 31 && (characterCode < 48 || characterCode > 57)) return false;\r\n return true;\r\n }\r\n\r\n getPhoneData(phone: string) {\r\n this.cart.getPhoneDataGestor(phone).subscribe(\r\n (res: any) => {\r\n if (res && res.logradouro && res.numero && res.bairro && res.cep && res.localidade && res.uf) {\r\n this.form.controls[\"aquisition\"].setValue(2);\r\n this.form.controls[\"address\"].setValue({\r\n cep: res.cep,\r\n bairro: res.bairro,\r\n localidade: res.localidade,\r\n logradouro: res.logradouro,\r\n numero: res.numero,\r\n uf: res.uf,\r\n complemento: res.complemento,\r\n });\r\n this.freteCalcv(res.cep);\r\n }\r\n },\r\n (err) => {\r\n console.log(err);\r\n }\r\n );\r\n }\r\n\r\n clearFormAddress() {\r\n this.form.controls[\"address\"].setValue({\r\n cep: null,\r\n bairro: null,\r\n localidade: null,\r\n logradouro: null,\r\n numero: null,\r\n uf: null,\r\n complemento: null,\r\n });\r\n }\r\n\r\n showDetails(item: ItemCart) {\r\n this.modalCtrl\r\n .create({\r\n component: V2ItemPage,\r\n componentProps: {\r\n itemCart: item,\r\n },\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => modal.present());\r\n console.log(\"Carrinho:\", this.cart);\r\n }\r\n\r\n verifyPhone() {\r\n if ((this.form.value.userPhone?.length === 13 || this.form.value.userPhone?.length === 14) && !this.form.value.address.cep) {\r\n this.getPhoneData(this.form.value.userPhone);\r\n }\r\n }\r\n}\r\n","export default \"ion-content {\\n --background: url(\\\"/assets/background/background.jpeg\\\") no-repeat center center / cover;\\n}\\nion-content #header {\\n height: 40%;\\n background: #f2e61d;\\n display: flex;\\n flex-direction: column;\\n color: #ffffff;\\n border-radius: 0px 0px 20px 20px;\\n}\\nion-content #header #app-bar {\\n height: 60px;\\n padding: 0 16px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n}\\nion-content #header #app-bar ion-icon {\\n font-size: 24px;\\n}\\nion-content #header #app-bar .cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\nion-content #header #logo {\\n width: 100px;\\n height: 100px;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n border-radius: 20px;\\n align-self: center;\\n margin-top: 10%;\\n background: #f2e61d;\\n}\\nion-content #header #logo img {\\n width: 90%;\\n}\\nion-content #header #logoV {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoV img {\\n margin-top: 10px;\\n width: 30%;\\n background-color: var(--ion-color-dark);\\n border-radius: 20px;\\n}\\nion-content #header #logoH {\\n display: flex;\\n justify-content: center;\\n}\\nion-content #header #logoH img {\\n width: 10%;\\n background-color: var(--ion-color-dark);\\n border-radius: 20px;\\n}\\nion-content #header h2 {\\n text-align: center;\\n font-weight: bold;\\n margin: 0;\\n font-size: 20px;\\n letter-spacing: 1px;\\n margin-top: 5px;\\n color: #232529;\\n}\\nion-content .wrapper {\\n position: absolute;\\n top: 30%;\\n left: 4%;\\n right: 4%;\\n}\\nion-content .wrapper .form-wrapper {\\n box-shadow: none;\\n border-radius: 20px;\\n padding: 15px 10px;\\n}\\nion-content .wrapper .form-wrapper ion-item {\\n --background: #efefef;\\n --padding-start: 10px;\\n --highlight-height: 0;\\n --border-width: 0;\\n --padding-top: 0;\\n --min-height: 40px;\\n margin-bottom: 15px;\\n border-radius: 5px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-icon {\\n font-size: 18px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-input {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-label {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-button {\\n margin-top: 25px;\\n}\\nion-content .wrapper .form-wrapper ion-item ion-datetime {\\n margin-left: 10px;\\n font-size: 14px;\\n color: #5e5e5e;\\n}\\nion-content .wrapper .line-text {\\n padding: 0 30px;\\n position: relative;\\n height: 20px;\\n margin-top: 30px;\\n}\\nion-content .wrapper .line-text .lines {\\n height: 1px;\\n background: #858585;\\n display: block;\\n}\\nion-content .wrapper .line-text .text {\\n position: absolute;\\n top: -7px;\\n left: 50%;\\n transform: translateX(-50%);\\n background: #e0dfe6;\\n padding: 0 16px;\\n font-size: 10px;\\n font-weight: 500;\\n color: #5e5e5e;\\n}\\n/* old css\\n.img-wrapper {\\n img {\\n height: 128px;\\n width: 128px;\\n }\\n}\\n\\n.cancel-action-btn {\\n position: fixed;\\n top: 10px;\\n left: 0;\\n z-index: 1;\\n}\\n\\n.confirm-label {\\n text-transform: uppercase;\\n}\\n\\n.confirm-button {\\n position: absolute;\\n bottom: 0;\\n width: 100vw;\\n}*/\\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1yZXF1ZXN0LXphcC9DOlxcVXNlcnNcXFVzZXJcXERlc2t0b3BcXFByb2pldG9zXFxJb25pY1xcWmltbWVyL3NyY1xcYXBwXFx2MlxcZmluaXNoaW5nLXBhZ2VzXFx1c2VyLWluZm8tcmVxdWVzdC16YXBcXHVzZXItaW5mby1yZXF1ZXN0LXphcC5wYWdlLnNjc3MiLCJzcmMvYXBwL3YyL2ZpbmlzaGluZy1wYWdlcy91c2VyLWluZm8tcmVxdWVzdC16YXAvdXNlci1pbmZvLXJlcXVlc3QtemFwLnBhZ2Uuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNJLHVGQUFBO0FDQ0o7QURDSTtFQUNFLFdBQUE7RUFDQSxtQkFBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtFQUNBLGNBQUE7RUFDQSxnQ0FBQTtBQ0NOO0FEQ007RUFDSSxZQUFBO0VBQ0EsZUFBQTtFQUNBLGFBQUE7RUFDQSw4QkFBQTtFQUNBLG1CQUFBO0FDQ1Y7QURDVTtFQUNJLGVBQUE7QUNDZDtBREVVO0VBQ0UsZUFBQTtFQUNBLFNBQUE7RUFDQSxPQUFBO0VBQ0EsVUFBQTtBQ0FaO0FES007RUFDSSxZQUFBO0VBQ0EsYUFBQTtFQUNBLGFBQUE7RUFDQSx1QkFBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtBQ0hWO0FES1U7RUFDSSxVQUFBO0FDSGQ7QURPSTtFQUNJLGFBQUE7RUFDQSx1QkFBQTtBQ0xSO0FET1E7RUFDSSxnQkFBQTtFQUNBLFVBQUE7RUFDQSx1Q0FBQTtFQUNBLG1CQUFBO0FDTFo7QURTSTtFQUNJLGFBQUE7RUFDQSx1QkFBQTtBQ1BSO0FEU1E7RUFDSSxVQUFBO0VBQ0EsdUNBQUE7RUFDQSxtQkFBQTtBQ1BaO0FEV007RUFDSSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsU0FBQTtFQUNBLGVBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDVFY7QURhSTtFQUNJLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLFFBQUE7RUFDQSxTQUFBO0FDWFI7QURhUTtFQUNJLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ1haO0FEYVk7RUFDSSxxQkFBQTtFQUNBLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0FDWGhCO0FEYWdCO0VBQ0ksZUFBQTtBQ1hwQjtBRGNnQjtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUNacEI7QURlZ0I7RUFDSSxpQkFBQTtFQUNBLGVBQUE7RUFDQSxjQUFBO0FDYnBCO0FEZ0JnQjtFQUNJLGdCQUFBO0FDZHBCO0FEaUJnQjtFQUNJLGlCQUFBO0VBQ0EsZUFBQTtFQUNBLGNBQUE7QUNmcEI7QURvQlE7RUFDSSxlQUFBO0VBQ0Esa0JBQUE7RUFDQSxZQUFBO0VBQ0EsZ0JBQUE7QUNsQlo7QURvQlk7RUFDSSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxjQUFBO0FDbEJoQjtBRHFCWTtFQUNJLGtCQUFBO0VBQ0EsU0FBQTtFQUNBLFNBQUE7RUFDQSwyQkFBQTtFQUNBLG1CQUFBO0VBQ0EsZUFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLGNBQUE7QUNuQmhCO0FEMkJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQUFBIiwiZmlsZSI6InNyYy9hcHAvdjIvZmluaXNoaW5nLXBhZ2VzL3VzZXItaW5mby1yZXF1ZXN0LXphcC91c2VyLWluZm8tcmVxdWVzdC16YXAucGFnZS5zY3NzIiwic291cmNlc0NvbnRlbnQiOlsiaW9uLWNvbnRlbnR7XHJcbiAgICAtLWJhY2tncm91bmQ6IHVybChcIi9hc3NldHMvYmFja2dyb3VuZC9iYWNrZ3JvdW5kLmpwZWdcIikgbm8tcmVwZWF0IGNlbnRlciBjZW50ZXIgLyBjb3ZlcjsvLyNlMGRmZTY7Ly92YXIoLS1pb24tY29sb3ItZGFyayk7XHJcbiAgICBcclxuICAgICNoZWFkZXIge1xyXG4gICAgICBoZWlnaHQ6IDQwJTtcclxuICAgICAgYmFja2dyb3VuZDogI2YyZTYxZDsgLy8jZjJlNjFkIHppbW1lclxyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gICAgICBjb2xvcjogI2ZmZmZmZjtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMHB4IDBweCAyMHB4IDIwcHg7XHJcblxyXG4gICAgICAjYXBwLWJhciB7XHJcbiAgICAgICAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICAgICAgICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAgICAgICBpb24taWNvbiB7XHJcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5jYW5jZWwtYWN0aW9uLWJ0biB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDtcclxuICAgICAgICAgICAgdG9wOiAxMHB4O1xyXG4gICAgICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgIFxyXG4gICAgICB9XHJcblxyXG4gICAgICAjbG9nbyB7XHJcbiAgICAgICAgICB3aWR0aDogMTAwcHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDEwMHB4O1xyXG4gICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICAgICAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiAxMCU7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjJlNjFkO1xyXG5cclxuICAgICAgICAgIGltZyB7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDkwJTtcclxuICAgICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICNsb2dvViB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBcclxuICAgICAgICBpbWcge1xyXG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAxMHB4O1xyXG4gICAgICAgICAgICB3aWR0aDogMzAlO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICNsb2dvSCB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBcclxuICAgICAgICBpbWcge1xyXG4gICAgICAgICAgICB3aWR0aDogMTAlO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICAgaDIge1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgICBtYXJnaW46IDA7XHJcbiAgICAgICAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4O1xyXG4gICAgICAgICAgbWFyZ2luLXRvcDogNXB4O1xyXG4gICAgICAgICAgY29sb3I6ICMyMzI1Mjk7IC8vIGRhcmsgIzIzMjUyOVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLndyYXBwZXIge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDMwJTtcclxuICAgICAgICBsZWZ0OiA0JTtcclxuICAgICAgICByaWdodDogNCU7XHJcblxyXG4gICAgICAgIC5mb3JtLXdyYXBwZXIge1xyXG4gICAgICAgICAgICBib3gtc2hhZG93OiBub25lO1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiAxNXB4IDEwcHg7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpb24taXRlbSB7XHJcbiAgICAgICAgICAgICAgICAtLWJhY2tncm91bmQ6ICNlZmVmZWY7XHJcbiAgICAgICAgICAgICAgICAtLXBhZGRpbmctc3RhcnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAtLWhpZ2hsaWdodC1oZWlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgICAtLWJvcmRlci13aWR0aDogMDtcclxuICAgICAgICAgICAgICAgIC0tcGFkZGluZy10b3A6IDA7XHJcbiAgICAgICAgICAgICAgICAtLW1pbi1oZWlnaHQ6IDQwcHg7XHJcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG4gICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNXB4O1xyXG5cclxuICAgICAgICAgICAgICAgIGlvbi1pY29uIHtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaW9uLWlucHV0IHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM1ZTVlNWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlvbi1sYWJlbCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlvbi1idXR0b24ge1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDI1cHg7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaW9uLWRhdGV0aW1lIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICM1ZTVlNWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmxpbmUtdGV4dCB7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMzBweDtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgICBoZWlnaHQ6IDIwcHg7ICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IDMwcHg7XHJcblxyXG4gICAgICAgICAgICAubGluZXMge1xyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjODU4NTg1O1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IFxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAudGV4dCB7XHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgICB0b3A6IC03cHg7XHJcbiAgICAgICAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZTBkZmU2O1xyXG4gICAgICAgICAgICAgICAgcGFkZGluZzogMCAxNnB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHB4O1xyXG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAjNWU1ZTVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuXHJcbi8qIG9sZCBjc3NcclxuLmltZy13cmFwcGVyIHtcclxuICAgIGltZyB7XHJcbiAgICAgICAgaGVpZ2h0OiAxMjhweDtcclxuICAgICAgICB3aWR0aDogMTI4cHg7XHJcbiAgICB9XHJcbn1cclxuXHJcbi5jYW5jZWwtYWN0aW9uLWJ0biB7XHJcbiAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICB0b3A6IDEwcHg7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgei1pbmRleDogMTtcclxufVxyXG5cclxuLmNvbmZpcm0tbGFiZWwge1xyXG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxufVxyXG5cclxuLmNvbmZpcm0tYnV0dG9uIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGJvdHRvbTogMDtcclxuICAgIHdpZHRoOiAxMDB2dztcclxufSovXHJcbiIsImlvbi1jb250ZW50IHtcbiAgLS1iYWNrZ3JvdW5kOiB1cmwoXCIvYXNzZXRzL2JhY2tncm91bmQvYmFja2dyb3VuZC5qcGVnXCIpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyIC8gY292ZXI7XG59XG5pb24tY29udGVudCAjaGVhZGVyIHtcbiAgaGVpZ2h0OiA0MCU7XG4gIGJhY2tncm91bmQ6ICNmMmU2MWQ7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXItcmFkaXVzOiAwcHggMHB4IDIwcHggMjBweDtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2FwcC1iYXIge1xuICBoZWlnaHQ6IDYwcHg7XG4gIHBhZGRpbmc6IDAgMTZweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjYXBwLWJhciBpb24taWNvbiB7XG4gIGZvbnQtc2l6ZTogMjRweDtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2FwcC1iYXIgLmNhbmNlbC1hY3Rpb24tYnRuIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDEwcHg7XG4gIGxlZnQ6IDA7XG4gIHotaW5kZXg6IDE7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNsb2dvIHtcbiAgd2lkdGg6IDEwMHB4O1xuICBoZWlnaHQ6IDEwMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgYWxpZ24tc2VsZjogY2VudGVyO1xuICBtYXJnaW4tdG9wOiAxMCU7XG4gIGJhY2tncm91bmQ6ICNmMmU2MWQ7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNsb2dvIGltZyB7XG4gIHdpZHRoOiA5MCU7XG59XG5pb24tY29udGVudCAjaGVhZGVyICNsb2dvViB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nb1YgaW1nIHtcbiAgbWFyZ2luLXRvcDogMTBweDtcbiAgd2lkdGg6IDMwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xufVxuaW9uLWNvbnRlbnQgI2hlYWRlciAjbG9nb0gge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgI2xvZ29IIGltZyB7XG4gIHdpZHRoOiAxMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cbmlvbi1jb250ZW50ICNoZWFkZXIgaDIge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW46IDA7XG4gIGZvbnQtc2l6ZTogMjBweDtcbiAgbGV0dGVyLXNwYWNpbmc6IDFweDtcbiAgbWFyZ2luLXRvcDogNXB4O1xuICBjb2xvcjogIzIzMjUyOTtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDMwJTtcbiAgbGVmdDogNCU7XG4gIHJpZ2h0OiA0JTtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIge1xuICBib3gtc2hhZG93OiBub25lO1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBwYWRkaW5nOiAxNXB4IDEwcHg7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIHtcbiAgLS1iYWNrZ3JvdW5kOiAjZWZlZmVmO1xuICAtLXBhZGRpbmctc3RhcnQ6IDEwcHg7XG4gIC0taGlnaGxpZ2h0LWhlaWdodDogMDtcbiAgLS1ib3JkZXItd2lkdGg6IDA7XG4gIC0tcGFkZGluZy10b3A6IDA7XG4gIC0tbWluLWhlaWdodDogNDBweDtcbiAgbWFyZ2luLWJvdHRvbTogMTVweDtcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24taWNvbiB7XG4gIGZvbnQtc2l6ZTogMThweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWlucHV0IHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICM1ZTVlNWU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAuZm9ybS13cmFwcGVyIGlvbi1pdGVtIGlvbi1sYWJlbCB7XG4gIG1hcmdpbi1sZWZ0OiAxMHB4O1xuICBmb250LXNpemU6IDE0cHg7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmZvcm0td3JhcHBlciBpb24taXRlbSBpb24tYnV0dG9uIHtcbiAgbWFyZ2luLXRvcDogMjVweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5mb3JtLXdyYXBwZXIgaW9uLWl0ZW0gaW9uLWRhdGV0aW1lIHtcbiAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICM1ZTVlNWU7XG59XG5pb24tY29udGVudCAud3JhcHBlciAubGluZS10ZXh0IHtcbiAgcGFkZGluZzogMCAzMHB4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGhlaWdodDogMjBweDtcbiAgbWFyZ2luLXRvcDogMzBweDtcbn1cbmlvbi1jb250ZW50IC53cmFwcGVyIC5saW5lLXRleHQgLmxpbmVzIHtcbiAgaGVpZ2h0OiAxcHg7XG4gIGJhY2tncm91bmQ6ICM4NTg1ODU7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuaW9uLWNvbnRlbnQgLndyYXBwZXIgLmxpbmUtdGV4dCAudGV4dCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAtN3B4O1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgYmFja2dyb3VuZDogI2UwZGZlNjtcbiAgcGFkZGluZzogMCAxNnB4O1xuICBmb250LXNpemU6IDEwcHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjNWU1ZTVlO1xufVxuXG4vKiBvbGQgY3NzXG4uaW1nLXdyYXBwZXIge1xuICAgIGltZyB7XG4gICAgICAgIGhlaWdodDogMTI4cHg7XG4gICAgICAgIHdpZHRoOiAxMjhweDtcbiAgICB9XG59XG5cbi5jYW5jZWwtYWN0aW9uLWJ0biB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMTBweDtcbiAgICBsZWZ0OiAwO1xuICAgIHotaW5kZXg6IDE7XG59XG5cbi5jb25maXJtLWxhYmVsIHtcbiAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuXG4uY29uZmlybS1idXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDA7XG4gICAgd2lkdGg6IDEwMHZ3O1xufSovIl19 */\";","import { Component, OnInit } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { AlertController, ModalController } from \"@ionic/angular\";\r\n\r\nimport { Localizacao } from \"../../../models/address/localizacao.model\";\r\nimport { AddAddressPage } from \"../../../shared/components/v2/add-address/add-address.page\";\r\nimport { environment } from \"../../../../environments/environment\";\r\nimport { MaskService } from \"../../../services/providers/mask.service\";\r\nimport { AuthService } from \"../../../shared/auth.service\";\r\nimport { CartService } from \"../../../services/cart.service\";\r\nimport { RestaurantService } from \"../../../services/restaurant.service\";\r\nimport { Restaurant } from \"../../../models/restaurant.model\";\r\nimport { ConfigurationService } from \"src/app/services/configuration.service\";\r\nimport { ToastaddService } from \"src/app/services/toastadd.service\";\r\n\r\n@Component({\r\n selector: \"app-user-info-request-zap\",\r\n templateUrl: \"./user-info-request-zap.page.html\",\r\n styleUrls: [\"./user-info-request-zap.page.scss\"],\r\n})\r\nexport class UserInfoRequestZapPage implements OnInit {\r\n form: FormGroup;\r\n tableNumber: string;\r\n rest$: Observable;\r\n isTablet: boolean;\r\n restImagem: any;\r\n logoZimmer: any;\r\n checked: boolean;\r\n isDisabled: boolean = true;\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private alertCtrl: AlertController,\r\n private alerta: ToastaddService,\r\n private cart: CartService,\r\n private formBuilder: FormBuilder,\r\n public mask: MaskService,\r\n private modalCtrl: ModalController,\r\n private restService: RestaurantService,\r\n public config: ConfigurationService\r\n ) {\r\n this.isTablet = this.config.isTablet;\r\n this.logoZimmer = \"assets/v2/logo_zimmer.png\";\r\n this.restImagem =\r\n this.config.imagemRest.imagem != null\r\n ? this.config.imagemRest.imagem\r\n : this.logoZimmer;\r\n }\r\n\r\n ngOnInit() {\r\n this.rest$ = this.restService.getRest();\r\n const sub = this.auth.getTableV2().subscribe({\r\n next: (tableNumber) => {\r\n this.tableNumber = tableNumber;\r\n this.buildForm();\r\n // sub.unsubscribe()\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Monta o form\r\n */\r\n private buildForm() {\r\n this.form = this.formBuilder.group({\r\n userName: [null, [Validators.required]],\r\n aquisition: [this.tableNumber ? 0 : 1, [Validators.required]],\r\n address: this.formBuilder.group({\r\n cep: [null],\r\n bairro: [null],\r\n localidade: [null],\r\n logradouro: [null], // Somente o logradouro requerido pois o componente não vai deixar vir sem os outros campos. Assim fica mais fácil de eu trocar se endereço é requerido ou não\r\n numero: [null],\r\n uf: [null],\r\n complemento: [null],\r\n }),\r\n payment: [2, [Validators.required]],\r\n change: [0, [Validators.required]],\r\n observation: [null],\r\n checked: [false],\r\n });\r\n }\r\n\r\n /**\r\n * Altera os validadoes do campo de logradouro no form baseado no método de aquisição (ENTREGA ou RETIRADA)\r\n * @param aquisitionMethod\r\n */\r\n changeRequiredOfLogradouro(aquisitionMethod: number) {\r\n const field = this.form.get(\"address.logradouro\");\r\n if (aquisitionMethod == 1) field.clearValidators();\r\n else field.setValidators([Validators.required]);\r\n field.updateValueAndValidity();\r\n }\r\n\r\n /**\r\n * Chama o componente de busca de endereço\r\n */\r\n callAddAddressPage() {\r\n this.modalCtrl\r\n .create({\r\n component: AddAddressPage,\r\n id: environment.addAddressModalId,\r\n componentProps: {\r\n address: this.form.value.address.logradouro\r\n ? this.form.value.address\r\n : undefined,\r\n },\r\n cssClass: \"modal-fullscreen\",\r\n })\r\n .then((modal) => {\r\n modal.onDidDismiss().then((dismiss) => {\r\n // Se retornar success == true na data do dismiss do modal\r\n if (dismiss.data.success) {\r\n // Seta a localização no formulário\r\n const address: Localizacao = dismiss.data.address;\r\n this.form.patchValue({\r\n address,\r\n });\r\n }\r\n });\r\n modal.present();\r\n });\r\n }\r\n\r\n /**\r\n * Fecha o modal com a role 'cancel' sem enviar nenhum dado\r\n */\r\n cancelAction() {\r\n this.modalCtrl.dismiss(undefined, \"cancel\");\r\n }\r\n\r\n updateCheck() {\r\n //this.isDisabled = this.form.value.checked ? false : true\r\n this.form.value.change = 0;\r\n console.log(this.form, \"form\");\r\n }\r\n\r\n update() {\r\n this.form.value.change = 0;\r\n console.log(this.form, \"form\");\r\n }\r\n\r\n /**\r\n * Envia o pedido via whatsapp\r\n * @param rest\r\n */\r\n confirmInfo(rest: Restaurant) {\r\n console.log(rest, \"rest\");\r\n\r\n const success = this.cart.sendOrderWhats({\r\n aquisition: this.form.value.aquisition,\r\n endereco: this.form.value.address,\r\n number: rest.foneCelular,\r\n observation: this.form.value.observation,\r\n pagamento: this.form.value.payment,\r\n troco: this.form.value.change,\r\n userFone: 0,\r\n userName: this.form.value.userName,\r\n tableNumber: this.tableNumber,\r\n });\r\n\r\n if (success) this.modalCtrl.dismiss(this.form.value, \"confirm\");\r\n }\r\n\r\n /**\r\n * Pergunta se o usuário verificou os dados digitados\r\n */\r\n next(rest: Restaurant) {\r\n console.log(rest);\r\n this.alertCtrl\r\n .create({\r\n message:\r\n \"Clique em OK se estiver tudo certo, ou clique em cancelar e revise os dados.\",\r\n animated: true,\r\n header: \"Atenção!\",\r\n mode: \"ios\",\r\n buttons: [\r\n {\r\n text: \"OK\",\r\n handler: () => this.validation(rest),\r\n //this.confirmInfo(rest)\r\n },\r\n {\r\n text: \"Cancelar\",\r\n cssClass: \"alert_font_cancel\",\r\n },\r\n ],\r\n })\r\n .then((alert) => alert.present());\r\n }\r\n\r\n validation(rest: Restaurant) {\r\n console.log(this.form, \"form\");\r\n\r\n if (this.form.value.payment == 1 && this.form.value.checked) {\r\n if (this.form.value.change == 0) {\r\n this.alerta.alertaMsg(\"Preencha o valor do troco.\", \"ATENÇÃO\");\r\n return;\r\n }\r\n }\r\n\r\n if (this.form.value.aquisition == 0) {\r\n this.alerta.alertaMsg(\"Escolha uma forma de entrega.\", \"ATENÇÃO\");\r\n return;\r\n }\r\n\r\n if (this.form.value.aquisition == 2) {\r\n if (this.form.value.address.logradouro == null) {\r\n this.alerta.alertaMsg(\"Preencha o nome da rua.\", \"ATENÇÃO\");\r\n return;\r\n }\r\n if (this.form.value.address.numero == null) {\r\n this.alerta.alertaMsg(\"Preencha o numero.\", \"ATENÇÃO\");\r\n return;\r\n }\r\n if (this.form.value.address.bairro == null) {\r\n this.alerta.alertaMsg(\"Preencha o bairro.\", \"ATENÇÃO\");\r\n return;\r\n }\r\n if (this.form.value.address.localidade == null) {\r\n this.alerta.alertaMsg(\"Preencha a cidade.\", \"ATENÇÃO\");\r\n return;\r\n }\r\n }\r\n this.confirmInfo(rest);\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nimport { ZimmerStorage } from \"../app/models/zimmerStorage.model\";\r\n\r\nexport const environment = {\r\n production: false,\r\n //SERVERHOST: document.location.port == \"4200\" ? \"http://localhost:56435/api\" : \"https://api.zclub.com.br/api\",\r\n SERVERHOST: \"https://api.zclub.com.br/api\",\r\n //SERVERHOST: \"http://api-teste.zclub.com.br/api\",\r\n RES_CNPJ: (JSON.parse(localStorage.getItem(\"zimmer\")) as ZimmerStorage)?.cnpj || \"\",\r\n BASE_URL: \"home\",\r\n USER_GUID: \"09766F36-B493-453E-8900-666EBACCC45C\",\r\n table_number_input_id: \"table-number-input\",\r\n storage: {\r\n tableNumber: \"tableNumber\",\r\n ficha: \"senha\",\r\n preferences: \"preferences\",\r\n appMode: \"mode\",\r\n comandaId: \"comandaId\",\r\n cnpj: \"cnpj\",\r\n v2: {\r\n userAddress: \"address\",\r\n gallery: \"gallery\",\r\n mode: \"mode\",\r\n cnpj: \"cnpj\",\r\n preferences: \"preferences\",\r\n tableNumber: \"reference\",\r\n breed: \"breed\",\r\n },\r\n },\r\n modals: {\r\n cartNewId: \"cart-new\",\r\n configAppId: \"config-app\",\r\n comandaScannerId: \"comanda-scanner\",\r\n },\r\n html5qrcode: {\r\n modalId: \"modal-html5qrcodescanner\",\r\n qrcodeScanElement: \"qrcode-scan\",\r\n },\r\n appModes: {\r\n /**\r\n * Envio de pedido via WhatsApp\r\n */\r\n zap: \"zap\",\r\n /**\r\n * Sem envio de pedido\r\n */\r\n menu: \"menu\",\r\n /**\r\n * Finalização de pedido com pagamento online ou normal e retorno de 'senha' para identificação do cliente final\r\n */\r\n onlinePayment: \"pedido\",\r\n /**\r\n * Finalização de pedido normal sem pagamento\r\n */\r\n table: \"qrcode\",\r\n /**\r\n * Finalização de pedido através de uma ficha(QR Code)\r\n */\r\n comanda: \"ficha\",\r\n /**\r\n * Finalização de pedido para drive thru\r\n */\r\n drive: \"drive\",\r\n consumo: \"consumo\",\r\n /**\r\n * Finalização de pedido via API no Gestor\r\n */\r\n gestor: \"gestor\",\r\n },\r\n routeParams: {\r\n appMode: \"mode\",\r\n cnpj: \"cnpj\",\r\n phoneNumber: \"phoneNumber\",\r\n prodCardStyle: \"prodCardStyle\",\r\n tableNumber: \"tableNumber\",\r\n },\r\n routePaths: {\r\n scanner: \"scanner\",\r\n sorry: \"sorry\",\r\n closed: \"closed\",\r\n v2: {\r\n version: \"v2\",\r\n home: \"home\",\r\n scanner: \"scanner\",\r\n breed: \"breed\",\r\n },\r\n },\r\n qrcodeConfigValidationLink: \"https://zclub.com.br\",\r\n pedidoURL: \"/v2/pedido/\",\r\n addAddressModalId: \"add-address-modal\",\r\n cnpjRest: '' /* cnpj pego após a aba config */,\r\n // theme: 0 // Not implemented\r\n // zimmer: new Object() as ZimmerStorage\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/dist/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 enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"]}