import type { ScanFormType } from '@axrl/ngx-extended-form-builder'; import type { BehaviorSubject, Observable } from 'rxjs'; import type { Action, CheckResponse, Dish, Message, Modifier, NgGqlConfig, Order, OrderForm, OrderModifier, PaymentMethod, PickupPoint, ValuesOrBoolean } from '../models'; import { NgGqlStoreService } from './ng-gql-storage.service'; import { NgGqlUserBusService } from './ng-gql-user-bus.service'; import { NgGqlUserService } from './ng-gql-user.service'; import { NgGqlService } from './ng-gql.service'; import { RequestService } from './request.service'; import { NqGqlLocalStorageWrapper } from './storage-wrapper'; import * as i0 from "@angular/core"; export declare class NgOrderService { private _requestService; private _storage; private _storageWrapper; private _userBusService; private _ngGqlService; private _ngGqlUser; private _config; private _defaultPaymentMethodFragments; private _defaultOrderFragments; private _defaultDishFragments; private _defaultActionFragments; private _defaultMessageFragments; private _orderBus; private readonly _order$; /** * Внутренний поток-шина для событий, ассоциированных с действиями, которыми необходимо выполнить с заказом (добавить/удалить блюдо, проверить заказ, отправить на проверку и тп.). * Используется только в случае, если в @see this.config параметр busSubscribeMode установлен в значении 'custom' для самостоятельного управления подпиской на стороне приложения. * Использование этого потока и событий внутри него извне не подразумевается и не предусматривается, * Для выполнения действий с заказом, необходимо использовать соответствующие методы: * @see this.addToOrder * @see this.removeFromOrder * @see this.checkOrder * @see this.sendOrder * @see this.setDishAmount * @see this.setDishComment */ private readonly _orderBus$; private readonly _orderBusSubscription$; private readonly _orderSubscription$; get orderBus$(): Observable void)>; constructor(_requestService: RequestService, _storage: NgGqlStoreService, _storageWrapper: NqGqlLocalStorageWrapper, _userBusService: NgGqlUserBusService, _ngGqlService: NgGqlService, _ngGqlUser: NgGqlUserService, _config: NgGqlConfig, _defaultPaymentMethodFragments: ValuesOrBoolean, _defaultOrderFragments: ValuesOrBoolean, _defaultDishFragments: ValuesOrBoolean, _defaultActionFragments: ValuesOrBoolean, _defaultMessageFragments: ValuesOrBoolean); /** * @method updateStorageOrderIdToken() * @see this.StorageWrapper.updateStorageOrderIdToken() */ updateStorageOrderIdToken(newToken: string): void; paymentLink$(phone: string, fromPhone: string, orderId: string): Observable; /** * @method getOrderPaymentMethods$() * @returns Возвращает поток Observable с массивом доступных для этого заказа способов оплаты `PaymentMethod`. */ getOrderPaymentMethods$(): Observable; /** * @method () getOrder * @returns Возвращает поток Observable с данными текущего заказа, оформление которого не завершено. */ getOrder(): Observable; /** * @method () resetOrder * @returns Remove order */ resetOrder(): void; /** * @method loadOrder$() * * Метод загружает заказ и делает подписку для получения по нему обновлений. * Используется для внутренних нужд библиотеки, а также может использоваться для загрузки заказа отдельно от шины событий заказов * (например, данные для страницы "Спасибо за заказ"). * * @param id - id загружаемого заказа. * */ loadOrder$(id: string, isShort?: boolean): Observable; /** * @method addToOrder() * Используется для отправки в шину события добавления блюда. * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.orderId - id заказа. * @param options.dishId - id добавляемого блюдо * @param options.amount - количество * @param options.dishModifiers - выбранные пользователем модификаторы блюда (необязательный) * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ addToOrder(options: { orderId: string; loading?: BehaviorSubject; dishId: string; amount?: number; dishModifiers?: Array> | Array>; successCb?: (order: Order) => void; errorCb?: (err: unknown) => void; comment?: string; replacedOrderDishId?: number; }): void; /** * @method removeFromOrder() * Используется для отправки в шину события удаления блюда из корзины * @param options.orderId - id заказа. * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.amount - количество * @param options.orderDishId - id удаляемого блюда в корзине * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ removeFromOrder(options: { orderId: string; loading?: BehaviorSubject; amount: number; successCb?: (order: Order) => void; errorCb?: (err: unknown) => void; orderDishId: number; }): void; /** * @method updateOrder() * Используется для отправки в шину события обновления данных в заказе, не связанных с блюдами. * Может использоваться ТОЛЬКО ДО того, как заказ отправлен через @method this.sendOrder() * Также, заказ нужно повторно проверять методом @method this.checkOrder(), если такая проверка уже проводилась ранее. * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.data - объект заказа, при этом не все данные из него будут приняты и, в результате, обновлены. * Большая часть будет данных будет проигнорирована и может изменяться только в рамках других методов согласно заложенной бизнес-логике. * В настоящее время из всего заказа учитываются изменения ТОЛЬКО в свойстве `Order.trifleFrom`. * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ updateOrder(options: { data: ScanFormType['value']; loading?: BehaviorSubject; successCb?: (order: Order) => void; errorCb?: (err: unknown) => void; }): void; /** * @method checkOrder() * Используется для отправки в шину события обязательной проверки заказа перед оформлением. * Метод необходимо вызывать после того, как пользователь полностью заполнил в заказе все необходимые данные и далее после каждого вносимого в форму изменения, при условии, что в форме все необходимые данные заполнены. * @param options.orderForm - Форма чекаута с данными проверяемого заказа * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ checkOrder(options: { orderForm: ScanFormType['value']; successCb?: (order: CheckResponse) => void; errorCb?: (err: unknown) => void; }): void; /** * @method sendOrder() * Используется для отправки в шину события оформления заказа. * Метод необходимо вызывать только после успешной предварительной проверки заказа в методе checkOrder. * @param options.orderId - Форма чекаута с данными оформляемего заказа * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ sendOrder(options: { orderId: string; orderIdFactory?: () => string | undefined; loading?: BehaviorSubject; successCb?: (order: CheckResponse) => void; errorCb?: (err: unknown) => void; }): void; /** * @method cloneOrder() * Используется для отправки в шину события повтора уже сделанного ранее заказа. * @param options.orderId - Форма чекаута с данными оформляемего заказа * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ cloneOrder(options: { orderId: string; orderIdFactory?: () => string | undefined; loading?: BehaviorSubject; successCb?: (order: Order) => void; errorCb?: (err: unknown) => void; }): void; /** * @method setDishAmount() * Устанавливает для блюда dish в заказе количество amount. * @param options.orderId - id заказа. * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.orderDishId - id блюда в корзине, для которого изменяется количество заказываемых порций * @param options.amount - необходимое количество порций * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ setDishAmount(options: { orderId: string; loading?: BehaviorSubject; orderDishId: number; amount?: number; successCb?: (order: Order) => void; errorCb?: (err: unknown) => void; }): void; /** * @method setDishComment() * Добавляет к заказываемому блюду комментарий. * @param options.loading - BehaviorSubject блюда, отслеживающий состояние выполняемого действия. * @param options.orderDishId - id блюда в корзине, которому добавляется комментарий * @param options.comment - добавляемый комментарий * @param options.successCb -Пользовательский callback, который дополнительно будет выполнен в случае успешной операции * @param options.errorCb - Пользовательский callback, будет который дополнительно выполнен в случае успешной операции */ setDishComment(options: { loading?: BehaviorSubject; orderDishId: number; comment: string; successCb?: (order: Order) => void; errorCb?: (err: unknown) => void; }): void; destroy(): void; getDishRecomended(dishId: string): Observable; getOrderRecommended(): Observable; getPickupPoints(): Observable; private _getPickupPoints; private _getPaymentMethods$; private _getOrderCustomerName; private _checkOrder$; private _setDishAmount$; private _setDishComment$; private _cloneOrder$; private _updateOrder$; private _sendOrder$; private _addDishToOrder$; private _removeDishFromOrder$; private _loadCurrentOrNewOrder; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }