{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./node_modules/@ionic/core/dist/esm lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./src/app/app.component.html","./src/app/pages/cart-new/cart-new.page.html","./src/app/pages/cart-new/user-information/user-information.page.html","./src/app/pages/dialog-scanner-page/dialog-scanner-page.component.html","./src/app/pages/home/home.page.html","./src/app/pages/home/orders/orders.page.html","./src/app/pages/item/item.page.html","./src/app/pages/login/login.page.html","./src/app/pages/qrcode-scanner/qrcode-scanner.page.html","./src/app/shared/components/check-details/check-details.component.html","./src/app/shared/components/set-details/set-details.component.html","./src/app/shared/components/v2/add-address/add-address.page.html","./src/app/shared/components/v2/camera-page/camera-page.component.html","./src/app/shared/components/v2/input-datetime/input-datetime.component.html","./src/app/shared/components/v2/picture-viewer/picture-viewer.component.html","./src/app/shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page.html","./src/app/shared/components/v2/v2-item/v2-item.page.html","./src/app/shared/components/v2/v2-top-bar/v2-top-bar.component.html","./src/app/v2/finishing-pages/comanda-scan/comanda-scan.page.html","./src/app/v2/finishing-pages/table-page/table-page.page.html","./src/app/v2/finishing-pages/user-info-drive/user-info-drive.page.html","./src/app/v2/finishing-pages/user-info-request-card/user-info-request-card.page.html","./src/app/v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page.html","./src/app/v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page.html","./src/app/v2/finishing-pages/user-info-request-zap/user-info-request-zap.page.html","./src/app/app-routing.module.ts","./src/app/app.component.scss","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/interfaces/itemCart.interface.ts","./src/app/interfaces/product-option.interface.ts","./src/app/models/address/localizacao.model.ts","./src/app/models/base-class.model.ts","./src/app/models/cart/cart.model.ts","./src/app/models/payment/card.model.ts","./src/app/models/payment/consumo.model.ts","./src/app/models/user.model.ts","./src/app/models/zimmerStorage.model.ts","./src/app/pages/cart-new/cart-new-routing.module.ts","./src/app/pages/cart-new/cart-new.module.ts","./src/app/pages/cart-new/cart-new.page.scss","./src/app/pages/cart-new/cart-new.page.ts","./src/app/pages/cart-new/user-information/user-information-routing.module.ts","./src/app/pages/cart-new/user-information/user-information.module.ts","./src/app/pages/cart-new/user-information/user-information.page.scss","./src/app/pages/cart-new/user-information/user-information.page.ts","./src/app/pages/dialog-scanner-page/dialog-scanner-page.component.scss","./src/app/pages/dialog-scanner-page/dialog-scanner-page.component.ts","./src/app/pages/home/home-routing.module.ts","./src/app/pages/home/home.module.ts","./src/app/pages/home/home.page.scss","./src/app/pages/home/home.page.ts","./src/app/pages/home/orders/orders.page.scss","./src/app/pages/home/orders/orders.page.ts","./src/app/pages/item/item.page.scss","./src/app/pages/item/item.page.ts","./src/app/pages/login/login-routing.module.ts","./src/app/pages/login/login.module.ts","./src/app/pages/login/login.page.scss","./src/app/pages/login/login.page.ts","./src/app/pages/qrcode-scanner/qrcode-scanner-routing.module.ts","./src/app/pages/qrcode-scanner/qrcode-scanner.module.ts","./src/app/pages/qrcode-scanner/qrcode-scanner.page.scss","./src/app/pages/qrcode-scanner/qrcode-scanner.page.ts","./src/app/services/camera.service.ts","./src/app/services/cart.service.ts","./src/app/services/category.service.ts","./src/app/services/configuration.service.ts","./src/app/services/html5qrcodescanner.service.ts","./src/app/services/order.service.ts","./src/app/services/payment.service.ts","./src/app/services/product.service.ts","./src/app/services/providers/address.service.ts","./src/app/services/providers/gallery.service.ts","./src/app/services/providers/mask.service.ts","./src/app/services/qrcode.service.ts","./src/app/services/restaurant.service.ts","./src/app/services/storage.service.ts","./src/app/services/toastadd.service.ts","./src/app/services/user.service.ts","./src/app/services/usergestor.service.ts","./src/app/services/wallet.service.ts","./src/app/shared/auth.service.ts","./src/app/shared/base.service.ts","./src/app/shared/components/check-details/check-details.component.scss","./src/app/shared/components/check-details/check-details.component.ts","./src/app/shared/components/check-details/check-details.module.ts","./src/app/shared/components/set-details/set-details.component.scss","./src/app/shared/components/set-details/set-details.component.ts","./src/app/shared/components/set-details/set-details.module.ts","./src/app/shared/components/v2/add-address/add-address.page.scss","./src/app/shared/components/v2/add-address/add-address.page.ts","./src/app/shared/components/v2/camera-page/camera-page.component.scss","./src/app/shared/components/v2/camera-page/camera-page.component.ts","./src/app/shared/components/v2/input-datetime/input-datetime.component.scss","./src/app/shared/components/v2/input-datetime/input-datetime.component.ts","./src/app/shared/components/v2/picture-viewer/picture-viewer.component.scss","./src/app/shared/components/v2/picture-viewer/picture-viewer.component.ts","./src/app/shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page.scss","./src/app/shared/components/v2/v2-item-complementosmeiomeio/v2-item-complementosmeiomeio.page.ts","./src/app/shared/components/v2/v2-item/v2-item.page.scss","./src/app/shared/components/v2/v2-item/v2-item.page.ts","./src/app/shared/components/v2/v2-top-bar/v2-top-bar.component.scss","./src/app/shared/components/v2/v2-top-bar/v2-top-bar.component.ts","./src/app/shared/guards/operation.guard.ts","./src/app/shared/guards/scanner.guard.ts","./src/app/shared/interceptor/lower-case-url-serializer.interceptor.ts","./src/app/shared/util.ts","./src/app/shared/whats-msg.service.ts","./src/app/v2/finishing-pages/comanda-scan/comanda-scan.page.scss","./src/app/v2/finishing-pages/comanda-scan/comanda-scan.page.ts","./src/app/v2/finishing-pages/table-page/table-page.page.scss","./src/app/v2/finishing-pages/table-page/table-page.page.ts","./src/app/v2/finishing-pages/user-info-drive/user-info-drive.page.scss","./src/app/v2/finishing-pages/user-info-drive/user-info-drive.page.ts","./src/app/v2/finishing-pages/user-info-request-card/user-info-request-card.page.scss","./src/app/v2/finishing-pages/user-info-request-card/user-info-request-card.page.ts","./src/app/v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page.scss","./src/app/v2/finishing-pages/user-info-request-consumo/user-info-request-consumo.page.ts","./src/app/v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page.scss","./src/app/v2/finishing-pages/user-info-request-gestor/user-info-request-gestor.page.ts","./src/app/v2/finishing-pages/user-info-request-zap/user-info-request-zap.page.scss","./src/app/v2/finishing-pages/user-info-request-zap/user-info-request-zap.page.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,4CAA4C,WAAW;AACvD;AACA;AACA,wE;;;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA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","file":"main-es2015.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"],"sourceRoot":"webpack:///"}