@infrab4a/connect-angular 5.5.0-beta.12 → 5.5.0-beta.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"infrab4a-connect-angular.mjs","sources":["../../../projects/connect-angular/src/consts/es-config.const.ts","../../../projects/connect-angular/src/angular-elastic-search.module.ts","../../../projects/connect-angular/src/consts/backend-url.const.ts","../../../projects/connect-angular/src/consts/category-structure.ts","../../../projects/connect-angular/src/consts/default-shop.const.ts","../../../projects/connect-angular/src/consts/firebase-const.ts","../../../projects/connect-angular/src/consts/hasura-options.const.ts","../../../projects/connect-angular/src/consts/persistence.const.ts","../../../projects/connect-angular/src/consts/vertex-config.const.ts","../../../projects/connect-angular/src/angular-firebase-auth.module.ts","../../../projects/connect-angular/src/helpers/mobile-operation-system-checker.helper.ts","../../../projects/connect-angular/src/angular-firestore.module.ts","../../../projects/connect-angular/src/angular-hasura-graphql.module.ts","../../../projects/connect-angular/src/angular-vertex-search.module.ts","../../../projects/connect-angular/src/consts/storage-base-url.const.ts","../../../projects/connect-angular/src/persistence/cookie-data-persistence.ts","../../../projects/connect-angular/src/services/auth.service.ts","../../../projects/connect-angular/src/services/checkout/checkout-repositories.facade.ts","../../../projects/connect-angular/src/services/checkout/checkout-dependencies.facade.ts","../../../projects/connect-angular/src/services/shared/configuration.facade.ts","../../../projects/connect-angular/src/services/checkout.service.ts","../../../projects/connect-angular/src/services/cart/cart-services.facade.ts","../../../projects/connect-angular/src/services/cart.service.ts","../../../projects/connect-angular/src/services/catalog/adapters/new-category-structure.adapter.ts","../../../projects/connect-angular/src/services/catalog/adapters/old-category-structure.adapter.ts","../../../projects/connect-angular/src/services/catalog/context/catalog-search.context.ts","../../../projects/connect-angular/src/services/catalog/strategies/category-search.strategy.ts","../../../projects/connect-angular/src/services/catalog/strategies/profile-search.strategy.ts","../../../projects/connect-angular/src/services/catalog/strategies/term-search.strategy.ts","../../../projects/connect-angular/src/services/catalog/facades/catalog-strategies.facade.ts","../../../projects/connect-angular/src/services/catalog/facades/catalog-service.facade.ts","../../../projects/connect-angular/src/services/catalog/facades/category-repository.facade.ts","../../../projects/connect-angular/src/services/catalog/category.service.ts","../../../projects/connect-angular/src/services/catalog/facades/product-catalog.facade.ts","../../../projects/connect-angular/src/services/catalog/facades/category-service.facade.ts","../../../projects/connect-angular/src/services/catalog/helpers/brand-manager.helper.ts","../../../projects/connect-angular/src/services/catalog/helpers/catalog-filter.helper.ts","../../../projects/connect-angular/src/services/catalog/helpers/catalog-sort.helper.ts","../../../projects/connect-angular/src/services/catalog/helpers/product-fields.helper.ts","../../../projects/connect-angular/src/services/catalog/services/catalog-operations.facade.ts","../../../projects/connect-angular/src/services/catalog/services/product-management.facade.ts","../../../projects/connect-angular/src/services/catalog/services/catalog-helpers.service.ts","../../../projects/connect-angular/src/services/catalog/services/catalog-repository.service.ts","../../../projects/connect-angular/src/services/catalog/catalog.service.ts","../../../projects/connect-angular/src/services/catalog/enums/product-sorts.enum.ts","../../../projects/connect-angular/src/services/catalog/models/category-with-tree.model.ts","../../../projects/connect-angular/src/services/catalog/wishlist.service.ts","../../../projects/connect-angular/src/services/coupon/coupon-repositories.facade.ts","../../../projects/connect-angular/src/services/coupon.service.ts","../../../projects/connect-angular/src/services/checkout-subscription.service.ts","../../../projects/connect-angular/src/services/helpers/util.helper.ts","../../../projects/connect-angular/src/services/home-shop/home-shop-repositories.facade.ts","../../../projects/connect-angular/src/services/home-shop.service.ts","../../../projects/connect-angular/src/services/order-product-review.service.ts","../../../projects/connect-angular/src/services/order.service.ts","../../../projects/connect-angular/src/angular-connect.module.ts","../../../projects/connect-angular/src/infrab4a-connect-angular.ts"],"sourcesContent":["export const ES_CONFIG = 'ES_CONFIG'\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { AxiosAdapter, AxiosElasticSearchConfig, ProductsIndex } from '@infrab4a/connect'\r\n\r\nimport { ES_CONFIG } from './consts/es-config.const'\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: ProductsIndex,\r\n useFactory: (configuration: AxiosElasticSearchConfig): ProductsIndex =>\r\n new ProductsIndex(new AxiosAdapter(configuration)),\r\n deps: [ES_CONFIG],\r\n },\r\n ],\r\n})\r\nexport class AngularElasticSeachModule {\r\n static initializeApp(options: AxiosElasticSearchConfig): ModuleWithProviders<AngularElasticSeachModule> {\r\n return {\r\n ngModule: AngularElasticSeachModule,\r\n providers: [{ provide: ES_CONFIG, useValue: options }],\r\n }\r\n }\r\n}\r\n","export const BACKEND_URL = 'BACKEND_URL'\r\n","export const CATEGORY_STRUCTURE = 'CATEGORY_STRUCTURE'\r\n","export const DEFAULT_SHOP = 'DEFAULT_SHOP'\r\n","import { InjectionToken } from '@angular/core'\r\n\r\nexport const FIREBASE_APP_NAME = new InjectionToken('firebaseAppName')\r\nexport const FIREBASE_OPTIONS = new InjectionToken('firebaseOptions')\r\nexport const APP_CHECK_PROVIDER = new InjectionToken('appCheckProvider')\r\n","export const HASURA_OPTIONS = 'HASURA_OPTIONS'\r\n","export const PERSISTENCE_PROVIDER = 'PERSISTENCE_PROVIDER'\r\n","export const VERTEX_CONFIG = 'VERTEX_CONFIG'\r\n","import { Injector, ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { FirebaseApp, FirebaseOptions } from '@angular/fire/app'\r\nimport {\r\n Auth,\r\n browserLocalPersistence,\r\n browserSessionPersistence,\r\n getAuth,\r\n indexedDBLocalPersistence,\r\n initializeAuth,\r\n provideAuth,\r\n} from '@angular/fire/auth'\r\nimport {\r\n Authentication,\r\n AuthenticationFirebaseAuthService,\r\n AuthenticationService,\r\n RecoveryPassword,\r\n Register,\r\n RegisterFirebaseAuthService,\r\n RegisterService,\r\n SignOut,\r\n UserRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'\r\nimport { FirebaseAppConfig } from './types'\r\n\r\n@NgModule({\r\n imports: [\r\n provideAuth((injector: Injector) => {\r\n const app = injector.get(FirebaseApp)\r\n\r\n try {\r\n return initializeAuth(app, {\r\n persistence: [indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence],\r\n })\r\n } catch (error) {\r\n if (error instanceof Error) console.error('Error initializing auth', error.message)\r\n\r\n return getAuth(app)\r\n }\r\n }),\r\n ],\r\n providers: [\r\n {\r\n provide: 'Authentication',\r\n useFactory: (authenticationService: AuthenticationService, userRepository: UserRepository): Authentication => {\r\n return new Authentication(authenticationService, userRepository)\r\n },\r\n deps: ['AuthenticationService', 'UserRepository'],\r\n },\r\n {\r\n provide: 'AuthenticationService',\r\n useFactory: (angularFireAuth: Auth): AuthenticationService => {\r\n return new AuthenticationFirebaseAuthService(angularFireAuth)\r\n },\r\n deps: [Auth],\r\n },\r\n {\r\n provide: 'Register',\r\n useFactory: (registerService: RegisterService, userRepository: UserRepository): Register => {\r\n return new Register(registerService, userRepository)\r\n },\r\n deps: ['RegisterService', 'UserRepository'],\r\n },\r\n {\r\n provide: 'RegisterService',\r\n useFactory: (angularFireAuth: Auth): RegisterService => {\r\n return new RegisterFirebaseAuthService(angularFireAuth)\r\n },\r\n deps: [Auth],\r\n },\r\n {\r\n provide: 'SignOut',\r\n useFactory: (authenticationService: AuthenticationService): SignOut => {\r\n return new SignOut(authenticationService)\r\n },\r\n deps: ['AuthenticationService'],\r\n },\r\n {\r\n provide: 'RecoveryPassword',\r\n useFactory: (authenticationService: AuthenticationService): RecoveryPassword => {\r\n return new RecoveryPassword(authenticationService)\r\n },\r\n deps: ['AuthenticationService'],\r\n },\r\n ],\r\n})\r\nexport class AngularFirebaseAuthModule {\r\n static initializeApp(\r\n options: FirebaseOptions,\r\n nameOrConfig?: string | FirebaseAppConfig,\r\n ): ModuleWithProviders<AngularFirebaseAuthModule> {\r\n return {\r\n ngModule: AngularFirebaseAuthModule,\r\n providers: [\r\n { provide: FIREBASE_OPTIONS, useValue: options },\r\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\r\n ],\r\n }\r\n }\r\n}\r\n","export class MobileOperationSystemCheckerHelper {\r\n static isAppleDevice() {\r\n return (\r\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\r\n navigator?.platform,\r\n ) ||\r\n (navigator?.userAgent?.includes?.('Mac') && 'ontouchend' in (document || {}))\r\n )\r\n }\r\n}\r\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common'\r\nimport { Injector, ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'\r\nimport { FirebaseApp, FirebaseOptions } from '@angular/fire/app'\r\nimport { Firestore, initializeFirestore, memoryLocalCache, provideFirestore } from '@angular/fire/firestore'\r\nimport {\r\n AxiosElasticSearchConfig,\r\n BeautyProfileRepository,\r\n Buy2WinFirestoreRepository,\r\n Buy2WinRepository,\r\n CampaignDashboardFirestoreRepository,\r\n CampaignDashboardRepository,\r\n CampaignHashtagFirestoreRepository,\r\n CampaignHashtagRepository,\r\n CategoryFirestoreRepository,\r\n CategoryRepository,\r\n CheckoutFirestoreRepository,\r\n CheckoutRepository,\r\n CheckoutSubscriptionFirestoreRepository,\r\n CheckoutSubscriptionRepository,\r\n ConnectFirestoreService,\r\n CouponFirestoreRepository,\r\n CouponRepository,\r\n EditionRepository,\r\n FirestoreConstructorParams,\r\n FirestoreIntertceptorRequestParams,\r\n GroupFirestoreRepository,\r\n GroupRepository,\r\n HomeFirestoreRepository,\r\n HomeRepository,\r\n LeadFirestoreRepository,\r\n LeadRepository,\r\n LegacyOrderFirestoreRepository,\r\n LegacyOrderRepository,\r\n LogFirestoreRepository,\r\n LogRepository,\r\n OrderBlockedFirestoreRepository,\r\n OrderBlockedRepository,\r\n OrderFirestoreRepository,\r\n OrderRepository,\r\n PaymentFirestoreRepository,\r\n PaymentRepository,\r\n ProductFirestoreRepository,\r\n ProductRepository,\r\n ProductVariantFirestoreRepository,\r\n SequenceFirestoreRepository,\r\n ShopMenuFirestoreRepository,\r\n ShopMenuRepository,\r\n ShopSettingsFirestoreRepository,\r\n ShopSettingsRepository,\r\n SubscriptionEditionFirestoreRepository,\r\n SubscriptionFirestoreRepository,\r\n SubscriptionMaterializationFirestoreRepository,\r\n SubscriptionMaterializationRepository,\r\n SubscriptionPaymentFirestoreRepository,\r\n SubscriptionPaymentRepository,\r\n SubscriptionPlanFirestoreRepository,\r\n SubscriptionPlanRepository,\r\n SubscriptionProductFirestoreRepository,\r\n SubscriptionProductRepository,\r\n SubscriptionRepository,\r\n SubscriptionSummaryFirestoreRepository,\r\n SubscriptionSummaryRepository,\r\n UserAddressFirestoreRepository,\r\n UserAddressRepository,\r\n UserBeautyProfileFirestoreRepository,\r\n UserFirestoreRepository,\r\n UserPaymentMethodFirestoreRepository,\r\n UserPaymentMethodRepository,\r\n UserRepository,\r\n VariantRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { AngularElasticSeachModule } from './angular-elastic-search.module'\r\nimport { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'\r\nimport { MobileOperationSystemCheckerHelper } from './helpers'\r\nimport { FirebaseAppConfig } from './types'\r\n\r\nexport type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>\r\n\r\n@NgModule({\r\n imports: [\r\n AngularElasticSeachModule,\r\n provideFirestore((injector: Injector) => {\r\n const platformId = injector.get(PLATFORM_ID)\r\n\r\n if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())\r\n return initializeFirestore(injector.get(FirebaseApp), {\r\n ignoreUndefinedProperties: true,\r\n })\r\n\r\n const firestore = initializeFirestore(injector.get(FirebaseApp), {\r\n experimentalForceLongPolling: true,\r\n ignoreUndefinedProperties: true,\r\n localCache: memoryLocalCache(),\r\n })\r\n\r\n return firestore\r\n }),\r\n ],\r\n providers: [\r\n {\r\n provide: 'FirestoreOptions',\r\n useFactory: (firestore: Firestore, platformId: string): FirestoreOptions => ({\r\n firestore: new ConnectFirestoreService(firestore),\r\n interceptors: {\r\n request: (request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> }) => {\r\n if (isPlatformBrowser(platformId)) return request\r\n\r\n const interval = setInterval(() => {}, 100)\r\n\r\n request.interval = interval\r\n\r\n return request\r\n },\r\n response: (\r\n response: any,\r\n request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> },\r\n ) => {\r\n if (isPlatformBrowser(platformId)) return response\r\n\r\n clearInterval(request.interval)\r\n\r\n return response\r\n },\r\n },\r\n }),\r\n deps: [Firestore, PLATFORM_ID],\r\n },\r\n {\r\n provide: 'BeautyProfileRepository',\r\n useFactory: (config: FirestoreOptions, userRepository: UserFirestoreRepository): BeautyProfileRepository => {\r\n return new UserBeautyProfileFirestoreRepository(config, userRepository)\r\n },\r\n deps: ['FirestoreOptions', 'UserRepository'],\r\n },\r\n {\r\n provide: 'Buy2WinRepository',\r\n useFactory: (options: FirestoreOptions): Buy2WinRepository => {\r\n return new Buy2WinFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: CategoryFirestoreRepository,\r\n useFactory: (options: FirestoreOptions): CategoryRepository => {\r\n return new CategoryFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CheckoutRepository',\r\n useFactory: (options: FirestoreOptions): CheckoutRepository => {\r\n return new CheckoutFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CheckoutSubscriptionRepository',\r\n useFactory: (options: FirestoreOptions): CheckoutSubscriptionRepository => {\r\n return new CheckoutSubscriptionFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CouponRepository',\r\n useFactory: (options: FirestoreOptions): CouponRepository => {\r\n return new CouponFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CampaignHashtagRepository',\r\n useFactory: (options: FirestoreOptions): CampaignHashtagRepository => {\r\n return new CampaignHashtagFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CampaignDashboardRepository',\r\n useFactory: (options: FirestoreOptions): CampaignDashboardRepository => {\r\n return new CampaignDashboardFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'EditionRepository',\r\n useFactory: (\r\n options: FirestoreOptions,\r\n subscriptionRepository: SubscriptionFirestoreRepository,\r\n ): EditionRepository => {\r\n return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository)\r\n },\r\n deps: ['FirestoreOptions', 'SubscriptionRepository'],\r\n },\r\n {\r\n provide: 'GroupRepository',\r\n useFactory: (options: FirestoreOptions): GroupRepository => {\r\n return new GroupFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'HomeRepository',\r\n useFactory: (options: FirestoreOptions): HomeRepository => {\r\n return new HomeFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'LeadRepository',\r\n useFactory: (options: FirestoreOptions): LeadRepository => {\r\n return new LeadFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'LegacyOrderRepository',\r\n useFactory: (options: FirestoreOptions): LegacyOrderRepository => {\r\n return new LegacyOrderFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'ShopMenuRepository',\r\n useFactory: (options: FirestoreOptions): ShopMenuRepository => {\r\n return new ShopMenuFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'OrderRepository',\r\n useFactory: (options: FirestoreOptions): OrderRepository => {\r\n return new OrderFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'PaymentRepository',\r\n useFactory: (options: FirestoreOptions): PaymentRepository => {\r\n return new PaymentFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: ProductFirestoreRepository,\r\n useFactory: (options: FirestoreOptions): ProductRepository => {\r\n return new ProductFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'ShopSettingsRepository',\r\n useFactory: (options: FirestoreOptions): ShopSettingsRepository => {\r\n return new ShopSettingsFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionPaymentRepository',\r\n useFactory: (\r\n options: FirestoreOptions,\r\n subscriptionRepository: SubscriptionFirestoreRepository,\r\n ): SubscriptionPaymentRepository => {\r\n return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository)\r\n },\r\n deps: ['FirestoreOptions', 'SubscriptionRepository'],\r\n },\r\n {\r\n provide: 'SubscriptionPlanRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionPlanRepository => {\r\n return new SubscriptionPlanFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionProductRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionProductRepository => {\r\n return new SubscriptionProductFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionRepository => {\r\n return new SubscriptionFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'UserRepository',\r\n useFactory: (options: FirestoreOptions): UserRepository => {\r\n return new UserFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'UserAddressRepository',\r\n useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserAddressRepository => {\r\n return new UserAddressFirestoreRepository(options, userRepository)\r\n },\r\n deps: ['FirestoreOptions', 'UserRepository'],\r\n },\r\n {\r\n provide: 'UserPaymentMethodRepository',\r\n useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserPaymentMethodRepository => {\r\n return new UserPaymentMethodFirestoreRepository(options, userRepository)\r\n },\r\n deps: ['FirestoreOptions', 'UserRepository'],\r\n },\r\n {\r\n provide: 'SubscriptionMaterializationRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionMaterializationRepository => {\r\n return new SubscriptionMaterializationFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionSummaryRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionSummaryRepository => {\r\n return new SubscriptionSummaryFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: ProductVariantFirestoreRepository,\r\n useFactory: (options: FirestoreOptions, productRepository: ProductFirestoreRepository): VariantRepository => {\r\n return new ProductVariantFirestoreRepository(options, productRepository)\r\n },\r\n deps: ['FirestoreOptions', ProductFirestoreRepository],\r\n },\r\n {\r\n provide: 'OrderBlockedRepository',\r\n useFactory: (options: FirestoreOptions): OrderBlockedRepository => {\r\n return new OrderBlockedFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'LogRepository',\r\n useFactory: (options: FirestoreOptions): LogRepository => {\r\n return new LogFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SequenceRepository',\r\n useFactory: (options: FirestoreOptions): SequenceFirestoreRepository => {\r\n return new SequenceFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n ],\r\n})\r\nexport class AngularFirestoreModule {\r\n static initializeApp(\r\n options: {\r\n firebase: FirebaseOptions\r\n elasticSearch: AxiosElasticSearchConfig\r\n },\r\n nameOrConfig?: string | FirebaseAppConfig,\r\n ): ModuleWithProviders<AngularFirestoreModule> {\r\n return {\r\n ngModule: AngularFirestoreModule,\r\n providers: [\r\n { provide: FIREBASE_OPTIONS, useValue: options.firebase },\r\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\r\n { provide: ES_CONFIG, useValue: options.elasticSearch },\r\n ],\r\n }\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common'\r\nimport { ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'\r\nimport {\r\n CacheConfig,\r\n CategoryCollectionChildrenHasuraGraphQLRepository,\r\n CategoryFilterHasuraGraphQLRepository,\r\n CategoryFilterRepository,\r\n CategoryHasuraGraphQLRepository,\r\n CategoryProductHasuraGraphQLRepository,\r\n CategoryRepository,\r\n FilterHasuraGraphQLRepository,\r\n FilterOptionHasuraGraphQLRepository,\r\n FilterOptionRepository,\r\n FilterRepository,\r\n GraphQLParams,\r\n HasuraConstructorParams,\r\n HasuraGraphQLAuthOptions,\r\n ProductCatalogHasuraGraphQLRepository,\r\n ProductErrors,\r\n ProductErrorsHasuraGraphQLRepository,\r\n ProductErrorsRepository,\r\n ProductHasuraGraphQLRepository,\r\n ProductRepository,\r\n ProductReviewHasuraGraphQLRepository,\r\n ProductReviewRepository,\r\n ProductStockNotificationHasuraGraphQLRepository,\r\n ProductStockNotificationRepository,\r\n VariantHasuraGraphQLRepository,\r\n VariantRepository,\r\n WishlistHasuraGraphQLRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { HASURA_OPTIONS } from './consts'\r\n\r\nexport type HasuraGraphQLOptions = { endpoint: string; credentials?: HasuraGraphQLAuthOptions; cache?: CacheConfig }\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: 'HasuraConfig',\r\n useFactory: (options: HasuraGraphQLOptions, platformId: string) => ({\r\n endpoint: options.endpoint,\r\n authOptions: options.credentials,\r\n cache: options.cache,\r\n interceptors: {\r\n request: (request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {\r\n if (isPlatformBrowser(platformId)) return request\r\n\r\n const interval = setInterval(() => {}, 100)\r\n\r\n request.interval = interval\r\n\r\n return request\r\n },\r\n response: (response: any, request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {\r\n if (isPlatformBrowser(platformId)) return response\r\n\r\n clearInterval(request.interval)\r\n\r\n return response\r\n },\r\n },\r\n }),\r\n deps: [HASURA_OPTIONS, PLATFORM_ID],\r\n },\r\n {\r\n provide: 'CategoryRepository',\r\n useExisting: CategoryHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: CategoryHasuraGraphQLRepository,\r\n useFactory: (\r\n options: any,\r\n productRepository: ProductHasuraGraphQLRepository,\r\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\r\n ): CategoryRepository => {\r\n return new CategoryHasuraGraphQLRepository(options, productRepository, categoryFilterRepository)\r\n },\r\n deps: ['HasuraConfig', ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: 'ProductRepository',\r\n useExisting: ProductHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): ProductRepository => {\r\n return new ProductHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'ProductReviewRepository',\r\n useExisting: ProductReviewHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductReviewHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): ProductReviewRepository => {\r\n return new ProductReviewHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'VariantRepository',\r\n useExisting: VariantHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: VariantHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): VariantRepository => {\r\n return new VariantHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'ProductStockNotificationRepository',\r\n useExisting: ProductStockNotificationHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductStockNotificationHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): ProductStockNotificationRepository => {\r\n return new ProductStockNotificationHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'CategoryFilterRepository',\r\n useExisting: CategoryFilterHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: CategoryFilterHasuraGraphQLRepository,\r\n useFactory: (options: any): CategoryFilterRepository => {\r\n return new CategoryFilterHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'FilterOptionRepository',\r\n useExisting: FilterOptionHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: FilterOptionHasuraGraphQLRepository,\r\n useFactory: (options: any): FilterOptionRepository => {\r\n return new FilterOptionHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'FilterRepository',\r\n useExisting: FilterHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: FilterHasuraGraphQLRepository,\r\n useFactory: (\r\n options: any,\r\n filterOptionRepository: FilterOptionHasuraGraphQLRepository,\r\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\r\n ): FilterRepository => {\r\n return new FilterHasuraGraphQLRepository(options, filterOptionRepository, categoryFilterRepository)\r\n },\r\n deps: ['HasuraConfig', FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: CategoryCollectionChildrenHasuraGraphQLRepository,\r\n useFactory: (options: any): CategoryCollectionChildrenHasuraGraphQLRepository =>\r\n new CategoryCollectionChildrenHasuraGraphQLRepository(options),\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'CategoryCollectionChildrenRepository',\r\n useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: CategoryProductHasuraGraphQLRepository,\r\n useFactory: (options: any): CategoryProductHasuraGraphQLRepository => {\r\n return new CategoryProductHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'CategoryProductRepository',\r\n useExisting: CategoryProductHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: WishlistHasuraGraphQLRepository,\r\n useFactory: (\r\n options: any,\r\n categoryProductRepository: CategoryProductHasuraGraphQLRepository,\r\n ): WishlistHasuraGraphQLRepository => {\r\n return new WishlistHasuraGraphQLRepository(options, categoryProductRepository)\r\n },\r\n deps: ['HasuraConfig', CategoryProductHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: 'WishlistRepository',\r\n useExisting: WishlistHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductErrorsHasuraGraphQLRepository,\r\n useFactory: (\r\n options: HasuraConstructorParams<ProductErrors>,\r\n productRepository: ProductHasuraGraphQLRepository,\r\n ): ProductErrorsRepository => {\r\n return new ProductErrorsHasuraGraphQLRepository(options, productRepository)\r\n },\r\n deps: ['HasuraConfig', ProductHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: 'ProductErrorsRepository',\r\n useExisting: ProductErrorsHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductCatalogHasuraGraphQLRepository,\r\n useFactory: (options: any): ProductCatalogHasuraGraphQLRepository => {\r\n return new ProductCatalogHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'ProductCatalogRepository',\r\n useExisting: ProductCatalogHasuraGraphQLRepository,\r\n },\r\n ],\r\n})\r\nexport class AngularHasuraGraphQLModule {\r\n static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule> {\r\n return {\r\n ngModule: AngularHasuraGraphQLModule,\r\n providers: [{ provide: HASURA_OPTIONS, useValue: options }],\r\n }\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { ProductsVertexSearch, VertexAxiosAdapter, VertexSearchConfig } from '@infrab4a/connect'\r\n\r\nimport { VERTEX_CONFIG } from './consts'\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: ProductsVertexSearch,\r\n useFactory: (configuration: VertexSearchConfig): ProductsVertexSearch =>\r\n new ProductsVertexSearch(new VertexAxiosAdapter(configuration)),\r\n deps: [VERTEX_CONFIG],\r\n },\r\n ],\r\n})\r\nexport class AngularVertexSeachModule {\r\n static initializeApp(options: VertexSearchConfig): ModuleWithProviders<AngularVertexSeachModule> {\r\n return {\r\n ngModule: AngularVertexSeachModule,\r\n providers: [{ provide: VERTEX_CONFIG, useValue: options }],\r\n }\r\n }\r\n}\r\n","export const STORAGE_BASE_URL = 'STORAGE_BASE_URL'\r\n","import { Injectable } from '@angular/core'\r\nimport cookie from 'js-cookie'\r\nimport { Observable, from, of } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { DataPersistence } from './data-persistence'\r\n\r\n@Injectable()\r\nexport class CookieDataPersistence implements DataPersistence {\r\n get(key: string): Observable<string> {\r\n return of(cookie.get(key))\r\n }\r\n\r\n remove(key: string): Observable<void> {\r\n return of(cookie.remove(key))\r\n }\r\n\r\n set(key: string, value: string): Observable<void> {\r\n return from(cookie.set(key, value)).pipe(map(() => {}))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Auth, User as FirebaseUser, authState, getIdToken } from '@angular/fire/auth'\r\nimport { User, UserRepository } from '@infrab4a/connect'\r\nimport { Observable, combineLatest, from, of } from 'rxjs'\r\nimport { catchError, map, mergeMap } from 'rxjs/operators'\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n constructor(\r\n private readonly angularFireAuth: Auth,\r\n @Inject('UserRepository') private readonly userRepository: UserRepository,\r\n ) {}\r\n\r\n getAuthstate(): Observable<{ user: User; isAnonymous: boolean }> {\r\n const observables: [Observable<FirebaseUser>, Observable<User>] = [this.getFireUser(), this.getUser()]\r\n\r\n return combineLatest(observables).pipe(\r\n map(([fireUser, user]) => ({\r\n user,\r\n isAnonymous: fireUser?.isAnonymous,\r\n })),\r\n )\r\n }\r\n\r\n getUser(): Observable<User> {\r\n return this.getFireUser().pipe(\r\n map((user) => user?.uid),\r\n mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))),\r\n )\r\n }\r\n\r\n getTokenId(): Observable<string> {\r\n return from(getIdToken(this.angularFireAuth.currentUser))\r\n }\r\n\r\n getFireUser(): Observable<FirebaseUser> {\r\n return authState(this.angularFireAuth).pipe(catchError(() => of(null)))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CheckoutRepository, UserRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CheckoutRepositoriesFacade {\r\n constructor(\r\n @Inject('CheckoutRepository') public readonly checkoutRepository: CheckoutRepository,\r\n @Inject('UserRepository') public readonly userRepository: UserRepository,\r\n ) {}\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable } from '@angular/core'\r\n\r\nimport { PERSISTENCE_PROVIDER } from '../../consts'\r\nimport { DataPersistence } from '../../persistence'\r\n\r\n@Injectable()\r\nexport class CheckoutDependenciesFacade {\r\n constructor(\r\n @Inject(PERSISTENCE_PROVIDER) public readonly dataPersistence: DataPersistence,\r\n public readonly httpClient: HttpClient,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { FirebaseOptions } from '@angular/fire/app'\r\nimport { Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP, FIREBASE_OPTIONS } from '../../consts'\r\n\r\n@Injectable()\r\nexport class ConfigurationFacade {\r\n constructor(\r\n @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,\r\n @Inject(FIREBASE_OPTIONS) public readonly firebaseOptions: FirebaseOptions,\r\n ) {}\r\n\r\n getCheckoutUrl(): string {\r\n return `https://southamerica-east1-${this.firebaseOptions.projectId}.cloudfunctions.net`\r\n }\r\n\r\n getProjectId(): string {\r\n return this.firebaseOptions.projectId\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n Checkout,\r\n CheckoutPayloadRequest,\r\n CheckoutResponse,\r\n CheckoutStockValidation,\r\n CheckoutTypes,\r\n Coupon,\r\n isNil,\r\n NotFoundError,\r\n pick,\r\n ShippingMethodResponse,\r\n ShippingProductRequest,\r\n User,\r\n UserAddress,\r\n} from '@infrab4a/connect'\r\nimport { from, Observable, of, throwError } from 'rxjs'\r\nimport { concatMap, map } from 'rxjs/operators'\r\n\r\nimport { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './checkout'\r\nimport { ConfigurationFacade } from './shared'\r\nimport { RequiredCheckoutData } from './types'\r\n\r\n@Injectable()\r\nexport class CheckoutService {\r\n private checkoutUrl: string = null\r\n\r\n constructor(\r\n private readonly repositoriesFacade: CheckoutRepositoriesFacade,\r\n private readonly dependenciesFacade: CheckoutDependenciesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {\r\n this.checkoutUrl = this.configurationFacade.getCheckoutUrl()\r\n }\r\n\r\n getCheckout(checkoutData?: RequiredCheckoutData): Observable<Checkout> {\r\n return this.dependenciesFacade.dataPersistence\r\n .get('checkoutId')\r\n .pipe(\r\n concatMap((id) =>\r\n !isNil(id) ? this.repositoriesFacade.checkoutRepository.get({ id }) : this.createCheckout(checkoutData),\r\n ),\r\n )\r\n }\r\n\r\n getUserByCheckout(checkoutId: string): Observable<User> {\r\n return from(this.repositoriesFacade.checkoutRepository.get({ id: checkoutId })).pipe(\r\n concatMap((checkout) =>\r\n checkout?.user?.id\r\n ? of(checkout.user)\r\n : from(this.repositoriesFacade.userRepository.get({ id: checkout.user.id })),\r\n ),\r\n concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))),\r\n )\r\n }\r\n\r\n updateCheckoutLineItems(checkout: Partial<Checkout>): Observable<Checkout> {\r\n return from(\r\n this.repositoriesFacade.checkoutRepository.update(\r\n Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems }),\r\n ),\r\n )\r\n }\r\n\r\n updateCheckoutUser(checkout: Partial<Checkout>): Observable<Checkout> {\r\n return from(\r\n this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })),\r\n )\r\n }\r\n\r\n clearCheckoutFromSession(): Observable<void> {\r\n return this.dependenciesFacade.dataPersistence.remove('checkoutId')\r\n }\r\n\r\n resetCheckoutValues(): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutResetValues`, {\r\n checkoutId: checkout.id,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n )\r\n }\r\n\r\n applyCouponDiscount(nickname: string, checkoutType: CheckoutTypes): Observable<Coupon> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutApplyDiscount`, {\r\n checkoutId: checkout.id,\r\n coupon: nickname,\r\n checkoutType,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n map((checkout) => checkout.coupon),\r\n )\r\n }\r\n\r\n removeCouponDiscount(): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveDiscount`, {\r\n checkoutId: checkout.id,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n )\r\n }\r\n\r\n validateStockProducts(): Observable<CheckoutStockValidation> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post<{\r\n valid: boolean\r\n outOfStock: string[]\r\n limitedStock: string[]\r\n }>(`${this.checkoutUrl}/checkoutValidateProductStock`, {\r\n checkoutId: checkout.id,\r\n }),\r\n ),\r\n )\r\n }\r\n\r\n selectShippingAddress(address: UserAddress): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) => {\r\n return this.repositoriesFacade.checkoutRepository.update(\r\n Checkout.toInstance({ id: checkout.id, shippingAddress: address, billingAddress: address }),\r\n )\r\n }),\r\n )\r\n }\r\n\r\n getAvailableShippingForProduct(productShipping: ShippingProductRequest): Observable<ShippingMethodResponse[]> {\r\n return this.dependenciesFacade.httpClient.post<ShippingMethodResponse[]>(\r\n `${this.checkoutUrl}/checkoutGetAvailableShipping`,\r\n {\r\n checkoutId: null,\r\n productShipping,\r\n },\r\n )\r\n }\r\n\r\n getAvailableShippingForCheckout(): Observable<ShippingMethodResponse[]> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post<ShippingMethodResponse[]>(\r\n `${this.checkoutUrl}/checkoutGetAvailableShipping`,\r\n {\r\n checkoutId: checkout.id,\r\n productShipping: null,\r\n },\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n selectShipping(option: string): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutSelectShipping`, {\r\n checkoutId: checkout.id,\r\n shippingOption: option,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n )\r\n }\r\n\r\n createOrder(\r\n checkoutPayload: CheckoutPayloadRequest,\r\n paymentProvider: string,\r\n applicationVersion: string,\r\n ): Observable<CheckoutResponse> {\r\n return this.dependenciesFacade.httpClient.post<CheckoutResponse>(`${this.checkoutUrl}/checkoutV5`, {\r\n data: {\r\n ...checkoutPayload,\r\n applicationVersion,\r\n paymentProvider,\r\n },\r\n })\r\n }\r\n\r\n private async createCheckout(checkoutData?: RequiredCheckoutData): Promise<Checkout> {\r\n const checkout = await this.repositoriesFacade.checkoutRepository.create({\r\n createdAt: new Date(),\r\n ...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),\r\n shop: checkoutData?.shop || this.configurationFacade.defaultShop,\r\n })\r\n\r\n await this.dependenciesFacade.dataPersistence.set('checkoutId', checkout.id).toPromise()\r\n\r\n return checkout\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\n\r\nimport { AuthService } from '../auth.service'\r\nimport { CheckoutService } from '../checkout.service'\r\n\r\n@Injectable()\r\nexport class CartServicesFacade {\r\n constructor(\r\n public readonly authService: AuthService,\r\n public readonly checkoutService: CheckoutService,\r\n public readonly httpClient: HttpClient,\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Checkout, LineItem, User } from '@infrab4a/connect'\r\nimport { Observable, of, Subject } from 'rxjs'\r\nimport { concatMap, map, tap } from 'rxjs/operators'\r\n\r\nimport { RequiredCheckoutData } from './types'\r\nimport { CartServicesFacade } from './cart'\r\nimport { ConfigurationFacade } from './shared'\r\n\r\nexport type Cart = {\r\n [id: string]: LineItem\r\n}\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private cartSubject: Subject<Cart> = new Subject()\r\n private checkoutUrl: string = null\r\n\r\n constructor(\r\n private readonly servicesFacade: CartServicesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {\r\n this.checkoutUrl = this.configurationFacade.getCheckoutUrl()\r\n }\r\n\r\n addItem(item: LineItem, quantity: number = 1): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutAddItemToCart`, {\r\n checkoutId: checkout.id,\r\n productId: item.id,\r\n quantity,\r\n }),\r\n ),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n decreaseItem(item: LineItem): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutDecreaseProductFromCart`, {\r\n checkoutId: checkout.id,\r\n productId: item.id,\r\n quantity: 1,\r\n }),\r\n ),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n removeItem(item: LineItem): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveProductFromCart`, {\r\n checkoutId: checkout.id,\r\n productId: item.id,\r\n }),\r\n ),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n updateUserCart(user: User): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.checkoutService.updateCheckoutUser(Checkout.toInstance({ ...checkout.toPlain(), user })),\r\n ),\r\n concatMap((checkout) => {\r\n return this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutUpdateUserCart`, {\r\n checkoutId: checkout.id,\r\n })\r\n }),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => {\r\n return this.generateCartObject(updatedCheckout.lineItems)\r\n }),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n getCart(checkout?: RequiredCheckoutData): Observable<Cart> {\r\n this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart))\r\n\r\n return this.cartSubject\r\n }\r\n\r\n clearCart(): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n map((checkout) => {\r\n this.servicesFacade.checkoutService.clearCheckoutFromSession()\r\n\r\n return checkout\r\n }),\r\n concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n private buildCartFromCheckout(checkoutData?: RequiredCheckoutData): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout(checkoutData).pipe(\r\n map((checkout) => checkout.lineItems),\r\n concatMap((lineItems) => of(this.generateCartObject(lineItems))),\r\n )\r\n }\r\n\r\n private generateCartObject = (items: LineItem[]): Cart =>\r\n items?.reduce(\r\n (cart, item) => ({\r\n ...cart,\r\n [item.id]: LineItem.toInstance({\r\n ...(cart[item.id] || item),\r\n quantity: (cart[item.id]?.quantity || 0) + (item.quantity ? item.quantity : 1),\r\n }),\r\n }),\r\n {} as Record<string, LineItem>,\r\n ) || {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Category, CategoryRepository, isNil, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'\r\n\r\nimport { CategoryStructureAdapter } from './category-structure.adapter'\r\n\r\n@Injectable()\r\nexport class NewCategoryStructureAdapter implements CategoryStructureAdapter {\r\n constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}\r\n\r\n async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {\r\n const loadedCategory = await this.getCategory(category)\r\n\r\n if (loadedCategory.isCollection) return { id: { operator: Where.IN, value: loadedCategory.products } }\r\n\r\n const categoryIds = [...(await this.getAllCategoriesIdFromCategory(category)), category.id.toString()]\r\n\r\n return {\r\n category: {\r\n id: {\r\n operator: Where.IN,\r\n value: categoryIds,\r\n },\r\n },\r\n }\r\n }\r\n\r\n private async getAllCategoriesIdFromCategory(category: Category): Promise<string[]> {\r\n return this.categoryRepository\r\n .getChildren(+category.id)\r\n .then((categories) => categories.map((category) => category.id.toString()))\r\n }\r\n\r\n private async getCategory(category: Category): Promise<Category> {\r\n const collectionCategory =\r\n category.isCollection ||\r\n (isNil(category.isCollection) && !category.products?.length) ||\r\n category.isWishlist ||\r\n category.brandCategory\r\n\r\n return collectionCategory ? this.categoryRepository.get({ id: category.id }) : category\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Category, CategoryRepository, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'\r\n\r\nimport { CategoryStructureAdapter } from './category-structure.adapter'\r\n\r\n@Injectable()\r\nexport class OldCategoryStructureAdapter implements CategoryStructureAdapter {\r\n constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}\r\n\r\n async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {\r\n const productsIds = category.products?.length\r\n ? category.products\r\n : await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products)\r\n\r\n return { id: { operator: Where.IN, value: productsIds } }\r\n }\r\n}\r\n","import { Product, RepositoryCacheOptions, RepositoryFindResult, Shops } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\n\r\nexport class CatalogSearchContext {\r\n private strategies = new Map<string, CatalogSearchStrategy>()\r\n\r\n constructor(\r\n private readonly categoryStrategy: CatalogSearchStrategy,\r\n private readonly termStrategy: CatalogSearchStrategy,\r\n private readonly profileStrategy: CatalogSearchStrategy,\r\n ) {\r\n this.initializeStrategies()\r\n }\r\n\r\n async executeSearch(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const strategy = this.selectStrategy(params)\r\n\r\n return strategy.search(params, shop, optionsCache)\r\n }\r\n\r\n private initializeStrategies(): void {\r\n this.strategies.set('category', this.categoryStrategy)\r\n this.strategies.set('term', this.termStrategy)\r\n this.strategies.set('profile', this.profileStrategy)\r\n }\r\n\r\n private selectStrategy(params: CatalogSearchParams): CatalogSearchStrategy {\r\n if (params.category) {\r\n const strategy = this.strategies.get('category')\r\n\r\n if (!strategy) throw new Error('Category strategy not found')\r\n\r\n return strategy\r\n }\r\n\r\n if (params.term) {\r\n const strategy = this.strategies.get('term')\r\n\r\n if (!strategy) throw new Error('Term strategy not found')\r\n\r\n return strategy\r\n }\r\n\r\n if (params.profile?.length) {\r\n const strategy = this.strategies.get('profile')\r\n\r\n if (!strategy) throw new Error('Profile strategy not found')\r\n\r\n return strategy\r\n }\r\n\r\n throw new Error('No valid search strategy found for the given parameters')\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { isEmpty, Product, RepositoryCacheOptions, RepositoryFindResult, Shops, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\nimport { CatalogHelpersService, CatalogRepositoryService } from '../services'\r\n\r\nimport {\r\n FindAndSortByMostRelevantParams,\r\n SearchDefaultParams,\r\n SearchWithMostRelevantParams,\r\n} from './types/strategy-params.type'\r\n\r\n@Injectable()\r\nexport class CategorySearchStrategy implements CatalogSearchStrategy {\r\n constructor(\r\n private readonly repositoryService: CatalogRepositoryService,\r\n private readonly helpersService: CatalogHelpersService,\r\n ) {}\r\n\r\n async search(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { category, filters, limits, sort, mainGender } = params\r\n\r\n if (!category) {\r\n throw new Error('Category is required for CategorySearchStrategy')\r\n }\r\n\r\n const fields = this.helpersService.getFieldsHelper().getStandardFields()\r\n\r\n if (sort === 'most-relevant') {\r\n return this.searchWithMostRelevant({\r\n category,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n optionsCache,\r\n fields,\r\n })\r\n }\r\n\r\n return this.searchDefault({\r\n category,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n sort,\r\n optionsCache,\r\n fields,\r\n })\r\n }\r\n\r\n private async searchWithMostRelevant(params: SearchWithMostRelevantParams) {\r\n const { category, filters, shop, optionsCache } = params\r\n const mostRelevant = category.isWishlist ? [] : category.getMostRelevantByShop(shop)\r\n const productsIds = await this.getProductIds(category, filters, optionsCache)\r\n\r\n return this.findAndSortByMostRelevant({\r\n mostRelevants: mostRelevant,\r\n productIds: productsIds,\r\n filters: params.filters,\r\n limits: params.limits,\r\n shop: params.shop,\r\n mainGender: params.mainGender,\r\n optionsCache: params.optionsCache,\r\n fields: params.fields,\r\n })\r\n }\r\n\r\n private async searchDefault(params: SearchDefaultParams) {\r\n const { category, filters, limits, sort, optionsCache, fields } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n const sortHelper = this.helpersService.getSortHelper()\r\n\r\n const repoParams = {\r\n fields,\r\n filters: {\r\n ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),\r\n limits,\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n distinct: ['brand'],\r\n },\r\n }\r\n\r\n return productCatalog.productCatalogRepository.findCatalog(repoParams, null, optionsCache)\r\n }\r\n\r\n private async getProductIds(category: any, filters: any, optionsCache: any): Promise<string[]> {\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n\r\n return productCatalog.productCatalogRepository\r\n .findCatalog(\r\n {\r\n fields: ['id'],\r\n filters: {\r\n ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n },\r\n undefined,\r\n optionsCache,\r\n )\r\n .then((products) => products.data.map((product) => product.id))\r\n }\r\n\r\n private async findAndSortByMostRelevant(\r\n params: FindAndSortByMostRelevantParams,\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { mostRelevants, productIds, filters, shop, mainGender, optionsCache, fields, limits } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n const sortHelper = this.helpersService.getSortHelper()\r\n\r\n const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))]\r\n const totalResult = await productCatalog.productCatalogRepository.findCatalog(\r\n {\r\n fields,\r\n filters: {\r\n id: { operator: Where.IN, value: mostRelevantProductsIds },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n orderBy: sortHelper.buildSortQuery('best-sellers'),\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),\r\n },\r\n },\r\n mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n optionsCache,\r\n )\r\n\r\n return this.sortProductsByRelevance(totalResult, mostRelevants, limits)\r\n }\r\n\r\n private sortProductsByRelevance(totalResult: any, mostRelevants: string[], limits: any) {\r\n const mostRelevantWithoutStock = totalResult.data.filter(\r\n (product: any) => mostRelevants.includes(product.id) && product.stock.quantity <= 0,\r\n )\r\n const firstProducts = totalResult.data\r\n .filter((product: any) => mostRelevants.includes(product.id) && product.stock.quantity > 0)\r\n .sort((a: any, b: any) => mostRelevants.indexOf(a.id) - mostRelevants.indexOf(b.id))\r\n const lastProducts = totalResult.data\r\n .filter((product: any) => !mostRelevants.includes(product.id))\r\n .concat(mostRelevantWithoutStock)\r\n const categoryMostRelevants = firstProducts.concat(lastProducts)\r\n const resultFinal = categoryMostRelevants.slice(limits.offset, limits.offset + limits.limit)\r\n\r\n return {\r\n data: resultFinal,\r\n count: totalResult.count,\r\n maximum: totalResult.maximum,\r\n minimal: totalResult.minimal,\r\n distinct: totalResult.distinct,\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Product, RepositoryCacheOptions, RepositoryFindResult, Shops, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\nimport { CatalogHelpersService, CatalogRepositoryService } from '../services'\r\n\r\n@Injectable()\r\nexport class ProfileSearchStrategy implements CatalogSearchStrategy {\r\n constructor(\r\n private readonly repositoryService: CatalogRepositoryService,\r\n private readonly helpersService: CatalogHelpersService,\r\n ) {}\r\n\r\n async search(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { profile, filters, limits, sort, mainGender } = params\r\n\r\n if (!profile) {\r\n throw new Error('Profile is required for ProfileSearchStrategy')\r\n }\r\n\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n const sortHelper = this.helpersService.getSortHelper()\r\n const fieldsHelper = this.helpersService.getFieldsHelper()\r\n\r\n const repoParams = {\r\n fields: fieldsHelper.getStandardFields(),\r\n filters: {\r\n tagsProfile: { operator: Where.LIKE, value: profile },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),\r\n limits,\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n distinct: ['brand'],\r\n },\r\n }\r\n\r\n return productCatalog.productCatalogRepository.findCatalog(\r\n repoParams,\r\n mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n optionsCache,\r\n )\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n isEmpty,\r\n Product,\r\n ProductSearch,\r\n RepositoryCacheOptions,\r\n RepositoryFindResult,\r\n Shops,\r\n Where,\r\n} from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\nimport { CatalogHelpersService, CatalogRepositoryService } from '../services'\r\n\r\nimport {\r\n SortByTermRelevanceParams,\r\n TermSearchDefaultParams,\r\n TermSearchMostRelevantParams,\r\n} from './types/strategy-params.type'\r\n\r\n@Injectable()\r\nexport class TermSearchStrategy implements CatalogSearchStrategy {\r\n private productsByTerm: Record<string, string[]> = {}\r\n\r\n constructor(\r\n private readonly repositoryService: CatalogRepositoryService,\r\n private readonly helpersService: CatalogHelpersService,\r\n ) {}\r\n\r\n async search(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n _optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { term, filters, limits, sort, mainGender } = params\r\n\r\n if (!term) {\r\n throw new Error('Term is required for TermSearchStrategy')\r\n }\r\n\r\n const productIds = await this.findCatalogIdsBySearch(term, shop)\r\n\r\n if (sort === 'most-relevant') {\r\n return this.searchWithMostRelevant({\r\n productIds,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n })\r\n }\r\n\r\n return this.searchDefault({\r\n productIds,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n fields: this.helpersService.getFieldsHelper().getStandardFields(),\r\n })\r\n }\r\n\r\n private async searchWithMostRelevant(params: TermSearchMostRelevantParams): Promise<RepositoryFindResult<Product>> {\r\n const { productIds, filters, shop, mainGender } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n\r\n const totalResult = await productCatalog.productCatalogRepository.findCatalog(\r\n {\r\n fields: ['id', 'stock', 'gender'],\r\n filters: {\r\n id: { operator: Where.IN, value: productIds },\r\n published: { operator: Where.EQUALS, value: true },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),\r\n },\r\n },\r\n // mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n )\r\n\r\n return this.sortByTermRelevance({\r\n productIds,\r\n totalResult,\r\n limits: params.limits,\r\n filters,\r\n fieldsHelper: this.helpersService.getFieldsHelper(),\r\n })\r\n }\r\n\r\n private async searchDefault(params: TermSearchDefaultParams): Promise<RepositoryFindResult<Product>> {\r\n const { productIds, filters, limits, shop, mainGender, fields } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n\r\n return productCatalog.productCatalogRepository.findCatalog(\r\n {\r\n fields,\r\n filters: {\r\n id: { operator: Where.IN, value: productIds },\r\n published: { operator: Where.EQUALS, value: true },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n limits,\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n distinct: ['brand'],\r\n },\r\n },\r\n // mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n )\r\n }\r\n\r\n private sortByTermRelevance(params: SortByTermRelevanceParams) {\r\n const { productIds, totalResult, limits, filters, fieldsHelper } = params\r\n // const defaultGender = filters?.gender?.at(0) || 'male'\r\n const stockData = totalResult.data.filter((product: any) => product.stock.quantity > 0)\r\n const stockOut = totalResult.data.filter((product: any) => product.stock.quantity <= 0)\r\n const productIdsStock = productIds.filter((product) => stockData.some((result: any) => result.id === product))\r\n const productIdsStockOut = productIds.filter((product) => stockOut.some((result: any) => result.id === product))\r\n const limitedProductId = productIdsStock\r\n .concat(productIdsStockOut)\r\n .slice(limits.offset, limits.offset + limits.limit)\r\n\r\n return this.getDetailedProducts(limitedProductId, totalResult, fieldsHelper)\r\n }\r\n\r\n private async getDetailedProducts(orderedId: string[], totalResult: any, fieldsHelper: any) {\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const fields = fieldsHelper.getStandardFields()\r\n const productResult = await productCatalog.productCatalogRepository.findCatalog({\r\n filters: {\r\n id: { operator: Where.IN, value: orderedId },\r\n },\r\n fields,\r\n })\r\n\r\n return {\r\n data: orderedId.map((id) => productResult.data.find((product) => product.id === id)).filter(Boolean),\r\n count: totalResult.count,\r\n maximum: totalResult.maximum,\r\n minimal: totalResult.minimal,\r\n distinct: totalResult.distinct,\r\n }\r\n }\r\n\r\n private async findCatalogIdsBySearch(term: string, shop: Shops): Promise<string[]> {\r\n if (this.productsByTerm[term]) return this.productsByTerm[term]\r\n\r\n const productServices = this.repositoryService.getProductServices()\r\n\r\n return (this.productsByTerm[term] = await productServices.productSearch\r\n .search<ProductSearch>(term, 999, shop === Shops.GLAMSHOP ? 'female' : 'male')\r\n .then((products) => [...new Set(products.map((product) => product.id))]))\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\nimport { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from '../strategies'\r\n\r\n@Injectable()\r\nexport class CatalogStrategiesFacade {\r\n constructor(\r\n public readonly categoryStrategy: CategorySearchStrategy,\r\n public readonly termStrategy: TermSearchStrategy,\r\n public readonly profileStrategy: ProfileSearchStrategy,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../../consts'\r\nimport { CatalogService } from '../catalog.service'\r\nimport { CatalogSearchContext } from '../context/catalog-search.context'\r\nimport { CatalogHelpersService } from '../services'\r\n\r\nimport { CatalogStrategiesFacade } from './catalog-strategies.facade'\r\n\r\n@Injectable()\r\nexport class CatalogServiceFacade {\r\n private catalogService: CatalogService\r\n\r\n constructor(\r\n private readonly helpersService: CatalogHelpersService,\r\n private readonly strategiesFacade: CatalogStrategiesFacade,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {\r\n const searchContext = new CatalogSearchContext(\r\n this.strategiesFacade.categoryStrategy,\r\n this.strategiesFacade.termStrategy,\r\n this.strategiesFacade.profileStrategy,\r\n )\r\n\r\n this.catalogService = new CatalogService(searchContext, this.helpersService, this.shop)\r\n }\r\n\r\n getCatalogService(): CatalogService {\r\n return this.catalogService\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CategoryFilterRepository, CategoryRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CategoryRepositoryFacade {\r\n constructor(\r\n @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,\r\n @Inject('CategoryFilterRepository') public readonly categoryFilterRepository: CategoryFilterRepository,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Category, Filter, ProductGender, RepositoryCacheOptions, Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../consts'\r\n\r\nimport { CategoryRepositoryFacade, ProductCatalogFacade } from './facades'\r\n\r\ntype FetchBrandsOptions = {\r\n mainGender?: ProductGender\r\n shop?: Shops\r\n}\r\n\r\n@Injectable()\r\nexport class CategoryService {\r\n constructor(\r\n private readonly categoryFacade: CategoryRepositoryFacade,\r\n private readonly productCatalog: ProductCatalogFacade,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {}\r\n\r\n async fetchBrands(\r\n category: Category,\r\n options?: FetchBrandsOptions,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<Category[]> {\r\n const brands = await this.productCatalog.productCatalogRepository\r\n .findCatalog(\r\n {\r\n filters: await this.productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category),\r\n fields: ['brand'],\r\n },\r\n null,\r\n optionsCache,\r\n )\r\n .then(({ data }) =>\r\n Object.keys(data.map((product) => product.brand).reduce((brands, brand) => ({ ...brands, [brand]: true }), {})),\r\n )\r\n\r\n return this.categoryFacade.categoryRepository\r\n .find(\r\n { filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } },\r\n optionsCache,\r\n )\r\n .then(({ data }) => data.filter((category) => brands.includes(category.conditions.brand)))\r\n }\r\n\r\n async getMenuBrands() {\r\n return this.categoryFacade.categoryRepository.getBrandsWithProducts()\r\n }\r\n\r\n async fetchFilterOptions(category: Category, optionsCache?: { cache?: RepositoryCacheOptions }): Promise<Filter[]> {\r\n return await this.categoryFacade.categoryFilterRepository\r\n .find({ filters: { categoryId: +category.id } }, optionsCache)\r\n .then(({ data }) => data.map((categoryFilter) => categoryFilter.filter))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ProductCatalogRepository } from '@infrab4a/connect'\r\n\r\nimport { CATEGORY_STRUCTURE } from '../../../consts'\r\nimport { CategoryStructureAdapter } from '../adapters'\r\n\r\n@Injectable()\r\nexport class ProductCatalogFacade {\r\n constructor(\r\n @Inject('ProductCatalogRepository') public readonly productCatalogRepository: ProductCatalogRepository,\r\n @Inject(CATEGORY_STRUCTURE) public readonly categoryStructureAdapter: CategoryStructureAdapter,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../../consts'\r\nimport { CategoryService } from '../category.service'\r\n\r\nimport { CategoryRepositoryFacade } from './category-repository.facade'\r\nimport { ProductCatalogFacade } from './product-catalog.facade'\r\n\r\n@Injectable()\r\nexport class CategoryServiceFacade {\r\n private categoryService: CategoryService\r\n\r\n constructor(\r\n private readonly categoryRepositoryFacade: CategoryRepositoryFacade,\r\n private readonly productCatalogFacade: ProductCatalogFacade,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {\r\n this.categoryService = new CategoryService(this.categoryRepositoryFacade, this.productCatalogFacade, this.shop)\r\n }\r\n\r\n getCategoryService(): CategoryService {\r\n return this.categoryService\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { isEmpty, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams } from '../../../interfaces'\r\nimport { ProductCatalogFacade } from '../facades'\r\n\r\n@Injectable()\r\nexport class BrandManagerHelper {\r\n private brandsList: Record<string, string[]> = {}\r\n\r\n constructor(private readonly productCatalog: ProductCatalogFacade) {}\r\n\r\n async setBrandsList(options: CatalogSearchParams, brands: string[]): Promise<void> {\r\n const filterBrands = options.filters?.brands\r\n const indexKey = this.buildIndexBrands(options)\r\n\r\n if (isEmpty(brands) && options.filters) {\r\n delete options.filters.brands\r\n }\r\n\r\n if (!this.brandsList[indexKey] && !brands) {\r\n this.brandsList[indexKey] = await this.fetchBrandsOnly(options)\r\n } else {\r\n this.brandsList[indexKey] = this.brandsList[indexKey] || brands\r\n }\r\n\r\n // this.brandsList[indexKey] = this.brandsList[indexKey] || brands || (await this.fetchBrandsOnly(options))\r\n this.brandsList[indexKey] = this.brandsList[indexKey].filter(Boolean)\r\n\r\n if (options.filters) {\r\n options.filters = {\r\n ...options.filters,\r\n brands: filterBrands,\r\n }\r\n }\r\n }\r\n\r\n getBrandsList(indexKey: string): string[] {\r\n return this.brandsList[indexKey]\r\n }\r\n\r\n buildIndexBrands(options: CatalogSearchParams): string {\r\n if (options.category) return `category-${options.category.id}`\r\n\r\n if (options.term) return `term-${options.term}`\r\n\r\n if (options.profile) return `profile-${options.profile.join(',')}`\r\n\r\n return ''\r\n }\r\n\r\n private async fetchBrandsOnly(options: CatalogSearchParams): Promise<string[]> {\r\n return this.productCatalog.productCatalogRepository\r\n .findCatalog(\r\n {\r\n fields: ['id'],\r\n filters: {\r\n published: { operator: Where.EQUALS, value: true },\r\n },\r\n options: {\r\n distinct: ['brand'],\r\n },\r\n },\r\n options.mainGender,\r\n )\r\n .then((result) => result.distinct.brand)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Product, RepositoryFindFielters, set, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogFilters } from '../../../interfaces'\r\n\r\n@Injectable()\r\nexport class CatalogFilterHelper {\r\n buildFilterQuery(filters: CatalogFilters): RepositoryFindFielters<Product> {\r\n const filterQuery = {} as RepositoryFindFielters<Product>\r\n\r\n if (filters.clubDiscount?.length) {\r\n set(filterQuery, 'price.subscriberDiscountPercentage', {\r\n operator: Where.IN,\r\n value: filters.clubDiscount,\r\n })\r\n }\r\n\r\n if (filters.brands?.length) {\r\n filterQuery.brand = { operator: Where.IN, value: filters.brands }\r\n }\r\n\r\n if (filters.gender?.length) {\r\n filterQuery.gender = { operator: Where.IN, value: filters.gender }\r\n }\r\n\r\n if (filters.prices?.min || filters.prices?.max) {\r\n const priceField = filters.prices.subscriberPrice ? 'price.subscriberPrice' : 'price.price'\r\n const priceFilters = [\r\n ...(filters.prices.min ? [{ operator: Where.GTE, value: Math.floor(filters.prices.min) }] : []),\r\n ...(filters.prices.max ? [{ operator: Where.LTE, value: Math.ceil(filters.prices.max) }] : []),\r\n ]\r\n\r\n set(filterQuery, priceField, priceFilters)\r\n }\r\n\r\n if (filters.rate) {\r\n filterQuery.rate = { operator: Where.GTE, value: filters.rate }\r\n }\r\n\r\n if (filters.tags?.length) {\r\n filterQuery.tagsProfile = { operator: Where.LIKE, value: filters.tags }\r\n }\r\n\r\n if (filters.customOptions?.length) {\r\n filterQuery.filters = { operator: Where.LIKE, value: filters.customOptions }\r\n }\r\n\r\n return filterQuery\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Product, RepositoryOrderBy } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CatalogSortHelper {\r\n buildSortQuery(sort: string): RepositoryOrderBy<Product> {\r\n if (!sort || sort === 'most-relevant') return {}\r\n\r\n switch (sort) {\r\n case 'best-sellers':\r\n return {\r\n shoppingCount: 'desc',\r\n rate: 'desc',\r\n stock: 'desc',\r\n name: 'asc',\r\n }\r\n\r\n case 'biggest-price':\r\n return {\r\n subscriberPrice: 'desc',\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n } as any\r\n\r\n case 'lowest-price':\r\n return {\r\n subscriberPrice: 'asc',\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n } as any\r\n\r\n case 'best-rating':\r\n return {\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n stock: 'desc',\r\n name: 'asc',\r\n }\r\n\r\n case 'news':\r\n return { createdAt: 'desc' }\r\n\r\n case 'biggest-discount':\r\n return {\r\n subscriberDiscountPercentage: 'desc',\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n } as any\r\n\r\n default:\r\n return {}\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { NonFunctionPropertyNames, Product } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class ProductFieldsHelper {\r\n getStandardFields(): NonFunctionPropertyNames<Product>[] {\r\n return [\r\n 'id',\r\n 'name',\r\n 'slug',\r\n 'images',\r\n 'imagesCard',\r\n 'miniatures',\r\n 'price',\r\n 'stock',\r\n 'published',\r\n 'CEST',\r\n 'EAN',\r\n 'NCM',\r\n 'brand',\r\n 'costPrice',\r\n 'hasVariants',\r\n 'isKit',\r\n 'sku',\r\n 'rate',\r\n 'tagsProfile',\r\n 'tagsCollection',\r\n 'type',\r\n 'shoppingCount',\r\n 'gender',\r\n 'createdAt',\r\n 'label',\r\n 'outlet',\r\n 'group',\r\n 'variantSlug',\r\n ]\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\nimport { CatalogFilterHelper, CatalogSortHelper, ProductFieldsHelper } from '../helpers'\r\n\r\n@Injectable()\r\nexport class CatalogOperationsFacade {\r\n constructor(\r\n private readonly filterHelper: CatalogFilterHelper,\r\n private readonly sortHelper: CatalogSortHelper,\r\n private readonly fieldsHelper: ProductFieldsHelper,\r\n ) {}\r\n\r\n getFilterHelper(): CatalogFilterHelper {\r\n return this.filterHelper\r\n }\r\n\r\n getSortHelper(): CatalogSortHelper {\r\n return this.sortHelper\r\n }\r\n\r\n getFieldsHelper(): ProductFieldsHelper {\r\n return this.fieldsHelper\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\n\r\nimport { ProductServicesFacade } from '../../../interfaces'\r\nimport { BrandManagerHelper } from '../helpers'\r\n\r\n@Injectable()\r\nexport class ProductManagementFacade {\r\n constructor(\r\n private readonly brandManager: BrandManagerHelper,\r\n @Inject('ProductServicesFacade') private readonly productServices: ProductServicesFacade,\r\n ) {}\r\n\r\n getBrandManager(): BrandManagerHelper {\r\n return this.brandManager\r\n }\r\n\r\n getProductServices(): ProductServicesFacade {\r\n return this.productServices\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\nimport { ProductServicesFacade } from '../../../interfaces'\r\nimport { BrandManagerHelper, CatalogFilterHelper, CatalogSortHelper, ProductFieldsHelper } from '../helpers'\r\n\r\nimport { CatalogOperationsFacade } from './catalog-operations.facade'\r\nimport { ProductManagementFacade } from './product-management.facade'\r\n\r\n@Injectable()\r\nexport class CatalogHelpersService {\r\n constructor(\r\n private readonly catalogOperations: CatalogOperationsFacade,\r\n private readonly productManagement: ProductManagementFacade,\r\n ) {}\r\n\r\n getFilterHelper(): CatalogFilterHelper {\r\n return this.catalogOperations.getFilterHelper()\r\n }\r\n\r\n getSortHelper(): CatalogSortHelper {\r\n return this.catalogOperations.getSortHelper()\r\n }\r\n\r\n getFieldsHelper(): ProductFieldsHelper {\r\n return this.catalogOperations.getFieldsHelper()\r\n }\r\n\r\n getBrandManager(): BrandManagerHelper {\r\n return this.productManagement.getBrandManager()\r\n }\r\n\r\n getProductServices(): ProductServicesFacade {\r\n return this.productManagement.getProductServices()\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\n\r\nimport { ProductServicesFacade } from '../../../interfaces'\r\nimport { ProductCatalogFacade } from '../facades'\r\n\r\n@Injectable()\r\nexport class CatalogRepositoryService {\r\n constructor(\r\n private readonly productCatalog: ProductCatalogFacade,\r\n @Inject('ProductServicesFacade') private readonly productServices: ProductServicesFacade,\r\n ) {}\r\n\r\n getProductCatalog(): ProductCatalogFacade {\r\n return this.productCatalog\r\n }\r\n\r\n getProductServices(): ProductServicesFacade {\r\n return this.productServices\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n Category,\r\n InvalidArgumentError,\r\n RepositoryCacheOptions,\r\n RoundProductPricesHelper,\r\n Shops,\r\n} from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../consts'\r\nimport { CatalogFilters, CatalogSearchParams } from '../../interfaces'\r\n\r\nimport { CatalogSearchContext } from './context/catalog-search.context'\r\nimport { CatalogHelpersService } from './services'\r\nimport {\r\n BuildResponseParams,\r\n FetchProductsMainParams,\r\n FetchProductsOptions,\r\n FetchProductsParams,\r\n FetchProductsResponse,\r\n StockNotificationParams,\r\n} from './types'\r\n\r\n@Injectable()\r\nexport class CatalogService<T extends Category = Category> {\r\n constructor(\r\n private readonly searchContext: CatalogSearchContext,\r\n private readonly helpersService: CatalogHelpersService,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {}\r\n\r\n async fetchProducts(\r\n options: FetchProductsParams<T>,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<FetchProductsResponse> {\r\n this.validateRequest(options)\r\n\r\n const searchParams = this.buildSearchParams(options)\r\n const {\r\n data,\r\n count: total,\r\n maximum,\r\n minimal,\r\n distinct,\r\n } = await this.searchContext.executeSearch(searchParams, this.shop, optionsCache)\r\n\r\n await this.helpersService.getBrandManager().setBrandsList(searchParams, distinct?.brand)\r\n\r\n return this.buildResponse({\r\n data,\r\n total,\r\n maximum,\r\n minimal,\r\n searchParams,\r\n options,\r\n })\r\n }\r\n\r\n async addCustomerToStockNotification(params: StockNotificationParams): Promise<void> {\r\n const { shop, productId, name, email } = params\r\n const productServices = this.helpersService.getProductServices()\r\n\r\n return productServices.productStockNotificationRepository.addCustomerEmail({\r\n shop,\r\n productId,\r\n name,\r\n email,\r\n })\r\n }\r\n\r\n private validateRequest(options: FetchProductsParams<T>): void {\r\n if (this.hasProfile(options) && options.filters?.customOptions) {\r\n throw new InvalidArgumentError(`It couldn't filled customOptions when profile is given`)\r\n }\r\n\r\n if (this.hasProfile(options) && options.filters?.tags) {\r\n throw new InvalidArgumentError(`It couldn't filled tags when profile is given`)\r\n }\r\n\r\n if (this.hasTerm(options) && options.filters?.customOptions) {\r\n throw new InvalidArgumentError(`It couldn't filled customOptions when term is given`)\r\n }\r\n }\r\n\r\n private buildSearchParams(options: FetchProductsParams<T>): CatalogSearchParams {\r\n const limits = this.buildLimitQuery(options)\r\n\r\n return {\r\n category: this.hasCategory(options) ? options.category : undefined,\r\n profile: this.hasProfile(options) ? options.profile : undefined,\r\n term: this.hasTerm(options) ? options.term : undefined,\r\n filters: options.filters,\r\n mainGender: options.mainGender,\r\n sort: options.sort,\r\n limits,\r\n }\r\n }\r\n\r\n private buildResponse(params: BuildResponseParams<T>): FetchProductsResponse {\r\n const { data, total, maximum, minimal, searchParams } = params\r\n const limits = searchParams.limits\r\n const indexKey = this.helpersService.getBrandManager().buildIndexBrands(searchParams)\r\n\r\n return {\r\n products: {\r\n data: data.map((product) => RoundProductPricesHelper.roundProductPrices(product)),\r\n total,\r\n },\r\n pages: Math.ceil(total / limits.limit),\r\n prices: {\r\n price: {\r\n min: +(minimal?.price?.price?.toFixed(2) || 0),\r\n max: +(maximum?.price?.price?.toFixed(2) || 0),\r\n },\r\n subscriberPrice: {\r\n min: +(minimal?.price?.subscriberPrice?.toFixed(2) || 0),\r\n max: +(maximum?.price?.subscriberPrice?.toFixed(2) || 0),\r\n },\r\n },\r\n brands: this.helpersService.getBrandManager().getBrandsList(indexKey),\r\n }\r\n }\r\n\r\n private buildLimitQuery(options: { page?: number; perPage?: number }): { limit: number; offset: number } {\r\n const limit = options?.perPage || 20\r\n\r\n return {\r\n limit,\r\n offset: ((options?.page || 1) - 1) * limit,\r\n }\r\n }\r\n\r\n private hasProfile(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {\r\n profile: FetchProductsMainParams<T>['profile']\r\n filters?: CatalogFilters & { customOptions?: never; tags?: never }\r\n } {\r\n return 'profile' in options\r\n }\r\n\r\n private hasTerm(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {\r\n term: FetchProductsMainParams<T>['term']\r\n filters?: CatalogFilters & { customOptions?: never }\r\n } {\r\n return 'term' in options\r\n }\r\n\r\n private hasCategory(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {\r\n category: FetchProductsMainParams<T>['category']\r\n filters?: CatalogFilters & { customOptions?: never }\r\n } {\r\n return 'category' in options\r\n }\r\n}\r\n","export enum ProductSorts {\r\n MOST_RELEVANT = 'most-relevant',\r\n BEST_SELLER = 'best-sellers',\r\n BIGGEST_PRICE = 'biggest-price',\r\n LOWEST_PRICE = 'lowest-price',\r\n BIGGEST_DISCOUNT = 'biggest-discount',\r\n BEST_RATING = 'best-rating',\r\n NEWS = 'news',\r\n}\r\n","import { Type } from 'class-transformer'\r\nimport { Category } from '@infrab4a/connect'\r\n\r\nexport class CategoryWithTree extends Category {\r\n @Type(() => CategoryWithTree)\r\n children?: CategoryWithTree[]\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n LogRepository,\r\n PersonType,\r\n PersonTypes,\r\n Product,\r\n ProductCatalogRepository,\r\n ProductRepository,\r\n Shops,\r\n Wishlist,\r\n WishlistLogType,\r\n WishlistRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../consts'\r\n\r\nimport { CatalogService } from './catalog.service'\r\nimport { CategoryService } from './category.service'\r\nimport { CatalogServiceFacade, CategoryServiceFacade } from './facades'\r\n\r\n@Injectable()\r\nexport class WishlistService {\r\n private catalogService: CatalogService\r\n private categoryService: CategoryService\r\n\r\n constructor(\r\n @Inject('WishlistRepository') private readonly wishlistRepository: WishlistRepository,\r\n @Inject('ProductRepository') private readonly productRepository: ProductRepository,\r\n @Inject('ProductCatalogRepository') private readonly productCatalogRepository: ProductCatalogRepository,\r\n @Inject('LogRepository') private readonly logRepository: LogRepository,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {}\r\n\r\n initializeServices(catalogServiceFacade: CatalogServiceFacade, categoryServiceFacade: CategoryServiceFacade): void {\r\n this.catalogService = catalogServiceFacade.getCatalogService()\r\n this.categoryService = categoryServiceFacade.getCategoryService()\r\n }\r\n\r\n getCatalogService() {\r\n return this.catalogService\r\n }\r\n\r\n getCategoryService() {\r\n return this.categoryService\r\n }\r\n\r\n async create({\r\n personId,\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n }: {\r\n personId: string\r\n title: string\r\n description: string\r\n published: boolean\r\n userFullName: string\r\n userPhoto?: string\r\n theme?: string\r\n bannerUrl?: string\r\n personType?: PersonType\r\n personIsSubscriber?: boolean\r\n }): Promise<Wishlist> {\r\n const wishlistData = this.buildWishlistData({\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n personId,\r\n })\r\n\r\n const existingWishlist = await this.findExistingWishlistByPersonId(personId)\r\n\r\n await this.createWishlistLog(WishlistLogType.CREATE, wishlistData as Wishlist)\r\n\r\n if (existingWishlist) return existingWishlist\r\n\r\n return this.createNewWishlist(wishlistData)\r\n }\r\n\r\n private buildWishlistData({\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n personId,\r\n }: {\r\n title: string\r\n description: string\r\n published: boolean\r\n userFullName: string\r\n userPhoto?: string\r\n theme?: string\r\n bannerUrl?: string\r\n personType?: PersonType\r\n personIsSubscriber?: boolean\r\n personId: string\r\n }) {\r\n return {\r\n slug: '',\r\n name: title,\r\n description,\r\n metadatas: [\r\n {\r\n shop: this.shop,\r\n title: `${userFullName} - ${title}`,\r\n description: `${userFullName} - ${description}`,\r\n },\r\n ],\r\n shop: this.shop,\r\n shops: [this.shop],\r\n personId,\r\n personName: userFullName,\r\n personPhoto: userPhoto,\r\n brandCategory: false,\r\n published,\r\n theme,\r\n bannerUrl,\r\n personType: personType ?? PersonTypes.NONE,\r\n personIsSubscriber: personIsSubscriber ?? false,\r\n }\r\n }\r\n\r\n private async findExistingWishlistByPersonId(personId: string): Promise<Wishlist | null> {\r\n const hasWishlist = await this.wishlistRepository\r\n .find({\r\n filters: {\r\n personId,\r\n },\r\n options: {\r\n enableCount: false,\r\n },\r\n orderBy: {\r\n id: 'asc',\r\n },\r\n })\r\n .then((res) => res.data)\r\n\r\n return hasWishlist.length ? hasWishlist.at(0) : null\r\n }\r\n\r\n private async createNewWishlist(data: any): Promise<Wishlist> {\r\n const newWishlist = await this.wishlistRepository.create(data)\r\n\r\n await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id })\r\n\r\n return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id })\r\n }\r\n\r\n async update({\r\n id,\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n }: {\r\n id: string\r\n title: string\r\n description: string\r\n published: boolean\r\n userFullName: string\r\n userPhoto?: string\r\n theme?: string\r\n bannerUrl?: string\r\n personType?: PersonType\r\n personIsSubscriber?: boolean\r\n }): Promise<Wishlist> {\r\n const data = {\r\n id,\r\n name: title,\r\n description,\r\n published,\r\n metadatas: [\r\n {\r\n shop: this.shop,\r\n title: `${userFullName} - ${title}`,\r\n description: `${userFullName} - ${description}`,\r\n },\r\n ],\r\n personName: userFullName,\r\n personPhoto: userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType: personType ?? PersonTypes.NONE,\r\n personIsSubscriber: personIsSubscriber ?? false,\r\n }\r\n\r\n await this.createWishlistLog(WishlistLogType.UPDATE, data as Wishlist)\r\n\r\n return this.wishlistRepository.update(data)\r\n }\r\n\r\n async delete(wishlistId: string): Promise<void> {\r\n const wishlist = await this.findById(wishlistId)\r\n\r\n await this.createWishlistLog(WishlistLogType.DELETE, wishlist)\r\n\r\n return this.wishlistRepository.delete({ id: wishlistId })\r\n }\r\n\r\n getWishlistBySlug(slug: string): Promise<Wishlist> {\r\n const [id] = slug.split('-')\r\n\r\n if (+id) return this.wishlistRepository.get({ id })\r\n\r\n return this.wishlistRepository.getWishlistBySlug(slug)\r\n }\r\n\r\n getWishlistsByPerson(personId: string): Promise<Wishlist[]> {\r\n return this.wishlistRepository.getWishlistByPerson(personId)\r\n }\r\n\r\n async addProduct(wishlistId: string, productId: string): Promise<Wishlist> {\r\n const wishlist = await this.wishlistRepository.get({ id: wishlistId })\r\n const hasProduct = wishlist.products.some((p) => p == productId)\r\n\r\n const wishlistData = await this.findById(wishlistId)\r\n const productData = await this.findProductById(productId)\r\n\r\n await this.createWishlistLog(WishlistLogType.ADD_PRODUCT, wishlistData, productData)\r\n\r\n if (!hasProduct) {\r\n wishlist.products = [...wishlist.products, productId]\r\n await this.wishlistRepository.addProduct(wishlistId, productId)\r\n }\r\n\r\n return wishlist\r\n }\r\n\r\n async removeProduct(wishlistId: string, productId: string): Promise<Wishlist> {\r\n const wishlist = await this.wishlistRepository.get({ id: wishlistId })\r\n const productIndex = wishlist.products.findIndex((p) => p == productId)\r\n\r\n if (productIndex != -1) {\r\n wishlist.products.splice(productIndex, 1)\r\n const wishlistData = await this.findById(wishlistId)\r\n const productData = await this.findProductById(productId)\r\n\r\n await this.createWishlistLog(WishlistLogType.REMOVE_PRODUCT, wishlistData, productData)\r\n await this.wishlistRepository.removeProduct(wishlistId, productId)\r\n }\r\n\r\n return wishlist\r\n }\r\n\r\n private async findById(id: string): Promise<Wishlist> {\r\n return this.wishlistRepository\r\n .find({\r\n fields: ['id', 'name', 'description', 'personId', 'personIsSubscriber', 'personType', 'personName'],\r\n filters: {\r\n id,\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n }\r\n\r\n private async findProductById(id: string): Promise<Product> {\r\n return this.productCatalogRepository\r\n .find({\r\n fields: ['id', 'sku', 'EAN', 'name', 'brand'],\r\n filters: {\r\n id,\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n }\r\n\r\n private async createWishlistLog(type: WishlistLogType, wishlist: Wishlist, product?: Product) {\r\n switch (type) {\r\n case WishlistLogType.CREATE:\r\n case WishlistLogType.UPDATE:\r\n case WishlistLogType.DELETE:\r\n await this.createWishlistOperationLog(type, wishlist)\r\n break\r\n\r\n case WishlistLogType.ADD_PRODUCT:\r\n case WishlistLogType.REMOVE_PRODUCT:\r\n await this.createWishlistProductLog(type, wishlist, product)\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n private async createWishlistOperationLog(type: WishlistLogType, wishlist: Wishlist): Promise<void> {\r\n const operation = this.getOperationTypeFromWishlistLogType(type)\r\n\r\n await this.logRepository.create({\r\n collection: 'wishlist',\r\n date: new Date(),\r\n operation,\r\n documentId: wishlist.id,\r\n document: this.buildWishlistLogDocument(wishlist, type),\r\n })\r\n }\r\n\r\n private async createWishlistProductLog(type: WishlistLogType, wishlist: Wishlist, product: Product): Promise<void> {\r\n await this.logRepository.create({\r\n collection: 'wishlist',\r\n date: new Date(),\r\n operation: 'UPDATE',\r\n documentId: wishlist.id,\r\n document: {\r\n ...this.buildWishlistLogDocument(wishlist, type),\r\n ...this.buildProductLogData(product),\r\n },\r\n })\r\n }\r\n\r\n private getOperationTypeFromWishlistLogType(type: WishlistLogType): 'CREATE' | 'UPDATE' | 'DELETE' {\r\n if (type === WishlistLogType.CREATE) return 'CREATE'\r\n\r\n if (type === WishlistLogType.UPDATE) return 'UPDATE'\r\n\r\n return 'DELETE'\r\n }\r\n\r\n private buildWishlistLogDocument(wishlist: Wishlist, type: WishlistLogType) {\r\n return {\r\n id: wishlist.id,\r\n shop: this.shop,\r\n name: wishlist.name,\r\n description: wishlist.description,\r\n published: wishlist.published,\r\n type: type,\r\n personType: wishlist.personType,\r\n personId: wishlist.personId,\r\n personName: wishlist.personName,\r\n personIsSubscriber: wishlist.personIsSubscriber,\r\n }\r\n }\r\n\r\n private buildProductLogData(product: Product) {\r\n return {\r\n productId: product.id,\r\n productEAN: product.EAN,\r\n productSKU: product.sku,\r\n productName: product.name,\r\n productBrand: product.brand,\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CategoryRepository, CouponRepository, OrderRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CouponRepositoriesFacade {\r\n constructor(\r\n @Inject('CouponRepository') public readonly couponRepository: CouponRepository,\r\n @Inject('OrderRepository') public readonly orderRepository: OrderRepository,\r\n @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n Category,\r\n Checkout,\r\n CheckoutSubscription,\r\n CheckoutTypes,\r\n Coupon,\r\n CouponTypes,\r\n Exclusivities,\r\n LineItem,\r\n Order,\r\n OrderStatus,\r\n Shops,\r\n User,\r\n Where,\r\n} from '@infrab4a/connect'\r\nimport { from, Observable, of } from 'rxjs'\r\nimport { concatMap, map } from 'rxjs/operators'\r\n\r\nimport { CouponRepositoriesFacade } from './coupon'\r\nimport { CheckCouponParams, CouponRulesValidationParams } from './coupon/types/coupon-params.type'\r\nimport { ConfigurationFacade } from './shared'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CouponService {\r\n constructor(\r\n private readonly repositoriesFacade: CouponRepositoriesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {}\r\n\r\n checkCoupon(params: CheckCouponParams): Observable<Coupon> {\r\n const { nickname, checkoutType, checkout, plan } = params\r\n\r\n return from(\r\n this.repositoriesFacade.couponRepository\r\n .find({\r\n filters: {\r\n nickname: { operator: Where.EQUALS, value: nickname },\r\n active: { operator: Where.EQUALS, value: true },\r\n },\r\n })\r\n .then((result) => result.data[0]),\r\n ).pipe(\r\n concatMap((coupon) => this.couponValidation(coupon, checkoutType)),\r\n concatMap((couponValid: Coupon) =>\r\n this.couponRulesValidation({ coupon: couponValid, checkoutType, checkout, plan }),\r\n ),\r\n map((couponValidated: Coupon) => couponValidated as Coupon),\r\n )\r\n }\r\n\r\n private async couponValidation(coupon: Coupon, checkoutType: CheckoutTypes) {\r\n if (!coupon) throw 'Cupom inválido.'\r\n\r\n if (coupon?.beginAt && coupon?.beginAt.getTime() > new Date().getTime()) throw 'Cupom inválido.'\r\n\r\n if (coupon?.expiresIn && (coupon?.expiresIn as Date).getTime() < new Date().getTime()) throw 'Cupom expirado.'\r\n\r\n const isInShop =\r\n coupon.shopAvailability === Shops.ALL || coupon.shopAvailability === this.configurationFacade.defaultShop\r\n\r\n if (!isInShop) throw 'Cupom inválido para loja.'\r\n\r\n const isCheckoutType = coupon.checkoutType === CheckoutTypes.ALL || coupon.checkoutType === checkoutType\r\n\r\n if (!isCheckoutType) throw 'Cupom inválido. Erro de checkout.'\r\n\r\n return coupon\r\n }\r\n\r\n private async couponRulesValidation(params: CouponRulesValidationParams) {\r\n const { coupon, checkoutType, checkout, plan } = params\r\n\r\n if (checkoutType == CheckoutTypes.SUBSCRIPTION) {\r\n return this.validateSubscriptionCoupon(coupon, plan)\r\n }\r\n\r\n return this.validateEcommerceCoupon(coupon, checkoutType, checkout)\r\n }\r\n\r\n private validateSubscriptionCoupon(coupon: Coupon, plan: string): Coupon {\r\n if (coupon.plan && coupon.plan.toUpperCase() !== plan.toUpperCase()) {\r\n throw 'Cupom inválido para sua assinatura.'\r\n }\r\n\r\n return coupon\r\n }\r\n\r\n private async validateEcommerceCoupon(\r\n coupon: Coupon,\r\n checkoutType: CheckoutTypes,\r\n checkout: Partial<Checkout>,\r\n ): Promise<Coupon> {\r\n this.validateUserEligibility(coupon, checkout?.user)\r\n await this.validateUsageLimits(coupon, checkoutType, checkout)\r\n await this.validateProductEligibility(coupon, checkout)\r\n\r\n return coupon\r\n }\r\n\r\n private validateUserEligibility(coupon: Coupon, user: User): void {\r\n const validUser = this.coupomUserValidation(coupon, user)\r\n\r\n if (!validUser) throw 'Usuário não elegível.'\r\n }\r\n\r\n private async validateUsageLimits(\r\n coupon: Coupon,\r\n checkoutType: CheckoutTypes,\r\n checkout: Partial<Checkout>,\r\n ): Promise<void> {\r\n const couponUseLimits = this.getCouponUseLimits(coupon, checkoutType, checkout.user)\r\n\r\n if (couponUseLimits.firstOrder) {\r\n await this.validateFirstOrderLimit(checkout.user.email)\r\n }\r\n\r\n if (!couponUseLimits.unlimited || couponUseLimits.limitedPerUser) {\r\n await this.validateCouponUsageLimits(coupon, couponUseLimits, checkout.user.email)\r\n }\r\n }\r\n\r\n private async validateFirstOrderLimit(userEmail: string): Promise<void> {\r\n const ordersUser = await this.getOrdersFromUser(userEmail.toLocaleLowerCase())\r\n\r\n if (ordersUser.length >= 1) throw 'Limite de uso atingido'\r\n }\r\n\r\n private async validateCouponUsageLimits(coupon: Coupon, couponUseLimits: any, userEmail: string): Promise<void> {\r\n const ordersCoupon = await this.getOrdersWithCoupon(coupon)\r\n\r\n if (!couponUseLimits.unlimited && couponUseLimits.total && ordersCoupon.length >= couponUseLimits.total) {\r\n throw 'Limite de uso atingido.'\r\n }\r\n\r\n if (couponUseLimits.limitedPerUser) {\r\n const ordersWithUser = this.countOrdersWithUser(ordersCoupon, userEmail)\r\n\r\n if (ordersWithUser > 0) throw 'Limite de uso por usuário atingido.'\r\n }\r\n }\r\n\r\n private async validateProductEligibility(coupon: Coupon, checkout: Partial<Checkout>): Promise<void> {\r\n const hasProductCategories = await this.hasProductCategories(coupon, checkout)\r\n\r\n if (!hasProductCategories) throw 'Seu carrinho não possui produtos elegíveis para desconto.'\r\n\r\n const hasMinSubTotal = await this.hasMinSubTotal(coupon, checkout)\r\n\r\n if (!hasMinSubTotal) {\r\n this.throwMinSubTotalError(coupon)\r\n }\r\n }\r\n\r\n private throwMinSubTotalError(coupon: Coupon): void {\r\n const formattedValue = Intl.NumberFormat('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n }).format(coupon.minSubTotalValue)\r\n\r\n if (coupon.productsCategories?.length) {\r\n throw `Valor mínimo de ${formattedValue} não atingido na(s) categoria(s) elegíveis para o desconto.`\r\n }\r\n\r\n throw `Valor mínimo de ${formattedValue} não atingido.`\r\n }\r\n\r\n public calcDiscountSubscription(coupon: Coupon, checkout: Partial<CheckoutSubscription>): Observable<number> {\r\n let discount = 0\r\n\r\n if (coupon.discount.subscription.type == CouponTypes.ABSOLUTE) discount = coupon.discount.subscription.value\r\n else discount = checkout.subscriptionPlan.recurrencePrice * (coupon.discount.subscription.value / 100)\r\n\r\n return of(discount)\r\n }\r\n\r\n private async hasMinSubTotal(coupon: Coupon, checkout: Partial<Checkout>): Promise<boolean> {\r\n if (!coupon.minSubTotalValue) return true\r\n\r\n const lineItensDiscount = await this.getLineItensEligebleForDiscount(coupon.productsCategories, checkout)\r\n const subTotal = this.calcCheckoutSubtotal(lineItensDiscount, checkout.user)\r\n\r\n if (coupon.minSubTotalValue <= subTotal) return true\r\n\r\n return false\r\n }\r\n\r\n private async hasProductCategories(coupon: Coupon, checkout: Partial<Checkout>): Promise<boolean> {\r\n if (!coupon.productsCategories?.length) {\r\n return true\r\n }\r\n\r\n const couponCategories = await this.getCouponCategoriesId(coupon.productsCategories)\r\n const hasCategories = checkout.lineItems?.filter((item) => {\r\n if (item.isGift) return false\r\n\r\n if (!item.categories?.length) return true\r\n\r\n return item.categories.some((c) => couponCategories.some((cat) => cat == c))\r\n })\r\n\r\n return hasCategories?.length ? true : false\r\n }\r\n\r\n private coupomUserValidation(coupon: Coupon, user: User) {\r\n if (!user || coupon.exclusivityType.includes(Exclusivities.ALL_USERS)) return true\r\n\r\n const userTypes: Exclusivities[] = []\r\n\r\n if (\r\n coupon.exclusivityType.includes(Exclusivities.COLLABORATORS) &&\r\n this.emailIsFromCollaborator(user.email.toLocaleLowerCase())\r\n )\r\n userTypes.push(Exclusivities.COLLABORATORS)\r\n\r\n if (\r\n coupon.exclusivityType.includes(Exclusivities.SPECIFIC_USER) &&\r\n coupon.userExclusiveEmail.includes(user.email.toLocaleLowerCase())\r\n )\r\n userTypes.push(Exclusivities.SPECIFIC_USER)\r\n\r\n if (\r\n coupon.exclusivityType.includes(Exclusivities.ACTIVE_SUBSCRIBER) &&\r\n user.isSubscriber &&\r\n user.subscriptionPlan != ''\r\n )\r\n userTypes.push(Exclusivities.ACTIVE_SUBSCRIBER)\r\n\r\n if (\r\n user.isSubscriber &&\r\n user.subscriptionPlan == '' &&\r\n coupon.exclusivityType.includes(Exclusivities.INACTIVE_SUBSCRIBER)\r\n )\r\n userTypes.push(Exclusivities.INACTIVE_SUBSCRIBER)\r\n\r\n if (coupon.exclusivityType.includes(Exclusivities.NON_SUBSCRIBER) && !user.isSubscriber)\r\n userTypes.push(Exclusivities.NON_SUBSCRIBER)\r\n\r\n return coupon.exclusivityType.some((r) => userTypes.includes(r))\r\n }\r\n\r\n private async getCouponCategoriesId(productsCategories: string[]): Promise<Array<String>> {\r\n const couponCategories: Array<String> = []\r\n\r\n for (let index = 0; index < productsCategories.length; index++) {\r\n const category: Category & { firestoreId?: string } = await this.repositoriesFacade.categoryRepository.get({\r\n id: productsCategories[index],\r\n })\r\n\r\n if (category) {\r\n const children = await this.repositoriesFacade.categoryRepository.getChildren(\r\n parseInt(productsCategories[index]),\r\n )\r\n\r\n couponCategories.push(category.id, ...children.map((c) => c.id.toString()))\r\n }\r\n }\r\n\r\n return [...new Set(couponCategories)]\r\n }\r\n\r\n private emailIsFromCollaborator = (userEmail: string): boolean => !!userEmail?.match(/@b4a.com.br/g)\r\n\r\n private async getLineItensEligebleForDiscount(\r\n productsCategories: string[],\r\n checkout: Partial<Checkout>,\r\n ): Promise<LineItem[]> {\r\n let lineItensDiscount = []\r\n const couponCategories = await this.getCouponCategoriesId(productsCategories)\r\n\r\n if (productsCategories?.length) {\r\n lineItensDiscount = checkout.lineItems?.filter((item) => {\r\n if (item.isGift) return false\r\n\r\n if (item.categories?.length) {\r\n return item.categories.some((c) => couponCategories.some((cat) => cat == c))\r\n }\r\n\r\n return true\r\n })\r\n } else {\r\n lineItensDiscount = checkout.lineItems.filter((item) => !item.isGift)\r\n }\r\n\r\n return lineItensDiscount\r\n }\r\n\r\n private calcCheckoutSubtotal(lineItens: LineItem[], user: User): number {\r\n return (\r\n lineItens\r\n ?.filter((item) => !item.isGift)\r\n .reduce(\r\n (acc, curr) =>\r\n user?.isSubscriber && curr.price?.subscriberPrice\r\n ? acc + curr.price?.subscriberPrice * curr.quantity\r\n : acc + curr.pricePaid * curr.quantity,\r\n 0,\r\n ) || 0\r\n )\r\n }\r\n\r\n private async getOrdersWithCoupon(coupon: Coupon): Promise<Order[]> {\r\n return await this.repositoriesFacade.orderRepository\r\n .find({\r\n filters: {\r\n coupon: { id: coupon.id },\r\n status: { operator: Where.NOTEQUALS, value: OrderStatus.CANCELADO },\r\n },\r\n })\r\n .then((result) => result.data)\r\n }\r\n\r\n private async getOrdersFromUser(email: string) {\r\n return await this.repositoriesFacade.orderRepository\r\n .find({\r\n filters: {\r\n user: { email: { operator: Where.EQUALS, value: email } },\r\n status: { operator: Where.NOTEQUALS, value: OrderStatus.CANCELADO },\r\n },\r\n })\r\n .then((result) => result.data)\r\n }\r\n\r\n private countOrdersWithUser(orders: Order[], email: string): number {\r\n return orders.filter((o) => o.user.email == email).length\r\n }\r\n\r\n private getCouponUseLimits(coupon: Coupon, checkoutType: CheckoutTypes, user: User) {\r\n let couponUseLimits: { unlimited?: boolean; total?: number; limitedPerUser?: boolean; firstOrder?: boolean }\r\n\r\n if (checkoutType == CheckoutTypes.ECOMMERCE || checkoutType == CheckoutTypes.ALL) {\r\n if (\r\n coupon.exclusivityType.length === 1 &&\r\n (coupon.exclusivityType.at(0) === Exclusivities.SPECIFIC_USER ||\r\n coupon.exclusivityType.at(0) === Exclusivities.COLLABORATORS)\r\n )\r\n couponUseLimits = coupon.useLimits.non_subscriber\r\n else couponUseLimits = user?.isSubscriber ? coupon.useLimits.subscriber : coupon.useLimits.non_subscriber\r\n } else {\r\n couponUseLimits = coupon.useLimits.subscription\r\n }\r\n\r\n return couponUseLimits\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n CheckoutSubscription,\r\n CheckoutSubscriptionRepository,\r\n CheckoutTypes,\r\n Coupon,\r\n isNil,\r\n pick,\r\n} from '@infrab4a/connect'\r\nimport { Observable } from 'rxjs'\r\nimport { concatMap } from 'rxjs/operators'\r\n\r\n\r\nimport { PERSISTENCE_PROVIDER } from '../consts'\r\nimport { DataPersistence } from '../persistence'\r\n\r\nimport { RequiredCheckoutSubscriptionData } from './types'\r\nimport { CouponService } from './coupon.service'\r\n\r\n@Injectable()\r\nexport class CheckoutSubscriptionService {\r\n constructor(\r\n @Inject('CheckoutSubscriptionRepository')\r\n private readonly checkoutSubscriptionRepository: CheckoutSubscriptionRepository,\r\n @Inject(PERSISTENCE_PROVIDER) private readonly dataPersistence: DataPersistence,\r\n private readonly couponService: CouponService,\r\n ) {}\r\n\r\n getCheckoutSubscription(checkoutData?: RequiredCheckoutSubscriptionData): Observable<CheckoutSubscription> {\r\n return this.dataPersistence\r\n .get('checkoutSubscriptionId')\r\n .pipe(\r\n concatMap((id) =>\r\n !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData),\r\n ),\r\n )\r\n }\r\n\r\n clearCheckoutSubscriptionFromSession(): Observable<void> {\r\n return this.dataPersistence.remove('checkoutSubscriptionId')\r\n }\r\n\r\n checkCoupon(nickname: string, _userEmail: string): Observable<Coupon> {\r\n return this.getCheckoutSubscription().pipe(\r\n concatMap((checkout) =>\r\n this.couponService\r\n .checkCoupon({\r\n nickname,\r\n checkoutType: CheckoutTypes.SUBSCRIPTION,\r\n checkout,\r\n plan: checkout.subscriptionPlan.name,\r\n })\r\n .pipe(),\r\n ),\r\n )\r\n }\r\n\r\n calcDiscountSubscription(coupon: Coupon) {\r\n return this.getCheckoutSubscription().pipe(\r\n concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()),\r\n )\r\n }\r\n\r\n private async createCheckoutSubscription(\r\n checkoutData?: RequiredCheckoutSubscriptionData,\r\n ): Promise<CheckoutSubscription> {\r\n const checkout = await this.checkoutSubscriptionRepository.create({\r\n createdAt: new Date(),\r\n ...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),\r\n })\r\n\r\n await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise()\r\n\r\n return checkout\r\n }\r\n}\r\n","export class UtilHelper {\r\n static createSlug(name: string): string {\r\n return name\r\n .toLowerCase()\r\n .replace(/\\s+/g, '-')\r\n .replace(/[ãàáäâ]/g, 'a')\r\n .replace(/[ẽèéëê]/g, 'e')\r\n .replace(/[ìíïî]/g, 'i')\r\n .replace(/[õòóöô]/g, 'o')\r\n .replace(/[ùúüû]/g, 'u')\r\n .replace(/[ñ]/g, 'n')\r\n .replace(/[ç]/g, 'c')\r\n .replace(/[&]/g, 'and')\r\n .replace(/[^\\w-]+/g, '')\r\n .replace(/--+/g, '-')\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CategoryRepository, HomeRepository, ProductRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class HomeShopRepositoriesFacade {\r\n constructor(\r\n @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,\r\n @Inject('HomeRepository') public readonly homeRepository: HomeRepository,\r\n @Inject('ProductRepository') public readonly productRepository: ProductRepository,\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n add,\r\n Banner,\r\n Category,\r\n Home,\r\n HomeCategoryGroup,\r\n HomeData,\r\n pick,\r\n Product,\r\n RequiredArgumentError,\r\n Shops,\r\n Where,\r\n} from '@infrab4a/connect'\r\nimport { forkJoin, from, Observable, of, throwError } from 'rxjs'\r\nimport { concatMap, map, tap } from 'rxjs/operators'\r\n\r\nimport { HomeShopRepositoriesFacade } from './home-shop'\r\nimport { ConfigurationFacade } from './shared'\r\n\r\ntype HomeConfigurationId = 'glamshop' | 'mens_market'\r\ntype BannerType = 'brand' | 'buyToWin' | 'block' | 'blog'\r\n\r\n@Injectable()\r\nexport class HomeShopService {\r\n private homeConfiguration: Home\r\n\r\n private get homeId(): HomeConfigurationId {\r\n if (this.configurationFacade.defaultShop === Shops.GLAMSHOP) return 'glamshop'\r\n\r\n if (this.configurationFacade.defaultShop === Shops.MENSMARKET) return 'mens_market'\r\n\r\n return null\r\n }\r\n\r\n constructor(\r\n private readonly repositoriesFacade: HomeShopRepositoriesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {}\r\n\r\n getHomeData(): Observable<Home> {\r\n return this.getHomeConfiguration().pipe(\r\n map((home) => (home?.data?.expiresAt > new Date() ? home : null)),\r\n concatMap((home) =>\r\n home\r\n ? of(home)\r\n : forkJoin([\r\n this.getDiscoverProducts(this.gender),\r\n this.getFeaturedProducts(this.gender),\r\n this.getVerticalProducts(this.gender),\r\n ]).pipe(\r\n map(([discoverProducts, featuredProducts, verticalProducts]) => ({\r\n discoverProducts,\r\n featuredProducts,\r\n verticalProducts,\r\n })),\r\n concatMap((data) => this.saveHomeData(data)),\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n getBanners(type: BannerType): Observable<Banner[]> {\r\n return this.getHomeConfiguration().pipe(\r\n map((home) => {\r\n if (type === 'brand') return home.brandsCarousel\r\n\r\n if (type === 'buyToWin') return [home.buyToWinBanner]\r\n\r\n if (type === 'block') return home.blockBanners\r\n\r\n if (type === 'blog') return [home.blogBanner]\r\n\r\n return []\r\n }),\r\n )\r\n }\r\n\r\n getMinValueForFreeShipping(): Observable<number> {\r\n return this.getHomeConfiguration().pipe(map((home) => home.minValueForFreeShipping))\r\n }\r\n\r\n private getDiscoverProducts(_gender?: string): Observable<{ category: Category; products: Product[] }[]> {\r\n return this.getHomeConfiguration().pipe(\r\n concatMap((home) =>\r\n from(\r\n this.repositoriesFacade.categoryRepository.getCategoriesForHome({\r\n categoryIds: home.discoverCategories,\r\n shop: this.configurationFacade.defaultShop,\r\n }),\r\n ).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData))),\r\n ),\r\n )\r\n }\r\n\r\n private getFeaturedProducts(_gender?: string): Observable<{ category: Category; products: Product[] }[]> {\r\n return this.getHomeConfiguration().pipe(\r\n concatMap((home) =>\r\n from(\r\n this.repositoriesFacade.categoryRepository.getCategoriesForHome({\r\n categoryIds: home.featuredCategories,\r\n shop: this.configurationFacade.defaultShop,\r\n }),\r\n ).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData))),\r\n ),\r\n )\r\n }\r\n\r\n private getVerticalProducts(gender?: string): Observable<{ category: Category; products: Product[] }[]> {\r\n return this.getHomeConfiguration().pipe(\r\n concatMap((home) =>\r\n forkJoin(\r\n home.verticalCarousels.filter(Boolean).map((id) =>\r\n from(this.repositoriesFacade.categoryRepository.get({ id })).pipe(\r\n concatMap((category) =>\r\n from(\r\n this.repositoriesFacade.productRepository.find({\r\n filters: {\r\n categories: { operator: Where.IN, value: [category.id] },\r\n ...(gender ? { tags: { operator: Where.IN, value: [gender] } } : {}),\r\n },\r\n limits: { limit: 12 },\r\n }),\r\n ).pipe(map((products) => ({ category, products }))),\r\n ),\r\n map(({ category, products }) => ({ category, products: products.data })),\r\n map(this.buildCategoryGroupWithRequiredData),\r\n ),\r\n ),\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n private getHomeConfiguration(): Observable<Home> {\r\n return of(this.homeConfiguration).pipe(\r\n concatMap((home) =>\r\n home\r\n ? of(home)\r\n : !this.homeId\r\n ? throwError(() => new RequiredArgumentError(['homeId']))\r\n : from(this.repositoriesFacade.homeRepository.get({ id: this.homeId })).pipe(\r\n tap((homeLoaded) => (this.homeConfiguration = homeLoaded)),\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n private saveHomeData(homeData: HomeData): Observable<Home> {\r\n const data = {\r\n createdAt: new Date(),\r\n expiresAt: add(new Date(), { hours: 1 }),\r\n data: homeData,\r\n }\r\n\r\n return from(\r\n this.repositoriesFacade.homeRepository.update({\r\n id: this.homeId,\r\n data,\r\n }),\r\n ).pipe(\r\n tap(() => (this.homeConfiguration.data = data)),\r\n map(() => this.homeConfiguration),\r\n )\r\n }\r\n\r\n private buildCategoryGroupWithRequiredData = (group: HomeCategoryGroup): HomeCategoryGroup => ({\r\n category: Category.toInstance(pick(group?.category?.toPlain() || {}, ['id', 'name', 'slug', 'conditions'])),\r\n products:\r\n group?.products?.map((product) =>\r\n Product.toInstance(\r\n pick(product?.toPlain() || {}, [\r\n 'id',\r\n 'price',\r\n 'reviews',\r\n 'hasVariants',\r\n 'slug',\r\n 'sku',\r\n 'stock',\r\n 'costPrice',\r\n 'images',\r\n 'miniatures',\r\n 'name',\r\n 'weight',\r\n 'rate',\r\n 'type',\r\n 'brand',\r\n ]),\r\n ),\r\n ) || [],\r\n })\r\n\r\n private get gender() {\r\n return this.homeId === 'mens_market' ? 'masculino' : undefined\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n LineItem,\r\n Order,\r\n OrderFirestoreRepository,\r\n OrderStatus,\r\n ProductReview,\r\n ProductReviewRepository,\r\n Shops,\r\n VariantRepository,\r\n Where,\r\n} from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../consts'\r\n\r\nimport { PendingProductReview, ProductReviewCreate } from './types'\r\n\r\n@Injectable()\r\nexport class OrderProductReviewService {\r\n constructor(\r\n @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,\r\n @Inject('ProductReviewRepository') private readonly productReviewRepository: ProductReviewRepository,\r\n @Inject('VariantRepository') private readonly variantRepository: VariantRepository,\r\n @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,\r\n ) {}\r\n\r\n async getPendingReviewsByEmail(email: string): Promise<PendingProductReview[]> {\r\n const products: PendingProductReview[] = []\r\n const orders = await this.getOrdersByEmail(email)\r\n\r\n if (orders.length) {\r\n for (const order of orders) {\r\n const lineItems = order.lineItems.filter((item) => !item.isGift)\r\n\r\n for (const item of lineItems) {\r\n const productReview = await this.getProductReview(order, item)\r\n\r\n if (productReview?.status != null) continue\r\n\r\n products.push(this.buildProductReview(order, item, productReview))\r\n }\r\n }\r\n }\r\n\r\n return products\r\n }\r\n\r\n private async getOrdersByEmail(email: string): Promise<Order[]> {\r\n const { data: orders } = await this.orderRepository.find({\r\n filters: {\r\n user: {\r\n email: email,\r\n },\r\n shop: this.defaultShop,\r\n status: OrderStatus.ENTREGUE,\r\n createdAt: {\r\n operator: Where.GTE,\r\n value: new Date(2024, 0, 0, 0, 0, 0).getTime(),\r\n },\r\n },\r\n orderBy: {\r\n createdAt: 'desc',\r\n },\r\n })\r\n\r\n return orders\r\n }\r\n\r\n private async getProductReview(order: Order, item: LineItem) {\r\n const products: string[] = [item.id]\r\n const isVariant = await this.variantRepository\r\n .find({\r\n filters: {\r\n id: item.id,\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n\r\n if (isVariant) products.push(isVariant.productId)\r\n const productReview = await this.productReviewRepository\r\n .find({\r\n filters: {\r\n orderId: { operator: Where.IN, value: [order.id, order.orderNumber].filter(Boolean) },\r\n productId: { operator: Where.IN, value: products },\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n\r\n return productReview\r\n }\r\n\r\n private buildProductReview(order: Order, item: LineItem, review: ProductReview) {\r\n return {\r\n id: item.id,\r\n orderId: order.id,\r\n orderNumber: order.orderNumber,\r\n isEdition: false,\r\n name: item.name,\r\n image: item.image,\r\n deliveryDate: order.deliveredAt || null,\r\n evaluationInAnalysis: review ? true : false,\r\n rating: review ? review.rate : null,\r\n shopProductSlug: item.slug,\r\n }\r\n }\r\n\r\n async createReview(review: ProductReviewCreate): Promise<ProductReview> {\r\n return this.productReviewRepository.create(\r\n ProductReview.toInstance({\r\n productId: review.productId.toString(),\r\n shop: review.shop,\r\n rate: review.rate,\r\n author: review.author,\r\n email: review.email,\r\n location: review.location,\r\n review: review.comment,\r\n title: review.title,\r\n personId: review.personId,\r\n points: review.points,\r\n orderId: review.orderId,\r\n }),\r\n )\r\n }\r\n\r\n async verifyReviewProductAndOrder(orderId: string[], productId: string) {\r\n return this.productReviewRepository\r\n .find({\r\n filters: {\r\n orderId: { operator: Where.IN, value: orderId },\r\n productId: productId,\r\n },\r\n })\r\n .then((res) => res.data)\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core'\r\nimport { doc, Firestore, docSnapshots } from '@angular/fire/firestore'\r\nimport { Order, OrderFirestoreRepository } from '@infrab4a/connect'\r\nimport { Subject } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\n\r\n@Injectable()\r\nexport class OrderService {\r\n orderSubject = new Subject<Order>()\r\n\r\n constructor(\r\n private readonly angularFirestore: Firestore,\r\n @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,\r\n ) {}\r\n\r\n getOrder(id: string): Subject<Order> {\r\n docSnapshots(doc(this.angularFirestore, `${this.orderRepository.collectionName}/${id}`))\r\n .pipe(map((doc) => Order.toInstance(doc.data())))\r\n .subscribe((doc) => this.orderSubject.next(doc))\r\n\r\n return this.orderSubject\r\n }\r\n}\r\n","import { Injector, ModuleWithProviders, NgModule, Type } from '@angular/core'\r\nimport { FirebaseApp, FirebaseOptions, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app'\r\nimport { AppCheckOptions, initializeAppCheck, provideAppCheck } from '@angular/fire/app-check'\r\nimport { getStorage, provideStorage, Storage } from '@angular/fire/storage'\r\nimport {\r\n AxiosElasticSearchConfig,\r\n FileUploaderService,\r\n FirebaseFileUploaderService,\r\n isNil,\r\n ProductsVertexSearch,\r\n Shops,\r\n UpdateUserImage,\r\n UserRepository,\r\n VertexSearchConfig,\r\n} from '@infrab4a/connect'\r\n\r\nimport { AngularElasticSeachModule } from './angular-elastic-search.module'\r\nimport { AngularFirebaseAuthModule } from './angular-firebase-auth.module'\r\nimport { AngularFirestoreModule } from './angular-firestore.module'\r\nimport { AngularHasuraGraphQLModule, HasuraGraphQLOptions } from './angular-hasura-graphql.module'\r\nimport { AngularVertexSeachModule } from './angular-vertex-search.module'\r\nimport {\r\n APP_CHECK_PROVIDER,\r\n BACKEND_URL,\r\n CATEGORY_STRUCTURE,\r\n DEFAULT_SHOP,\r\n ES_CONFIG,\r\n FIREBASE_APP_NAME,\r\n FIREBASE_OPTIONS,\r\n HASURA_OPTIONS,\r\n PERSISTENCE_PROVIDER,\r\n VERTEX_CONFIG,\r\n} from './consts'\r\nimport { STORAGE_BASE_URL } from './consts/storage-base-url.const'\r\nimport { CookieDataPersistence, DataPersistence } from './persistence'\r\nimport {\r\n AuthService,\r\n CartService,\r\n CatalogService,\r\n CategoryService,\r\n CheckoutService,\r\n CheckoutSubscriptionService,\r\n CouponService,\r\n HomeShopService,\r\n OrderProductReviewService,\r\n OrderService,\r\n WishlistService,\r\n} from './services'\r\nimport { CartServicesFacade } from './services/cart'\r\nimport { NewCategoryStructureAdapter, OldCategoryStructureAdapter } from './services/catalog/adapters'\r\nimport { CatalogSearchContext } from './services/catalog/context/catalog-search.context'\r\nimport {\r\n CatalogServiceFacade,\r\n CatalogStrategiesFacade,\r\n CategoryRepositoryFacade,\r\n CategoryServiceFacade,\r\n ProductCatalogFacade,\r\n} from './services/catalog/facades'\r\nimport {\r\n BrandManagerHelper,\r\n CatalogFilterHelper,\r\n CatalogSortHelper,\r\n ProductFieldsHelper,\r\n} from './services/catalog/helpers'\r\nimport {\r\n CatalogHelpersService,\r\n CatalogOperationsFacade,\r\n CatalogRepositoryService,\r\n ProductManagementFacade,\r\n} from './services/catalog/services'\r\nimport { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from './services/catalog/strategies'\r\nimport { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './services/checkout'\r\nimport { CouponRepositoriesFacade } from './services/coupon'\r\nimport { HomeShopRepositoriesFacade } from './services/home-shop'\r\nimport { ConfigurationFacade } from './services/shared'\r\nimport { FirebaseAppConfig } from './types'\r\n\r\n@NgModule({\r\n imports: [\r\n provideFirebaseApp((injector: Injector) => {\r\n const appName = injector.get<string>(FIREBASE_APP_NAME)\r\n\r\n try {\r\n const app = appName ? getApp(appName) : getApp()\r\n\r\n return app\r\n } catch (error) {\r\n console.warn('Firebase app not found, initializing new app')\r\n\r\n if (error instanceof Error) console.error(error.message)\r\n\r\n return initializeApp(injector.get(FIREBASE_OPTIONS), appName)\r\n }\r\n }),\r\n provideAppCheck((injector: Injector) => {\r\n const app = injector.get(FirebaseApp)\r\n\r\n try {\r\n const provider = injector.get<AppCheckOptions['provider']>(APP_CHECK_PROVIDER)\r\n\r\n if (provider)\r\n return initializeAppCheck(app, {\r\n provider,\r\n isTokenAutoRefreshEnabled: true,\r\n })\r\n } catch (error) {\r\n if (error instanceof Error) console.error(error.message)\r\n\r\n return\r\n }\r\n }),\r\n provideStorage((injector: Injector) => getStorage(injector.get(FirebaseApp))),\r\n AngularElasticSeachModule,\r\n AngularVertexSeachModule,\r\n AngularFirebaseAuthModule,\r\n AngularFirestoreModule,\r\n AngularHasuraGraphQLModule,\r\n ],\r\n providers: [\r\n AuthService,\r\n CartService,\r\n CatalogService,\r\n CategoryService,\r\n CheckoutService,\r\n CheckoutSubscriptionService,\r\n CouponService,\r\n HomeShopService,\r\n OrderService,\r\n WishlistService,\r\n ConfigurationFacade,\r\n CartServicesFacade,\r\n CheckoutRepositoriesFacade,\r\n CheckoutDependenciesFacade,\r\n CategoryRepositoryFacade,\r\n ProductCatalogFacade,\r\n CatalogServiceFacade,\r\n CategoryServiceFacade,\r\n CatalogStrategiesFacade,\r\n CatalogOperationsFacade,\r\n ProductManagementFacade,\r\n {\r\n provide: 'ProductServicesFacade',\r\n useFactory: (productStockNotificationRepository: any, categoryRepository: any, productSearch: any) => ({\r\n productStockNotificationRepository,\r\n categoryRepository,\r\n productSearch,\r\n }),\r\n deps: ['ProductStockNotificationRepository', 'CategoryRepository', 'ProductSearch'],\r\n },\r\n CatalogFilterHelper,\r\n CatalogSortHelper,\r\n ProductFieldsHelper,\r\n BrandManagerHelper,\r\n CatalogRepositoryService,\r\n CatalogHelpersService,\r\n CategorySearchStrategy,\r\n TermSearchStrategy,\r\n ProfileSearchStrategy,\r\n {\r\n provide: CatalogSearchContext,\r\n useFactory: (\r\n categoryStrategy: CategorySearchStrategy,\r\n termStrategy: TermSearchStrategy,\r\n profileStrategy: ProfileSearchStrategy,\r\n ) => {\r\n return new CatalogSearchContext(categoryStrategy, termStrategy, profileStrategy)\r\n },\r\n deps: [CategorySearchStrategy, TermSearchStrategy, ProfileSearchStrategy],\r\n },\r\n {\r\n provide: UpdateUserImage,\r\n useFactory: (userRepository: UserRepository, fileUploader: FileUploaderService) => {\r\n return new UpdateUserImage(userRepository, fileUploader)\r\n },\r\n deps: ['UserRepository', 'FileUploaderService'],\r\n },\r\n {\r\n provide: 'FileUploaderService',\r\n useFactory: (storage: Storage, baseUrl: string) => {\r\n return new FirebaseFileUploaderService(storage, baseUrl)\r\n },\r\n deps: [Storage, STORAGE_BASE_URL],\r\n },\r\n {\r\n provide: 'ProductSearch',\r\n useExisting: ProductsVertexSearch,\r\n },\r\n CouponRepositoriesFacade,\r\n HomeShopRepositoriesFacade,\r\n OrderProductReviewService,\r\n ],\r\n})\r\nexport class AngularConnectModule {\r\n static initializeApp(\r\n defaultShop: Shops,\r\n options: {\r\n firebase?: FirebaseOptions\r\n elasticSearch?: AxiosElasticSearchConfig\r\n vertexConfig?: VertexSearchConfig\r\n hasura: HasuraGraphQLOptions\r\n backendUrl: string\r\n oldCategoryStructure?: boolean\r\n storageBaseUrl?: string\r\n persistenceProvider?: Type<DataPersistence>\r\n appCheckProvider?: AppCheckOptions['provider']\r\n },\r\n nameOrConfig?: string | FirebaseAppConfig,\r\n ): ModuleWithProviders<AngularConnectModule> {\r\n return {\r\n ngModule: AngularConnectModule,\r\n providers: [\r\n ...this.buildCoreProviders(nameOrConfig, options),\r\n ...this.buildConditionalProviders(defaultShop, options),\r\n ],\r\n }\r\n }\r\n\r\n private static buildCoreProviders(\r\n nameOrConfig: string | FirebaseAppConfig,\r\n options: {\r\n appCheckProvider?: AppCheckOptions['provider']\r\n oldCategoryStructure?: boolean\r\n persistenceProvider?: Type<DataPersistence>\r\n },\r\n ) {\r\n return [\r\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\r\n { provide: APP_CHECK_PROVIDER, useValue: options.appCheckProvider },\r\n {\r\n provide: CATEGORY_STRUCTURE,\r\n useClass: this.selectCategoryStructureAdapter(options.oldCategoryStructure),\r\n },\r\n { provide: PERSISTENCE_PROVIDER, useClass: options?.persistenceProvider || CookieDataPersistence },\r\n ]\r\n }\r\n\r\n private static buildConditionalProviders(\r\n defaultShop: Shops,\r\n options: {\r\n firebase?: FirebaseOptions\r\n elasticSearch?: AxiosElasticSearchConfig\r\n vertexConfig?: VertexSearchConfig\r\n hasura: HasuraGraphQLOptions\r\n backendUrl: string\r\n storageBaseUrl?: string\r\n },\r\n ) {\r\n return [\r\n ...this.createProviderIfExists(DEFAULT_SHOP, defaultShop),\r\n ...this.createProviderIfExists(FIREBASE_OPTIONS, options.firebase),\r\n ...this.createProviderIfExists(ES_CONFIG, options.elasticSearch),\r\n ...this.createProviderIfExists(VERTEX_CONFIG, options.vertexConfig),\r\n ...this.createProviderIfExists(HASURA_OPTIONS, options.hasura),\r\n ...this.createProviderIfExists(BACKEND_URL, options.backendUrl),\r\n ...this.createProviderIfExists(STORAGE_BASE_URL, options.storageBaseUrl),\r\n ]\r\n }\r\n\r\n private static selectCategoryStructureAdapter(oldCategoryStructure?: boolean) {\r\n return isNil(oldCategoryStructure) || oldCategoryStructure\r\n ? OldCategoryStructureAdapter\r\n : NewCategoryStructureAdapter\r\n }\r\n\r\n private static createProviderIfExists(token: any, value: any) {\r\n return isNil(value) ? [] : [{ provide: token, useValue: value }]\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.CheckoutRepositoriesFacade","i1.CheckoutDependenciesFacade","i2.ConfigurationFacade","i1.AuthService","i2.CheckoutService","i3","i1.CartServicesFacade","i1.CatalogRepositoryService","i1.CatalogHelpersService","i1.CategorySearchStrategy","i1.TermSearchStrategy","i1.ProfileSearchStrategy","i1.ProductCatalogFacade","i1.CatalogFilterHelper","i1.CatalogSortHelper","i1.ProductFieldsHelper","i1.CatalogOperationsFacade","i2.ProductManagementFacade","i1.CouponRepositoriesFacade","i1.CouponService","i1.HomeShopRepositoriesFacade"],"mappings":"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"}
1
+ {"version":3,"file":"infrab4a-connect-angular.mjs","sources":["../../../projects/connect-angular/src/consts/es-config.const.ts","../../../projects/connect-angular/src/angular-elastic-search.module.ts","../../../projects/connect-angular/src/consts/backend-url.const.ts","../../../projects/connect-angular/src/consts/category-structure.ts","../../../projects/connect-angular/src/consts/default-shop.const.ts","../../../projects/connect-angular/src/consts/firebase-const.ts","../../../projects/connect-angular/src/consts/hasura-options.const.ts","../../../projects/connect-angular/src/consts/persistence.const.ts","../../../projects/connect-angular/src/consts/vertex-config.const.ts","../../../projects/connect-angular/src/angular-firebase-auth.module.ts","../../../projects/connect-angular/src/helpers/mobile-operation-system-checker.helper.ts","../../../projects/connect-angular/src/angular-firestore.module.ts","../../../projects/connect-angular/src/angular-hasura-graphql.module.ts","../../../projects/connect-angular/src/angular-vertex-search.module.ts","../../../projects/connect-angular/src/consts/storage-base-url.const.ts","../../../projects/connect-angular/src/persistence/cookie-data-persistence.ts","../../../projects/connect-angular/src/services/auth.service.ts","../../../projects/connect-angular/src/services/checkout/checkout-repositories.facade.ts","../../../projects/connect-angular/src/services/checkout/checkout-dependencies.facade.ts","../../../projects/connect-angular/src/services/shared/configuration.facade.ts","../../../projects/connect-angular/src/services/checkout.service.ts","../../../projects/connect-angular/src/services/cart/cart-services.facade.ts","../../../projects/connect-angular/src/services/cart.service.ts","../../../projects/connect-angular/src/services/catalog/adapters/new-category-structure.adapter.ts","../../../projects/connect-angular/src/services/catalog/adapters/old-category-structure.adapter.ts","../../../projects/connect-angular/src/services/catalog/context/catalog-search.context.ts","../../../projects/connect-angular/src/services/catalog/strategies/category-search.strategy.ts","../../../projects/connect-angular/src/services/catalog/strategies/profile-search.strategy.ts","../../../projects/connect-angular/src/services/catalog/strategies/term-search.strategy.ts","../../../projects/connect-angular/src/services/catalog/facades/catalog-strategies.facade.ts","../../../projects/connect-angular/src/services/catalog/facades/catalog-service.facade.ts","../../../projects/connect-angular/src/services/catalog/facades/category-repository.facade.ts","../../../projects/connect-angular/src/services/catalog/category.service.ts","../../../projects/connect-angular/src/services/catalog/facades/product-catalog.facade.ts","../../../projects/connect-angular/src/services/catalog/facades/category-service.facade.ts","../../../projects/connect-angular/src/services/catalog/helpers/brand-manager.helper.ts","../../../projects/connect-angular/src/services/catalog/helpers/catalog-filter.helper.ts","../../../projects/connect-angular/src/services/catalog/helpers/catalog-sort.helper.ts","../../../projects/connect-angular/src/services/catalog/helpers/product-fields.helper.ts","../../../projects/connect-angular/src/services/catalog/services/catalog-operations.facade.ts","../../../projects/connect-angular/src/services/catalog/services/product-management.facade.ts","../../../projects/connect-angular/src/services/catalog/services/catalog-helpers.service.ts","../../../projects/connect-angular/src/services/catalog/services/catalog-repository.service.ts","../../../projects/connect-angular/src/services/catalog/catalog.service.ts","../../../projects/connect-angular/src/services/catalog/enums/product-sorts.enum.ts","../../../projects/connect-angular/src/services/catalog/models/category-with-tree.model.ts","../../../projects/connect-angular/src/services/catalog/wishlist.service.ts","../../../projects/connect-angular/src/services/coupon/coupon-repositories.facade.ts","../../../projects/connect-angular/src/services/coupon.service.ts","../../../projects/connect-angular/src/services/checkout-subscription.service.ts","../../../projects/connect-angular/src/services/helpers/util.helper.ts","../../../projects/connect-angular/src/services/home-shop/home-shop-repositories.facade.ts","../../../projects/connect-angular/src/services/home-shop.service.ts","../../../projects/connect-angular/src/services/order-product-review.service.ts","../../../projects/connect-angular/src/services/order.service.ts","../../../projects/connect-angular/src/angular-connect.module.ts","../../../projects/connect-angular/src/infrab4a-connect-angular.ts"],"sourcesContent":["export const ES_CONFIG = 'ES_CONFIG'\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { AxiosAdapter, AxiosElasticSearchConfig, ProductsIndex } from '@infrab4a/connect'\r\n\r\nimport { ES_CONFIG } from './consts/es-config.const'\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: ProductsIndex,\r\n useFactory: (configuration: AxiosElasticSearchConfig): ProductsIndex =>\r\n new ProductsIndex(new AxiosAdapter(configuration)),\r\n deps: [ES_CONFIG],\r\n },\r\n ],\r\n})\r\nexport class AngularElasticSeachModule {\r\n static initializeApp(options: AxiosElasticSearchConfig): ModuleWithProviders<AngularElasticSeachModule> {\r\n return {\r\n ngModule: AngularElasticSeachModule,\r\n providers: [{ provide: ES_CONFIG, useValue: options }],\r\n }\r\n }\r\n}\r\n","export const BACKEND_URL = 'BACKEND_URL'\r\n","export const CATEGORY_STRUCTURE = 'CATEGORY_STRUCTURE'\r\n","export const DEFAULT_SHOP = 'DEFAULT_SHOP'\r\n","import { InjectionToken } from '@angular/core'\r\n\r\nexport const FIREBASE_APP_NAME = new InjectionToken('firebaseAppName')\r\nexport const FIREBASE_OPTIONS = new InjectionToken('firebaseOptions')\r\nexport const APP_CHECK_PROVIDER = new InjectionToken('appCheckProvider')\r\n","export const HASURA_OPTIONS = 'HASURA_OPTIONS'\r\n","export const PERSISTENCE_PROVIDER = 'PERSISTENCE_PROVIDER'\r\n","export const VERTEX_CONFIG = 'VERTEX_CONFIG'\r\n","import { Injector, ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { FirebaseApp, FirebaseOptions } from '@angular/fire/app'\r\nimport {\r\n Auth,\r\n browserLocalPersistence,\r\n browserSessionPersistence,\r\n getAuth,\r\n indexedDBLocalPersistence,\r\n initializeAuth,\r\n provideAuth,\r\n} from '@angular/fire/auth'\r\nimport {\r\n Authentication,\r\n AuthenticationFirebaseAuthService,\r\n AuthenticationService,\r\n RecoveryPassword,\r\n Register,\r\n RegisterFirebaseAuthService,\r\n RegisterService,\r\n SignOut,\r\n UserRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'\r\nimport { FirebaseAppConfig } from './types'\r\n\r\n@NgModule({\r\n imports: [\r\n provideAuth((injector: Injector) => {\r\n const app = injector.get(FirebaseApp)\r\n\r\n try {\r\n return initializeAuth(app, {\r\n persistence: [indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence],\r\n })\r\n } catch (error) {\r\n if (error instanceof Error) console.error('Error initializing auth', error.message)\r\n\r\n return getAuth(app)\r\n }\r\n }),\r\n ],\r\n providers: [\r\n {\r\n provide: 'Authentication',\r\n useFactory: (authenticationService: AuthenticationService, userRepository: UserRepository): Authentication => {\r\n return new Authentication(authenticationService, userRepository)\r\n },\r\n deps: ['AuthenticationService', 'UserRepository'],\r\n },\r\n {\r\n provide: 'AuthenticationService',\r\n useFactory: (angularFireAuth: Auth): AuthenticationService => {\r\n return new AuthenticationFirebaseAuthService(angularFireAuth)\r\n },\r\n deps: [Auth],\r\n },\r\n {\r\n provide: 'Register',\r\n useFactory: (registerService: RegisterService, userRepository: UserRepository): Register => {\r\n return new Register(registerService, userRepository)\r\n },\r\n deps: ['RegisterService', 'UserRepository'],\r\n },\r\n {\r\n provide: 'RegisterService',\r\n useFactory: (angularFireAuth: Auth): RegisterService => {\r\n return new RegisterFirebaseAuthService(angularFireAuth)\r\n },\r\n deps: [Auth],\r\n },\r\n {\r\n provide: 'SignOut',\r\n useFactory: (authenticationService: AuthenticationService): SignOut => {\r\n return new SignOut(authenticationService)\r\n },\r\n deps: ['AuthenticationService'],\r\n },\r\n {\r\n provide: 'RecoveryPassword',\r\n useFactory: (authenticationService: AuthenticationService): RecoveryPassword => {\r\n return new RecoveryPassword(authenticationService)\r\n },\r\n deps: ['AuthenticationService'],\r\n },\r\n ],\r\n})\r\nexport class AngularFirebaseAuthModule {\r\n static initializeApp(\r\n options: FirebaseOptions,\r\n nameOrConfig?: string | FirebaseAppConfig,\r\n ): ModuleWithProviders<AngularFirebaseAuthModule> {\r\n return {\r\n ngModule: AngularFirebaseAuthModule,\r\n providers: [\r\n { provide: FIREBASE_OPTIONS, useValue: options },\r\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\r\n ],\r\n }\r\n }\r\n}\r\n","export class MobileOperationSystemCheckerHelper {\r\n static isAppleDevice() {\r\n return (\r\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\r\n navigator?.platform,\r\n ) ||\r\n (navigator?.userAgent?.includes?.('Mac') && 'ontouchend' in (document || {}))\r\n )\r\n }\r\n}\r\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common'\r\nimport { Injector, ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'\r\nimport { FirebaseApp, FirebaseOptions } from '@angular/fire/app'\r\nimport { Firestore, initializeFirestore, memoryLocalCache, provideFirestore } from '@angular/fire/firestore'\r\nimport {\r\n AxiosElasticSearchConfig,\r\n BeautyProfileRepository,\r\n Buy2WinFirestoreRepository,\r\n Buy2WinRepository,\r\n CampaignDashboardFirestoreRepository,\r\n CampaignDashboardRepository,\r\n CampaignHashtagFirestoreRepository,\r\n CampaignHashtagRepository,\r\n CategoryFirestoreRepository,\r\n CategoryRepository,\r\n CheckoutFirestoreRepository,\r\n CheckoutRepository,\r\n CheckoutSubscriptionFirestoreRepository,\r\n CheckoutSubscriptionRepository,\r\n ConnectFirestoreService,\r\n CouponFirestoreRepository,\r\n CouponRepository,\r\n EditionRepository,\r\n FirestoreConstructorParams,\r\n FirestoreIntertceptorRequestParams,\r\n GroupFirestoreRepository,\r\n GroupRepository,\r\n HomeFirestoreRepository,\r\n HomeRepository,\r\n LeadFirestoreRepository,\r\n LeadRepository,\r\n LegacyOrderFirestoreRepository,\r\n LegacyOrderRepository,\r\n LogFirestoreRepository,\r\n LogRepository,\r\n OrderBlockedFirestoreRepository,\r\n OrderBlockedRepository,\r\n OrderFirestoreRepository,\r\n OrderRepository,\r\n PaymentFirestoreRepository,\r\n PaymentRepository,\r\n ProductFirestoreRepository,\r\n ProductRepository,\r\n ProductVariantFirestoreRepository,\r\n SequenceFirestoreRepository,\r\n ShopMenuFirestoreRepository,\r\n ShopMenuRepository,\r\n ShopSettingsFirestoreRepository,\r\n ShopSettingsRepository,\r\n SubscriptionEditionFirestoreRepository,\r\n SubscriptionFirestoreRepository,\r\n SubscriptionMaterializationFirestoreRepository,\r\n SubscriptionMaterializationRepository,\r\n SubscriptionPaymentFirestoreRepository,\r\n SubscriptionPaymentRepository,\r\n SubscriptionPlanFirestoreRepository,\r\n SubscriptionPlanRepository,\r\n SubscriptionProductFirestoreRepository,\r\n SubscriptionProductRepository,\r\n SubscriptionRepository,\r\n SubscriptionSummaryFirestoreRepository,\r\n SubscriptionSummaryRepository,\r\n UserAddressFirestoreRepository,\r\n UserAddressRepository,\r\n UserBeautyProfileFirestoreRepository,\r\n UserFirestoreRepository,\r\n UserPaymentMethodFirestoreRepository,\r\n UserPaymentMethodRepository,\r\n UserRepository,\r\n VariantRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { AngularElasticSeachModule } from './angular-elastic-search.module'\r\nimport { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'\r\nimport { MobileOperationSystemCheckerHelper } from './helpers'\r\nimport { FirebaseAppConfig } from './types'\r\n\r\nexport type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>\r\n\r\n@NgModule({\r\n imports: [\r\n AngularElasticSeachModule,\r\n provideFirestore((injector: Injector) => {\r\n const platformId = injector.get(PLATFORM_ID)\r\n\r\n if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())\r\n return initializeFirestore(injector.get(FirebaseApp), {\r\n ignoreUndefinedProperties: true,\r\n })\r\n\r\n const firestore = initializeFirestore(injector.get(FirebaseApp), {\r\n experimentalForceLongPolling: true,\r\n ignoreUndefinedProperties: true,\r\n localCache: memoryLocalCache(),\r\n })\r\n\r\n return firestore\r\n }),\r\n ],\r\n providers: [\r\n {\r\n provide: 'FirestoreOptions',\r\n useFactory: (firestore: Firestore, platformId: string): FirestoreOptions => ({\r\n firestore: new ConnectFirestoreService(firestore),\r\n interceptors: {\r\n request: (request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> }) => {\r\n if (isPlatformBrowser(platformId)) return request\r\n\r\n const interval = setInterval(() => {}, 100)\r\n\r\n request.interval = interval\r\n\r\n return request\r\n },\r\n response: (\r\n response: any,\r\n request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> },\r\n ) => {\r\n if (isPlatformBrowser(platformId)) return response\r\n\r\n clearInterval(request.interval)\r\n\r\n return response\r\n },\r\n },\r\n }),\r\n deps: [Firestore, PLATFORM_ID],\r\n },\r\n {\r\n provide: 'BeautyProfileRepository',\r\n useFactory: (config: FirestoreOptions, userRepository: UserFirestoreRepository): BeautyProfileRepository => {\r\n return new UserBeautyProfileFirestoreRepository(config, userRepository)\r\n },\r\n deps: ['FirestoreOptions', 'UserRepository'],\r\n },\r\n {\r\n provide: 'Buy2WinRepository',\r\n useFactory: (options: FirestoreOptions): Buy2WinRepository => {\r\n return new Buy2WinFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: CategoryFirestoreRepository,\r\n useFactory: (options: FirestoreOptions): CategoryRepository => {\r\n return new CategoryFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CheckoutRepository',\r\n useFactory: (options: FirestoreOptions): CheckoutRepository => {\r\n return new CheckoutFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CheckoutSubscriptionRepository',\r\n useFactory: (options: FirestoreOptions): CheckoutSubscriptionRepository => {\r\n return new CheckoutSubscriptionFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CouponRepository',\r\n useFactory: (options: FirestoreOptions): CouponRepository => {\r\n return new CouponFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CampaignHashtagRepository',\r\n useFactory: (options: FirestoreOptions): CampaignHashtagRepository => {\r\n return new CampaignHashtagFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'CampaignDashboardRepository',\r\n useFactory: (options: FirestoreOptions): CampaignDashboardRepository => {\r\n return new CampaignDashboardFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'EditionRepository',\r\n useFactory: (\r\n options: FirestoreOptions,\r\n subscriptionRepository: SubscriptionFirestoreRepository,\r\n ): EditionRepository => {\r\n return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository)\r\n },\r\n deps: ['FirestoreOptions', 'SubscriptionRepository'],\r\n },\r\n {\r\n provide: 'GroupRepository',\r\n useFactory: (options: FirestoreOptions): GroupRepository => {\r\n return new GroupFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'HomeRepository',\r\n useFactory: (options: FirestoreOptions): HomeRepository => {\r\n return new HomeFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'LeadRepository',\r\n useFactory: (options: FirestoreOptions): LeadRepository => {\r\n return new LeadFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'LegacyOrderRepository',\r\n useFactory: (options: FirestoreOptions): LegacyOrderRepository => {\r\n return new LegacyOrderFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'ShopMenuRepository',\r\n useFactory: (options: FirestoreOptions): ShopMenuRepository => {\r\n return new ShopMenuFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'OrderRepository',\r\n useFactory: (options: FirestoreOptions): OrderRepository => {\r\n return new OrderFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'PaymentRepository',\r\n useFactory: (options: FirestoreOptions): PaymentRepository => {\r\n return new PaymentFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: ProductFirestoreRepository,\r\n useFactory: (options: FirestoreOptions): ProductRepository => {\r\n return new ProductFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'ShopSettingsRepository',\r\n useFactory: (options: FirestoreOptions): ShopSettingsRepository => {\r\n return new ShopSettingsFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionPaymentRepository',\r\n useFactory: (\r\n options: FirestoreOptions,\r\n subscriptionRepository: SubscriptionFirestoreRepository,\r\n ): SubscriptionPaymentRepository => {\r\n return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository)\r\n },\r\n deps: ['FirestoreOptions', 'SubscriptionRepository'],\r\n },\r\n {\r\n provide: 'SubscriptionPlanRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionPlanRepository => {\r\n return new SubscriptionPlanFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionProductRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionProductRepository => {\r\n return new SubscriptionProductFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionRepository => {\r\n return new SubscriptionFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'UserRepository',\r\n useFactory: (options: FirestoreOptions): UserRepository => {\r\n return new UserFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'UserAddressRepository',\r\n useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserAddressRepository => {\r\n return new UserAddressFirestoreRepository(options, userRepository)\r\n },\r\n deps: ['FirestoreOptions', 'UserRepository'],\r\n },\r\n {\r\n provide: 'UserPaymentMethodRepository',\r\n useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserPaymentMethodRepository => {\r\n return new UserPaymentMethodFirestoreRepository(options, userRepository)\r\n },\r\n deps: ['FirestoreOptions', 'UserRepository'],\r\n },\r\n {\r\n provide: 'SubscriptionMaterializationRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionMaterializationRepository => {\r\n return new SubscriptionMaterializationFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SubscriptionSummaryRepository',\r\n useFactory: (options: FirestoreOptions): SubscriptionSummaryRepository => {\r\n return new SubscriptionSummaryFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: ProductVariantFirestoreRepository,\r\n useFactory: (options: FirestoreOptions, productRepository: ProductFirestoreRepository): VariantRepository => {\r\n return new ProductVariantFirestoreRepository(options, productRepository)\r\n },\r\n deps: ['FirestoreOptions', ProductFirestoreRepository],\r\n },\r\n {\r\n provide: 'OrderBlockedRepository',\r\n useFactory: (options: FirestoreOptions): OrderBlockedRepository => {\r\n return new OrderBlockedFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'LogRepository',\r\n useFactory: (options: FirestoreOptions): LogRepository => {\r\n return new LogFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n {\r\n provide: 'SequenceRepository',\r\n useFactory: (options: FirestoreOptions): SequenceFirestoreRepository => {\r\n return new SequenceFirestoreRepository(options)\r\n },\r\n deps: ['FirestoreOptions'],\r\n },\r\n ],\r\n})\r\nexport class AngularFirestoreModule {\r\n static initializeApp(\r\n options: {\r\n firebase: FirebaseOptions\r\n elasticSearch: AxiosElasticSearchConfig\r\n },\r\n nameOrConfig?: string | FirebaseAppConfig,\r\n ): ModuleWithProviders<AngularFirestoreModule> {\r\n return {\r\n ngModule: AngularFirestoreModule,\r\n providers: [\r\n { provide: FIREBASE_OPTIONS, useValue: options.firebase },\r\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\r\n { provide: ES_CONFIG, useValue: options.elasticSearch },\r\n ],\r\n }\r\n }\r\n}\r\n","import { isPlatformBrowser } from '@angular/common'\r\nimport { ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'\r\nimport {\r\n CacheConfig,\r\n CategoryCollectionChildrenHasuraGraphQLRepository,\r\n CategoryFilterHasuraGraphQLRepository,\r\n CategoryFilterRepository,\r\n CategoryHasuraGraphQLRepository,\r\n CategoryProductHasuraGraphQLRepository,\r\n CategoryRepository,\r\n FilterHasuraGraphQLRepository,\r\n FilterOptionHasuraGraphQLRepository,\r\n FilterOptionRepository,\r\n FilterRepository,\r\n GraphQLParams,\r\n HasuraConstructorParams,\r\n HasuraGraphQLAuthOptions,\r\n ProductCatalogHasuraGraphQLRepository,\r\n ProductErrors,\r\n ProductErrorsHasuraGraphQLRepository,\r\n ProductErrorsRepository,\r\n ProductHasuraGraphQLRepository,\r\n ProductRepository,\r\n ProductReviewHasuraGraphQLRepository,\r\n ProductReviewRepository,\r\n ProductStockNotificationHasuraGraphQLRepository,\r\n ProductStockNotificationRepository,\r\n VariantHasuraGraphQLRepository,\r\n VariantRepository,\r\n WishlistHasuraGraphQLRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { HASURA_OPTIONS } from './consts'\r\n\r\nexport type HasuraGraphQLOptions = { endpoint: string; credentials?: HasuraGraphQLAuthOptions; cache?: CacheConfig }\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: 'HasuraConfig',\r\n useFactory: (options: HasuraGraphQLOptions, platformId: string) => ({\r\n endpoint: options.endpoint,\r\n authOptions: options.credentials,\r\n cache: options.cache,\r\n interceptors: {\r\n request: (request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {\r\n if (isPlatformBrowser(platformId)) return request\r\n\r\n const interval = setInterval(() => {}, 100)\r\n\r\n request.interval = interval\r\n\r\n return request\r\n },\r\n response: (response: any, request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {\r\n if (isPlatformBrowser(platformId)) return response\r\n\r\n clearInterval(request.interval)\r\n\r\n return response\r\n },\r\n },\r\n }),\r\n deps: [HASURA_OPTIONS, PLATFORM_ID],\r\n },\r\n {\r\n provide: 'CategoryRepository',\r\n useExisting: CategoryHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: CategoryHasuraGraphQLRepository,\r\n useFactory: (\r\n options: any,\r\n productRepository: ProductHasuraGraphQLRepository,\r\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\r\n ): CategoryRepository => {\r\n return new CategoryHasuraGraphQLRepository(options, productRepository, categoryFilterRepository)\r\n },\r\n deps: ['HasuraConfig', ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: 'ProductRepository',\r\n useExisting: ProductHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): ProductRepository => {\r\n return new ProductHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'ProductReviewRepository',\r\n useExisting: ProductReviewHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductReviewHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): ProductReviewRepository => {\r\n return new ProductReviewHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'VariantRepository',\r\n useExisting: VariantHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: VariantHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): VariantRepository => {\r\n return new VariantHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'ProductStockNotificationRepository',\r\n useExisting: ProductStockNotificationHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductStockNotificationHasuraGraphQLRepository,\r\n useFactory: (hasuraConfig: any): ProductStockNotificationRepository => {\r\n return new ProductStockNotificationHasuraGraphQLRepository(hasuraConfig)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'CategoryFilterRepository',\r\n useExisting: CategoryFilterHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: CategoryFilterHasuraGraphQLRepository,\r\n useFactory: (options: any): CategoryFilterRepository => {\r\n return new CategoryFilterHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'FilterOptionRepository',\r\n useExisting: FilterOptionHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: FilterOptionHasuraGraphQLRepository,\r\n useFactory: (options: any): FilterOptionRepository => {\r\n return new FilterOptionHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'FilterRepository',\r\n useExisting: FilterHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: FilterHasuraGraphQLRepository,\r\n useFactory: (\r\n options: any,\r\n filterOptionRepository: FilterOptionHasuraGraphQLRepository,\r\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\r\n ): FilterRepository => {\r\n return new FilterHasuraGraphQLRepository(options, filterOptionRepository, categoryFilterRepository)\r\n },\r\n deps: ['HasuraConfig', FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: CategoryCollectionChildrenHasuraGraphQLRepository,\r\n useFactory: (options: any): CategoryCollectionChildrenHasuraGraphQLRepository =>\r\n new CategoryCollectionChildrenHasuraGraphQLRepository(options),\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'CategoryCollectionChildrenRepository',\r\n useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: CategoryProductHasuraGraphQLRepository,\r\n useFactory: (options: any): CategoryProductHasuraGraphQLRepository => {\r\n return new CategoryProductHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'CategoryProductRepository',\r\n useExisting: CategoryProductHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: WishlistHasuraGraphQLRepository,\r\n useFactory: (\r\n options: any,\r\n categoryProductRepository: CategoryProductHasuraGraphQLRepository,\r\n ): WishlistHasuraGraphQLRepository => {\r\n return new WishlistHasuraGraphQLRepository(options, categoryProductRepository)\r\n },\r\n deps: ['HasuraConfig', CategoryProductHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: 'WishlistRepository',\r\n useExisting: WishlistHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductErrorsHasuraGraphQLRepository,\r\n useFactory: (\r\n options: HasuraConstructorParams<ProductErrors>,\r\n productRepository: ProductHasuraGraphQLRepository,\r\n ): ProductErrorsRepository => {\r\n return new ProductErrorsHasuraGraphQLRepository(options, productRepository)\r\n },\r\n deps: ['HasuraConfig', ProductHasuraGraphQLRepository],\r\n },\r\n {\r\n provide: 'ProductErrorsRepository',\r\n useExisting: ProductErrorsHasuraGraphQLRepository,\r\n },\r\n {\r\n provide: ProductCatalogHasuraGraphQLRepository,\r\n useFactory: (options: any): ProductCatalogHasuraGraphQLRepository => {\r\n return new ProductCatalogHasuraGraphQLRepository(options)\r\n },\r\n deps: ['HasuraConfig'],\r\n },\r\n {\r\n provide: 'ProductCatalogRepository',\r\n useExisting: ProductCatalogHasuraGraphQLRepository,\r\n },\r\n ],\r\n})\r\nexport class AngularHasuraGraphQLModule {\r\n static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule> {\r\n return {\r\n ngModule: AngularHasuraGraphQLModule,\r\n providers: [{ provide: HASURA_OPTIONS, useValue: options }],\r\n }\r\n }\r\n}\r\n","import { ModuleWithProviders, NgModule } from '@angular/core'\r\nimport { ProductsVertexSearch, VertexAxiosAdapter, VertexSearchConfig } from '@infrab4a/connect'\r\n\r\nimport { VERTEX_CONFIG } from './consts'\r\n\r\n@NgModule({\r\n providers: [\r\n {\r\n provide: ProductsVertexSearch,\r\n useFactory: (configuration: VertexSearchConfig): ProductsVertexSearch =>\r\n new ProductsVertexSearch(new VertexAxiosAdapter(configuration)),\r\n deps: [VERTEX_CONFIG],\r\n },\r\n ],\r\n})\r\nexport class AngularVertexSeachModule {\r\n static initializeApp(options: VertexSearchConfig): ModuleWithProviders<AngularVertexSeachModule> {\r\n return {\r\n ngModule: AngularVertexSeachModule,\r\n providers: [{ provide: VERTEX_CONFIG, useValue: options }],\r\n }\r\n }\r\n}\r\n","export const STORAGE_BASE_URL = 'STORAGE_BASE_URL'\r\n","import { Injectable } from '@angular/core'\r\nimport cookie from 'js-cookie'\r\nimport { Observable, from, of } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\n\r\nimport { DataPersistence } from './data-persistence'\r\n\r\n@Injectable()\r\nexport class CookieDataPersistence implements DataPersistence {\r\n get(key: string): Observable<string> {\r\n return of(cookie.get(key))\r\n }\r\n\r\n remove(key: string): Observable<void> {\r\n return of(cookie.remove(key))\r\n }\r\n\r\n set(key: string, value: string): Observable<void> {\r\n return from(cookie.set(key, value)).pipe(map(() => {}))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Auth, User as FirebaseUser, authState, getIdToken } from '@angular/fire/auth'\r\nimport { User, UserRepository } from '@infrab4a/connect'\r\nimport { Observable, combineLatest, from, of } from 'rxjs'\r\nimport { catchError, map, mergeMap } from 'rxjs/operators'\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n constructor(\r\n private readonly angularFireAuth: Auth,\r\n @Inject('UserRepository') private readonly userRepository: UserRepository,\r\n ) {}\r\n\r\n getAuthstate(): Observable<{ user: User; isAnonymous: boolean }> {\r\n const observables: [Observable<FirebaseUser>, Observable<User>] = [this.getFireUser(), this.getUser()]\r\n\r\n return combineLatest(observables).pipe(\r\n map(([fireUser, user]) => ({\r\n user,\r\n isAnonymous: fireUser?.isAnonymous,\r\n })),\r\n )\r\n }\r\n\r\n getUser(): Observable<User> {\r\n return this.getFireUser().pipe(\r\n map((user) => user?.uid),\r\n mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))),\r\n )\r\n }\r\n\r\n getTokenId(): Observable<string> {\r\n return from(getIdToken(this.angularFireAuth.currentUser))\r\n }\r\n\r\n getFireUser(): Observable<FirebaseUser> {\r\n return authState(this.angularFireAuth).pipe(catchError(() => of(null)))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CheckoutRepository, UserRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CheckoutRepositoriesFacade {\r\n constructor(\r\n @Inject('CheckoutRepository') public readonly checkoutRepository: CheckoutRepository,\r\n @Inject('UserRepository') public readonly userRepository: UserRepository,\r\n ) {}\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Inject, Injectable } from '@angular/core'\r\n\r\nimport { PERSISTENCE_PROVIDER } from '../../consts'\r\nimport { DataPersistence } from '../../persistence'\r\n\r\n@Injectable()\r\nexport class CheckoutDependenciesFacade {\r\n constructor(\r\n @Inject(PERSISTENCE_PROVIDER) public readonly dataPersistence: DataPersistence,\r\n public readonly httpClient: HttpClient,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { FirebaseOptions } from '@angular/fire/app'\r\nimport { Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP, FIREBASE_OPTIONS } from '../../consts'\r\n\r\n@Injectable()\r\nexport class ConfigurationFacade {\r\n constructor(\r\n @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,\r\n @Inject(FIREBASE_OPTIONS) public readonly firebaseOptions: FirebaseOptions,\r\n ) {}\r\n\r\n getCheckoutUrl(): string {\r\n return `https://southamerica-east1-${this.firebaseOptions.projectId}.cloudfunctions.net`\r\n }\r\n\r\n getProjectId(): string {\r\n return this.firebaseOptions.projectId\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n Checkout,\r\n CheckoutPayloadRequest,\r\n CheckoutResponse,\r\n CheckoutStockValidation,\r\n CheckoutTypes,\r\n Coupon,\r\n isNil,\r\n NotFoundError,\r\n pick,\r\n ShippingMethodResponse,\r\n ShippingProductRequest,\r\n User,\r\n UserAddress,\r\n} from '@infrab4a/connect'\r\nimport { from, Observable, of, throwError } from 'rxjs'\r\nimport { concatMap, map } from 'rxjs/operators'\r\n\r\nimport { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './checkout'\r\nimport { ConfigurationFacade } from './shared'\r\nimport { RequiredCheckoutData } from './types'\r\n\r\n@Injectable()\r\nexport class CheckoutService {\r\n private checkoutUrl: string = null\r\n\r\n constructor(\r\n private readonly repositoriesFacade: CheckoutRepositoriesFacade,\r\n private readonly dependenciesFacade: CheckoutDependenciesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {\r\n this.checkoutUrl = this.configurationFacade.getCheckoutUrl()\r\n }\r\n\r\n getCheckout(checkoutData?: RequiredCheckoutData): Observable<Checkout> {\r\n return this.dependenciesFacade.dataPersistence\r\n .get('checkoutId')\r\n .pipe(\r\n concatMap((id) =>\r\n !isNil(id) ? this.repositoriesFacade.checkoutRepository.get({ id }) : this.createCheckout(checkoutData),\r\n ),\r\n )\r\n }\r\n\r\n getUserByCheckout(checkoutId: string): Observable<User> {\r\n return from(this.repositoriesFacade.checkoutRepository.get({ id: checkoutId })).pipe(\r\n concatMap((checkout) =>\r\n checkout?.user?.id\r\n ? of(checkout.user)\r\n : from(this.repositoriesFacade.userRepository.get({ id: checkout.user.id })),\r\n ),\r\n concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))),\r\n )\r\n }\r\n\r\n updateCheckoutLineItems(checkout: Partial<Checkout>): Observable<Checkout> {\r\n return from(\r\n this.repositoriesFacade.checkoutRepository.update(\r\n Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems }),\r\n ),\r\n )\r\n }\r\n\r\n updateCheckoutUser(checkout: Partial<Checkout>): Observable<Checkout> {\r\n return from(\r\n this.repositoriesFacade.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })),\r\n )\r\n }\r\n\r\n clearCheckoutFromSession(): Observable<void> {\r\n return this.dependenciesFacade.dataPersistence.remove('checkoutId')\r\n }\r\n\r\n resetCheckoutValues(): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutResetValues`, {\r\n checkoutId: checkout.id,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n )\r\n }\r\n\r\n applyCouponDiscount(nickname: string, checkoutType: CheckoutTypes): Observable<Coupon> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutApplyDiscount`, {\r\n checkoutId: checkout.id,\r\n coupon: nickname,\r\n checkoutType,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n map((checkout) => checkout.coupon),\r\n )\r\n }\r\n\r\n removeCouponDiscount(): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveDiscount`, {\r\n checkoutId: checkout.id,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n )\r\n }\r\n\r\n validateStockProducts(): Observable<CheckoutStockValidation> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post<{\r\n valid: boolean\r\n outOfStock: string[]\r\n limitedStock: string[]\r\n }>(`${this.checkoutUrl}/checkoutValidateProductStock`, {\r\n checkoutId: checkout.id,\r\n }),\r\n ),\r\n )\r\n }\r\n\r\n selectShippingAddress(address: UserAddress): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) => {\r\n return this.repositoriesFacade.checkoutRepository.update(\r\n Checkout.toInstance({ id: checkout.id, shippingAddress: address, billingAddress: address }),\r\n )\r\n }),\r\n )\r\n }\r\n\r\n getAvailableShippingForProduct(productShipping: ShippingProductRequest): Observable<ShippingMethodResponse[]> {\r\n return this.dependenciesFacade.httpClient.post<ShippingMethodResponse[]>(\r\n `${this.checkoutUrl}/checkoutGetAvailableShipping`,\r\n {\r\n checkoutId: null,\r\n productShipping,\r\n },\r\n )\r\n }\r\n\r\n getAvailableShippingForCheckout(): Observable<ShippingMethodResponse[]> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post<ShippingMethodResponse[]>(\r\n `${this.checkoutUrl}/checkoutGetAvailableShipping`,\r\n {\r\n checkoutId: checkout.id,\r\n productShipping: null,\r\n },\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n selectShipping(option: string): Observable<Checkout> {\r\n return this.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.dependenciesFacade.httpClient.post(`${this.checkoutUrl}/checkoutSelectShipping`, {\r\n checkoutId: checkout.id,\r\n shippingOption: option,\r\n }),\r\n ),\r\n concatMap(() => this.getCheckout()),\r\n )\r\n }\r\n\r\n createOrder(\r\n checkoutPayload: CheckoutPayloadRequest,\r\n paymentProvider: string,\r\n applicationVersion: string,\r\n ): Observable<CheckoutResponse> {\r\n return this.dependenciesFacade.httpClient.post<CheckoutResponse>(`${this.checkoutUrl}/checkoutV5`, {\r\n data: {\r\n ...checkoutPayload,\r\n applicationVersion,\r\n paymentProvider,\r\n },\r\n })\r\n }\r\n\r\n private async createCheckout(checkoutData?: RequiredCheckoutData): Promise<Checkout> {\r\n const checkout = await this.repositoriesFacade.checkoutRepository.create({\r\n createdAt: new Date(),\r\n ...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),\r\n shop: checkoutData?.shop || this.configurationFacade.defaultShop,\r\n })\r\n\r\n await this.dependenciesFacade.dataPersistence.set('checkoutId', checkout.id).toPromise()\r\n\r\n return checkout\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http'\r\nimport { Injectable } from '@angular/core'\r\n\r\nimport { AuthService } from '../auth.service'\r\nimport { CheckoutService } from '../checkout.service'\r\n\r\n@Injectable()\r\nexport class CartServicesFacade {\r\n constructor(\r\n public readonly authService: AuthService,\r\n public readonly checkoutService: CheckoutService,\r\n public readonly httpClient: HttpClient,\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Checkout, LineItem, User } from '@infrab4a/connect'\r\nimport { Observable, of, Subject } from 'rxjs'\r\nimport { concatMap, map, tap } from 'rxjs/operators'\r\n\r\nimport { RequiredCheckoutData } from './types'\r\nimport { CartServicesFacade } from './cart'\r\nimport { ConfigurationFacade } from './shared'\r\n\r\nexport type Cart = {\r\n [id: string]: LineItem\r\n}\r\n\r\n@Injectable()\r\nexport class CartService {\r\n private cartSubject: Subject<Cart> = new Subject()\r\n private checkoutUrl: string = null\r\n\r\n constructor(\r\n private readonly servicesFacade: CartServicesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {\r\n this.checkoutUrl = this.configurationFacade.getCheckoutUrl()\r\n }\r\n\r\n addItem(item: LineItem, quantity: number = 1): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutAddItemToCart`, {\r\n checkoutId: checkout.id,\r\n productId: item.id,\r\n quantity,\r\n }),\r\n ),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n decreaseItem(item: LineItem): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutDecreaseProductFromCart`, {\r\n checkoutId: checkout.id,\r\n productId: item.id,\r\n quantity: 1,\r\n }),\r\n ),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n removeItem(item: LineItem): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutRemoveProductFromCart`, {\r\n checkoutId: checkout.id,\r\n productId: item.id,\r\n }),\r\n ),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n updateUserCart(user: User): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n concatMap((checkout) =>\r\n this.servicesFacade.checkoutService.updateCheckoutUser(Checkout.toInstance({ ...checkout.toPlain(), user })),\r\n ),\r\n concatMap((checkout) => {\r\n return this.servicesFacade.httpClient.post(`${this.checkoutUrl}/checkoutUpdateUserCart`, {\r\n checkoutId: checkout.id,\r\n })\r\n }),\r\n concatMap(() => this.servicesFacade.checkoutService.getCheckout()),\r\n map((updatedCheckout) => {\r\n return this.generateCartObject(updatedCheckout.lineItems)\r\n }),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n getCart(checkout?: RequiredCheckoutData): Observable<Cart> {\r\n this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart))\r\n\r\n return this.cartSubject\r\n }\r\n\r\n clearCart(): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout().pipe(\r\n map((checkout) => {\r\n this.servicesFacade.checkoutService.clearCheckoutFromSession()\r\n\r\n return checkout\r\n }),\r\n concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)),\r\n tap((cart) => this.cartSubject.next(cart)),\r\n )\r\n }\r\n\r\n private buildCartFromCheckout(checkoutData?: RequiredCheckoutData): Observable<Cart> {\r\n return this.servicesFacade.checkoutService.getCheckout(checkoutData).pipe(\r\n map((checkout) => checkout.lineItems),\r\n concatMap((lineItems) => of(this.generateCartObject(lineItems))),\r\n )\r\n }\r\n\r\n private generateCartObject = (items: LineItem[]): Cart =>\r\n items?.reduce(\r\n (cart, item) => ({\r\n ...cart,\r\n [item.id]: LineItem.toInstance({\r\n ...(cart[item.id] || item),\r\n quantity: (cart[item.id]?.quantity || 0) + (item.quantity ? item.quantity : 1),\r\n }),\r\n }),\r\n {} as Record<string, LineItem>,\r\n ) || {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Category, CategoryRepository, isNil, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'\r\n\r\nimport { CategoryStructureAdapter } from './category-structure.adapter'\r\n\r\n@Injectable()\r\nexport class NewCategoryStructureAdapter implements CategoryStructureAdapter {\r\n constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}\r\n\r\n async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {\r\n const loadedCategory = await this.getCategory(category)\r\n\r\n if (loadedCategory.isCollection) return { id: { operator: Where.IN, value: loadedCategory.products } }\r\n\r\n const categoryIds = [...(await this.getAllCategoriesIdFromCategory(category)), category.id.toString()]\r\n\r\n return {\r\n category: {\r\n id: {\r\n operator: Where.IN,\r\n value: categoryIds,\r\n },\r\n },\r\n }\r\n }\r\n\r\n private async getAllCategoriesIdFromCategory(category: Category): Promise<string[]> {\r\n return this.categoryRepository\r\n .getChildren(+category.id)\r\n .then((categories) => categories.map((category) => category.id.toString()))\r\n }\r\n\r\n private async getCategory(category: Category): Promise<Category> {\r\n const collectionCategory =\r\n category.isCollection ||\r\n (isNil(category.isCollection) && !category.products?.length) ||\r\n category.isWishlist ||\r\n category.brandCategory\r\n\r\n return collectionCategory ? this.categoryRepository.get({ id: category.id }) : category\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Category, CategoryRepository, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'\r\n\r\nimport { CategoryStructureAdapter } from './category-structure.adapter'\r\n\r\n@Injectable()\r\nexport class OldCategoryStructureAdapter implements CategoryStructureAdapter {\r\n constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}\r\n\r\n async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {\r\n const productsIds = category.products?.length\r\n ? category.products\r\n : await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products)\r\n\r\n return { id: { operator: Where.IN, value: productsIds } }\r\n }\r\n}\r\n","import { Product, RepositoryCacheOptions, RepositoryFindResult, Shops } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\n\r\nexport class CatalogSearchContext {\r\n private strategies = new Map<string, CatalogSearchStrategy>()\r\n\r\n constructor(\r\n private readonly categoryStrategy: CatalogSearchStrategy,\r\n private readonly termStrategy: CatalogSearchStrategy,\r\n private readonly profileStrategy: CatalogSearchStrategy,\r\n ) {\r\n this.initializeStrategies()\r\n }\r\n\r\n async executeSearch(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const strategy = this.selectStrategy(params)\r\n\r\n return strategy.search(params, shop, optionsCache)\r\n }\r\n\r\n private initializeStrategies(): void {\r\n this.strategies.set('category', this.categoryStrategy)\r\n this.strategies.set('term', this.termStrategy)\r\n this.strategies.set('profile', this.profileStrategy)\r\n }\r\n\r\n private selectStrategy(params: CatalogSearchParams): CatalogSearchStrategy {\r\n if (params.category) {\r\n const strategy = this.strategies.get('category')\r\n\r\n if (!strategy) throw new Error('Category strategy not found')\r\n\r\n return strategy\r\n }\r\n\r\n if (params.term) {\r\n const strategy = this.strategies.get('term')\r\n\r\n if (!strategy) throw new Error('Term strategy not found')\r\n\r\n return strategy\r\n }\r\n\r\n if (params.profile?.length) {\r\n const strategy = this.strategies.get('profile')\r\n\r\n if (!strategy) throw new Error('Profile strategy not found')\r\n\r\n return strategy\r\n }\r\n\r\n throw new Error('No valid search strategy found for the given parameters')\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { isEmpty, Product, RepositoryCacheOptions, RepositoryFindResult, Shops, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\nimport { CatalogHelpersService, CatalogRepositoryService } from '../services'\r\n\r\nimport {\r\n FindAndSortByMostRelevantParams,\r\n SearchDefaultParams,\r\n SearchWithMostRelevantParams,\r\n} from './types/strategy-params.type'\r\n\r\n@Injectable()\r\nexport class CategorySearchStrategy implements CatalogSearchStrategy {\r\n constructor(\r\n private readonly repositoryService: CatalogRepositoryService,\r\n private readonly helpersService: CatalogHelpersService,\r\n ) {}\r\n\r\n async search(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { category, filters, limits, sort, mainGender } = params\r\n\r\n if (!category) {\r\n throw new Error('Category is required for CategorySearchStrategy')\r\n }\r\n\r\n const fields = this.helpersService.getFieldsHelper().getStandardFields()\r\n\r\n if (sort === 'most-relevant') {\r\n return this.searchWithMostRelevant({\r\n category,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n optionsCache,\r\n fields,\r\n })\r\n }\r\n\r\n return this.searchDefault({\r\n category,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n sort,\r\n optionsCache,\r\n fields,\r\n })\r\n }\r\n\r\n private async searchWithMostRelevant(params: SearchWithMostRelevantParams) {\r\n const { category, filters, shop, optionsCache } = params\r\n const mostRelevant = category.isWishlist ? [] : category.getMostRelevantByShop(shop)\r\n const productsIds = await this.getProductIds(category, filters, optionsCache)\r\n\r\n return this.findAndSortByMostRelevant({\r\n mostRelevants: mostRelevant,\r\n productIds: productsIds,\r\n filters: params.filters,\r\n limits: params.limits,\r\n shop: params.shop,\r\n mainGender: params.mainGender,\r\n optionsCache: params.optionsCache,\r\n fields: params.fields,\r\n })\r\n }\r\n\r\n private async searchDefault(params: SearchDefaultParams) {\r\n const { category, filters, limits, sort, optionsCache, fields } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n const sortHelper = this.helpersService.getSortHelper()\r\n\r\n const repoParams = {\r\n fields,\r\n filters: {\r\n ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),\r\n limits,\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n distinct: ['brand'],\r\n },\r\n }\r\n\r\n return productCatalog.productCatalogRepository.findCatalog(repoParams, null, optionsCache)\r\n }\r\n\r\n private async getProductIds(category: any, filters: any, optionsCache: any): Promise<string[]> {\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n\r\n return productCatalog.productCatalogRepository\r\n .findCatalog(\r\n {\r\n fields: ['id'],\r\n filters: {\r\n ...(await productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category)),\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n },\r\n undefined,\r\n optionsCache,\r\n )\r\n .then((products) => products.data.map((product) => product.id))\r\n }\r\n\r\n private async findAndSortByMostRelevant(\r\n params: FindAndSortByMostRelevantParams,\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { mostRelevants, productIds, filters, shop, mainGender, optionsCache, fields, limits } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n const sortHelper = this.helpersService.getSortHelper()\r\n\r\n const mostRelevantProductsIds = [...new Set(mostRelevants.concat(productIds))]\r\n const totalResult = await productCatalog.productCatalogRepository.findCatalog(\r\n {\r\n fields,\r\n filters: {\r\n id: { operator: Where.IN, value: mostRelevantProductsIds },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n orderBy: sortHelper.buildSortQuery('best-sellers'),\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),\r\n },\r\n },\r\n mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n optionsCache,\r\n )\r\n\r\n return this.sortProductsByRelevance(totalResult, mostRelevants, limits)\r\n }\r\n\r\n private sortProductsByRelevance(totalResult: any, mostRelevants: string[], limits: any) {\r\n const mostRelevantWithoutStock = totalResult.data.filter(\r\n (product: any) => mostRelevants.includes(product.id) && product.stock.quantity <= 0,\r\n )\r\n const firstProducts = totalResult.data\r\n .filter((product: any) => mostRelevants.includes(product.id) && product.stock.quantity > 0)\r\n .sort((a: any, b: any) => mostRelevants.indexOf(a.id) - mostRelevants.indexOf(b.id))\r\n const lastProducts = totalResult.data\r\n .filter((product: any) => !mostRelevants.includes(product.id))\r\n .concat(mostRelevantWithoutStock)\r\n const categoryMostRelevants = firstProducts.concat(lastProducts)\r\n const resultFinal = categoryMostRelevants.slice(limits.offset, limits.offset + limits.limit)\r\n\r\n return {\r\n data: resultFinal,\r\n count: totalResult.count,\r\n maximum: totalResult.maximum,\r\n minimal: totalResult.minimal,\r\n distinct: totalResult.distinct,\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Product, RepositoryCacheOptions, RepositoryFindResult, Shops, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\nimport { CatalogHelpersService, CatalogRepositoryService } from '../services'\r\n\r\n@Injectable()\r\nexport class ProfileSearchStrategy implements CatalogSearchStrategy {\r\n constructor(\r\n private readonly repositoryService: CatalogRepositoryService,\r\n private readonly helpersService: CatalogHelpersService,\r\n ) {}\r\n\r\n async search(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { profile, filters, limits, sort, mainGender } = params\r\n\r\n if (!profile) {\r\n throw new Error('Profile is required for ProfileSearchStrategy')\r\n }\r\n\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n const sortHelper = this.helpersService.getSortHelper()\r\n const fieldsHelper = this.helpersService.getFieldsHelper()\r\n\r\n const repoParams = {\r\n fields: fieldsHelper.getStandardFields(),\r\n filters: {\r\n tagsProfile: { operator: Where.LIKE, value: profile },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n ...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),\r\n limits,\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n distinct: ['brand'],\r\n },\r\n }\r\n\r\n return productCatalog.productCatalogRepository.findCatalog(\r\n repoParams,\r\n mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n optionsCache,\r\n )\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n isEmpty,\r\n Product,\r\n ProductSearch,\r\n RepositoryCacheOptions,\r\n RepositoryFindResult,\r\n Shops,\r\n Where,\r\n} from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams, CatalogSearchStrategy } from '../../../interfaces'\r\nimport { CatalogHelpersService, CatalogRepositoryService } from '../services'\r\n\r\nimport {\r\n SortByTermRelevanceParams,\r\n TermSearchDefaultParams,\r\n TermSearchMostRelevantParams,\r\n} from './types/strategy-params.type'\r\n\r\n@Injectable()\r\nexport class TermSearchStrategy implements CatalogSearchStrategy {\r\n private productsByTerm: Record<string, string[]> = {}\r\n\r\n constructor(\r\n private readonly repositoryService: CatalogRepositoryService,\r\n private readonly helpersService: CatalogHelpersService,\r\n ) {}\r\n\r\n async search(\r\n params: CatalogSearchParams,\r\n shop: Shops,\r\n _optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<RepositoryFindResult<Product>> {\r\n const { term, filters, limits, sort, mainGender } = params\r\n\r\n if (!term) {\r\n throw new Error('Term is required for TermSearchStrategy')\r\n }\r\n\r\n const productIds = await this.findCatalogIdsBySearch(term, shop)\r\n\r\n if (sort === 'most-relevant') {\r\n return this.searchWithMostRelevant({\r\n productIds,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n })\r\n }\r\n\r\n return this.searchDefault({\r\n productIds,\r\n filters,\r\n limits,\r\n shop,\r\n mainGender,\r\n fields: this.helpersService.getFieldsHelper().getStandardFields(),\r\n })\r\n }\r\n\r\n private async searchWithMostRelevant(params: TermSearchMostRelevantParams): Promise<RepositoryFindResult<Product>> {\r\n const { productIds, filters, shop, mainGender } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n\r\n const totalResult = await productCatalog.productCatalogRepository.findCatalog(\r\n {\r\n fields: ['id', 'stock', 'gender'],\r\n filters: {\r\n id: { operator: Where.IN, value: productIds },\r\n published: { operator: Where.EQUALS, value: true },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n ...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),\r\n },\r\n },\r\n // mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n )\r\n\r\n return this.sortByTermRelevance({\r\n productIds,\r\n totalResult,\r\n limits: params.limits,\r\n filters,\r\n fieldsHelper: this.helpersService.getFieldsHelper(),\r\n })\r\n }\r\n\r\n private async searchDefault(params: TermSearchDefaultParams): Promise<RepositoryFindResult<Product>> {\r\n const { productIds, filters, limits, shop, mainGender, fields } = params\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const filterHelper = this.helpersService.getFilterHelper()\r\n\r\n return productCatalog.productCatalogRepository.findCatalog(\r\n {\r\n fields,\r\n filters: {\r\n id: { operator: Where.IN, value: productIds },\r\n published: { operator: Where.EQUALS, value: true },\r\n ...filterHelper.buildFilterQuery(filters || {}),\r\n },\r\n limits,\r\n options: {\r\n minimal: ['price'],\r\n maximum: ['price'],\r\n distinct: ['brand'],\r\n },\r\n },\r\n // mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'),\r\n )\r\n }\r\n\r\n private sortByTermRelevance(params: SortByTermRelevanceParams) {\r\n const { productIds, totalResult, limits, filters, fieldsHelper } = params\r\n // const defaultGender = filters?.gender?.at(0) || 'male'\r\n const stockData = totalResult.data.filter((product: any) => product.stock.quantity > 0)\r\n const stockOut = totalResult.data.filter((product: any) => product.stock.quantity <= 0)\r\n const productIdsStock = productIds.filter((product) => stockData.some((result: any) => result.id === product))\r\n const productIdsStockOut = productIds.filter((product) => stockOut.some((result: any) => result.id === product))\r\n const limitedProductId = productIdsStock\r\n .concat(productIdsStockOut)\r\n .slice(limits.offset, limits.offset + limits.limit)\r\n\r\n return this.getDetailedProducts(limitedProductId, totalResult, fieldsHelper)\r\n }\r\n\r\n private async getDetailedProducts(orderedId: string[], totalResult: any, fieldsHelper: any) {\r\n const productCatalog = this.repositoryService.getProductCatalog()\r\n const fields = fieldsHelper.getStandardFields()\r\n const productResult = await productCatalog.productCatalogRepository.findCatalog({\r\n filters: {\r\n id: { operator: Where.IN, value: orderedId },\r\n },\r\n fields,\r\n })\r\n\r\n return {\r\n data: orderedId.map((id) => productResult.data.find((product) => product.id === id)).filter(Boolean),\r\n count: totalResult.count,\r\n maximum: totalResult.maximum,\r\n minimal: totalResult.minimal,\r\n distinct: totalResult.distinct,\r\n }\r\n }\r\n\r\n private async findCatalogIdsBySearch(term: string, shop: Shops): Promise<string[]> {\r\n if (this.productsByTerm[term]) return this.productsByTerm[term]\r\n\r\n const productServices = this.repositoryService.getProductServices()\r\n\r\n return (this.productsByTerm[term] = await productServices.productSearch\r\n .search<ProductSearch>(term, 999, shop === Shops.GLAMSHOP ? 'female' : 'male')\r\n .then((products) => [...new Set(products.map((product) => product.id))]))\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\nimport { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from '../strategies'\r\n\r\n@Injectable()\r\nexport class CatalogStrategiesFacade {\r\n constructor(\r\n public readonly categoryStrategy: CategorySearchStrategy,\r\n public readonly termStrategy: TermSearchStrategy,\r\n public readonly profileStrategy: ProfileSearchStrategy,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../../consts'\r\nimport { CatalogService } from '../catalog.service'\r\nimport { CatalogSearchContext } from '../context/catalog-search.context'\r\nimport { CatalogHelpersService } from '../services'\r\n\r\nimport { CatalogStrategiesFacade } from './catalog-strategies.facade'\r\n\r\n@Injectable()\r\nexport class CatalogServiceFacade {\r\n private catalogService: CatalogService\r\n\r\n constructor(\r\n private readonly helpersService: CatalogHelpersService,\r\n private readonly strategiesFacade: CatalogStrategiesFacade,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {\r\n const searchContext = new CatalogSearchContext(\r\n this.strategiesFacade.categoryStrategy,\r\n this.strategiesFacade.termStrategy,\r\n this.strategiesFacade.profileStrategy,\r\n )\r\n\r\n this.catalogService = new CatalogService(searchContext, this.helpersService, this.shop)\r\n }\r\n\r\n getCatalogService(): CatalogService {\r\n return this.catalogService\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CategoryFilterRepository, CategoryRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CategoryRepositoryFacade {\r\n constructor(\r\n @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,\r\n @Inject('CategoryFilterRepository') public readonly categoryFilterRepository: CategoryFilterRepository,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Category, Filter, ProductGender, RepositoryCacheOptions, Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../consts'\r\n\r\nimport { CategoryRepositoryFacade, ProductCatalogFacade } from './facades'\r\n\r\ntype FetchBrandsOptions = {\r\n mainGender?: ProductGender\r\n shop?: Shops\r\n}\r\n\r\n@Injectable()\r\nexport class CategoryService {\r\n constructor(\r\n private readonly categoryFacade: CategoryRepositoryFacade,\r\n private readonly productCatalog: ProductCatalogFacade,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {}\r\n\r\n async fetchBrands(\r\n category: Category,\r\n options?: FetchBrandsOptions,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<Category[]> {\r\n const brands = await this.productCatalog.productCatalogRepository\r\n .findCatalog(\r\n {\r\n filters: await this.productCatalog.categoryStructureAdapter.buildProductFilterByCategory(category),\r\n fields: ['brand'],\r\n },\r\n null,\r\n optionsCache,\r\n )\r\n .then(({ data }) =>\r\n Object.keys(data.map((product) => product.brand).reduce((brands, brand) => ({ ...brands, [brand]: true }), {})),\r\n )\r\n\r\n return this.categoryFacade.categoryRepository\r\n .find(\r\n { filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } },\r\n optionsCache,\r\n )\r\n .then(({ data }) => data.filter((category) => brands.includes(category.conditions.brand)))\r\n }\r\n\r\n async getMenuBrands() {\r\n return this.categoryFacade.categoryRepository.getBrandsWithProducts()\r\n }\r\n\r\n async fetchFilterOptions(category: Category, optionsCache?: { cache?: RepositoryCacheOptions }): Promise<Filter[]> {\r\n return await this.categoryFacade.categoryFilterRepository\r\n .find({ filters: { categoryId: +category.id } }, optionsCache)\r\n .then(({ data }) => data.map((categoryFilter) => categoryFilter.filter))\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { ProductCatalogRepository } from '@infrab4a/connect'\r\n\r\nimport { CATEGORY_STRUCTURE } from '../../../consts'\r\nimport { CategoryStructureAdapter } from '../adapters'\r\n\r\n@Injectable()\r\nexport class ProductCatalogFacade {\r\n constructor(\r\n @Inject('ProductCatalogRepository') public readonly productCatalogRepository: ProductCatalogRepository,\r\n @Inject(CATEGORY_STRUCTURE) public readonly categoryStructureAdapter: CategoryStructureAdapter,\r\n ) {}\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { Shops } from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../../consts'\r\nimport { CategoryService } from '../category.service'\r\n\r\nimport { CategoryRepositoryFacade } from './category-repository.facade'\r\nimport { ProductCatalogFacade } from './product-catalog.facade'\r\n\r\n@Injectable()\r\nexport class CategoryServiceFacade {\r\n private categoryService: CategoryService\r\n\r\n constructor(\r\n private readonly categoryRepositoryFacade: CategoryRepositoryFacade,\r\n private readonly productCatalogFacade: ProductCatalogFacade,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {\r\n this.categoryService = new CategoryService(this.categoryRepositoryFacade, this.productCatalogFacade, this.shop)\r\n }\r\n\r\n getCategoryService(): CategoryService {\r\n return this.categoryService\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { isEmpty, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogSearchParams } from '../../../interfaces'\r\nimport { ProductCatalogFacade } from '../facades'\r\n\r\n@Injectable()\r\nexport class BrandManagerHelper {\r\n private brandsList: Record<string, string[]> = {}\r\n\r\n constructor(private readonly productCatalog: ProductCatalogFacade) {}\r\n\r\n async setBrandsList(options: CatalogSearchParams, brands: string[]): Promise<void> {\r\n const filterBrands = options.filters?.brands\r\n const indexKey = this.buildIndexBrands(options)\r\n\r\n if (isEmpty(brands) && options.filters) {\r\n delete options.filters.brands\r\n }\r\n\r\n this.brandsList[indexKey] = this.brandsList[indexKey] || brands || (await this.fetchBrandsOnly(options))\r\n this.brandsList[indexKey] = this.brandsList[indexKey].filter(Boolean)\r\n\r\n if (options.filters) {\r\n options.filters = {\r\n ...options.filters,\r\n brands: filterBrands,\r\n }\r\n }\r\n }\r\n\r\n getBrandsList(indexKey: string): string[] {\r\n return this.brandsList[indexKey]\r\n }\r\n\r\n buildIndexBrands(options: CatalogSearchParams): string {\r\n if (options.category) return `category-${options.category.id}`\r\n\r\n if (options.term) return `term-${options.term}`\r\n\r\n if (options.profile) return `profile-${options.profile.join(',')}`\r\n\r\n return ''\r\n }\r\n\r\n private async fetchBrandsOnly(options: CatalogSearchParams): Promise<string[]> {\r\n let filters = {}\r\n\r\n if (options.category) {\r\n filters = await this.productCatalog.categoryStructureAdapter.buildProductFilterByCategory(options.category)\r\n }\r\n\r\n return this.productCatalog.productCatalogRepository\r\n .findCatalog(\r\n {\r\n fields: ['id'],\r\n filters: {\r\n ...filters,\r\n published: { operator: Where.EQUALS, value: true },\r\n },\r\n options: {\r\n distinct: ['brand'],\r\n },\r\n },\r\n options.mainGender,\r\n )\r\n .then((result) => result.distinct.brand)\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Product, RepositoryFindFielters, set, Where } from '@infrab4a/connect'\r\n\r\nimport { CatalogFilters } from '../../../interfaces'\r\n\r\n@Injectable()\r\nexport class CatalogFilterHelper {\r\n buildFilterQuery(filters: CatalogFilters): RepositoryFindFielters<Product> {\r\n const filterQuery = {} as RepositoryFindFielters<Product>\r\n\r\n if (filters.clubDiscount?.length) {\r\n set(filterQuery, 'price.subscriberDiscountPercentage', {\r\n operator: Where.IN,\r\n value: filters.clubDiscount,\r\n })\r\n }\r\n\r\n if (filters.brands?.length) {\r\n filterQuery.brand = { operator: Where.IN, value: filters.brands }\r\n }\r\n\r\n if (filters.gender?.length) {\r\n filterQuery.gender = { operator: Where.IN, value: filters.gender }\r\n }\r\n\r\n if (filters.prices?.min || filters.prices?.max) {\r\n const priceField = filters.prices.subscriberPrice ? 'price.subscriberPrice' : 'price.price'\r\n const priceFilters = [\r\n ...(filters.prices.min ? [{ operator: Where.GTE, value: Math.floor(filters.prices.min) }] : []),\r\n ...(filters.prices.max ? [{ operator: Where.LTE, value: Math.ceil(filters.prices.max) }] : []),\r\n ]\r\n\r\n set(filterQuery, priceField, priceFilters)\r\n }\r\n\r\n if (filters.rate) {\r\n filterQuery.rate = { operator: Where.GTE, value: filters.rate }\r\n }\r\n\r\n if (filters.tags?.length) {\r\n filterQuery.tagsProfile = { operator: Where.LIKE, value: filters.tags }\r\n }\r\n\r\n if (filters.customOptions?.length) {\r\n filterQuery.filters = { operator: Where.LIKE, value: filters.customOptions }\r\n }\r\n\r\n return filterQuery\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { Product, RepositoryOrderBy } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CatalogSortHelper {\r\n buildSortQuery(sort: string): RepositoryOrderBy<Product> {\r\n if (!sort || sort === 'most-relevant') return {}\r\n\r\n switch (sort) {\r\n case 'best-sellers':\r\n return {\r\n shoppingCount: 'desc',\r\n rate: 'desc',\r\n stock: 'desc',\r\n name: 'asc',\r\n }\r\n\r\n case 'biggest-price':\r\n return {\r\n subscriberPrice: 'desc',\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n } as any\r\n\r\n case 'lowest-price':\r\n return {\r\n subscriberPrice: 'asc',\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n } as any\r\n\r\n case 'best-rating':\r\n return {\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n stock: 'desc',\r\n name: 'asc',\r\n }\r\n\r\n case 'news':\r\n return { createdAt: 'desc' }\r\n\r\n case 'biggest-discount':\r\n return {\r\n subscriberDiscountPercentage: 'desc',\r\n rate: 'desc',\r\n shoppingCount: 'desc',\r\n } as any\r\n\r\n default:\r\n return {}\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport { NonFunctionPropertyNames, Product } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class ProductFieldsHelper {\r\n getStandardFields(): NonFunctionPropertyNames<Product>[] {\r\n return [\r\n 'id',\r\n 'name',\r\n 'slug',\r\n 'images',\r\n 'imagesCard',\r\n 'miniatures',\r\n 'price',\r\n 'stock',\r\n 'published',\r\n 'CEST',\r\n 'EAN',\r\n 'NCM',\r\n 'brand',\r\n 'costPrice',\r\n 'hasVariants',\r\n 'isKit',\r\n 'sku',\r\n 'rate',\r\n 'tagsProfile',\r\n 'tagsCollection',\r\n 'type',\r\n 'shoppingCount',\r\n 'gender',\r\n 'createdAt',\r\n 'label',\r\n 'outlet',\r\n 'group',\r\n 'variantSlug',\r\n ]\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\nimport { CatalogFilterHelper, CatalogSortHelper, ProductFieldsHelper } from '../helpers'\r\n\r\n@Injectable()\r\nexport class CatalogOperationsFacade {\r\n constructor(\r\n private readonly filterHelper: CatalogFilterHelper,\r\n private readonly sortHelper: CatalogSortHelper,\r\n private readonly fieldsHelper: ProductFieldsHelper,\r\n ) {}\r\n\r\n getFilterHelper(): CatalogFilterHelper {\r\n return this.filterHelper\r\n }\r\n\r\n getSortHelper(): CatalogSortHelper {\r\n return this.sortHelper\r\n }\r\n\r\n getFieldsHelper(): ProductFieldsHelper {\r\n return this.fieldsHelper\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\n\r\nimport { ProductServicesFacade } from '../../../interfaces'\r\nimport { BrandManagerHelper } from '../helpers'\r\n\r\n@Injectable()\r\nexport class ProductManagementFacade {\r\n constructor(\r\n private readonly brandManager: BrandManagerHelper,\r\n @Inject('ProductServicesFacade') private readonly productServices: ProductServicesFacade,\r\n ) {}\r\n\r\n getBrandManager(): BrandManagerHelper {\r\n return this.brandManager\r\n }\r\n\r\n getProductServices(): ProductServicesFacade {\r\n return this.productServices\r\n }\r\n}\r\n","import { Injectable } from '@angular/core'\r\n\r\nimport { ProductServicesFacade } from '../../../interfaces'\r\nimport { BrandManagerHelper, CatalogFilterHelper, CatalogSortHelper, ProductFieldsHelper } from '../helpers'\r\n\r\nimport { CatalogOperationsFacade } from './catalog-operations.facade'\r\nimport { ProductManagementFacade } from './product-management.facade'\r\n\r\n@Injectable()\r\nexport class CatalogHelpersService {\r\n constructor(\r\n private readonly catalogOperations: CatalogOperationsFacade,\r\n private readonly productManagement: ProductManagementFacade,\r\n ) {}\r\n\r\n getFilterHelper(): CatalogFilterHelper {\r\n return this.catalogOperations.getFilterHelper()\r\n }\r\n\r\n getSortHelper(): CatalogSortHelper {\r\n return this.catalogOperations.getSortHelper()\r\n }\r\n\r\n getFieldsHelper(): ProductFieldsHelper {\r\n return this.catalogOperations.getFieldsHelper()\r\n }\r\n\r\n getBrandManager(): BrandManagerHelper {\r\n return this.productManagement.getBrandManager()\r\n }\r\n\r\n getProductServices(): ProductServicesFacade {\r\n return this.productManagement.getProductServices()\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\n\r\nimport { ProductServicesFacade } from '../../../interfaces'\r\nimport { ProductCatalogFacade } from '../facades'\r\n\r\n@Injectable()\r\nexport class CatalogRepositoryService {\r\n constructor(\r\n private readonly productCatalog: ProductCatalogFacade,\r\n @Inject('ProductServicesFacade') private readonly productServices: ProductServicesFacade,\r\n ) {}\r\n\r\n getProductCatalog(): ProductCatalogFacade {\r\n return this.productCatalog\r\n }\r\n\r\n getProductServices(): ProductServicesFacade {\r\n return this.productServices\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n Category,\r\n InvalidArgumentError,\r\n RepositoryCacheOptions,\r\n RoundProductPricesHelper,\r\n Shops,\r\n} from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../consts'\r\nimport { CatalogFilters, CatalogSearchParams } from '../../interfaces'\r\n\r\nimport { CatalogSearchContext } from './context/catalog-search.context'\r\nimport { CatalogHelpersService } from './services'\r\nimport {\r\n BuildResponseParams,\r\n FetchProductsMainParams,\r\n FetchProductsOptions,\r\n FetchProductsParams,\r\n FetchProductsResponse,\r\n StockNotificationParams,\r\n} from './types'\r\n\r\n@Injectable()\r\nexport class CatalogService<T extends Category = Category> {\r\n constructor(\r\n private readonly searchContext: CatalogSearchContext,\r\n private readonly helpersService: CatalogHelpersService,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {}\r\n\r\n async fetchProducts(\r\n options: FetchProductsParams<T>,\r\n optionsCache?: { cache?: RepositoryCacheOptions },\r\n ): Promise<FetchProductsResponse> {\r\n this.validateRequest(options)\r\n\r\n const searchParams = this.buildSearchParams(options)\r\n const {\r\n data,\r\n count: total,\r\n maximum,\r\n minimal,\r\n distinct,\r\n } = await this.searchContext.executeSearch(searchParams, this.shop, optionsCache)\r\n\r\n await this.helpersService.getBrandManager().setBrandsList(searchParams, distinct?.brand)\r\n\r\n return this.buildResponse({\r\n data,\r\n total,\r\n maximum,\r\n minimal,\r\n searchParams,\r\n options,\r\n })\r\n }\r\n\r\n async addCustomerToStockNotification(params: StockNotificationParams): Promise<void> {\r\n const { shop, productId, name, email } = params\r\n const productServices = this.helpersService.getProductServices()\r\n\r\n return productServices.productStockNotificationRepository.addCustomerEmail({\r\n shop,\r\n productId,\r\n name,\r\n email,\r\n })\r\n }\r\n\r\n private validateRequest(options: FetchProductsParams<T>): void {\r\n if (this.hasProfile(options) && options.filters?.customOptions) {\r\n throw new InvalidArgumentError(`It couldn't filled customOptions when profile is given`)\r\n }\r\n\r\n if (this.hasProfile(options) && options.filters?.tags) {\r\n throw new InvalidArgumentError(`It couldn't filled tags when profile is given`)\r\n }\r\n\r\n if (this.hasTerm(options) && options.filters?.customOptions) {\r\n throw new InvalidArgumentError(`It couldn't filled customOptions when term is given`)\r\n }\r\n }\r\n\r\n private buildSearchParams(options: FetchProductsParams<T>): CatalogSearchParams {\r\n const limits = this.buildLimitQuery(options)\r\n\r\n return {\r\n category: this.hasCategory(options) ? options.category : undefined,\r\n profile: this.hasProfile(options) ? options.profile : undefined,\r\n term: this.hasTerm(options) ? options.term : undefined,\r\n filters: options.filters,\r\n mainGender: options.mainGender,\r\n sort: options.sort,\r\n limits,\r\n }\r\n }\r\n\r\n private buildResponse(params: BuildResponseParams<T>): FetchProductsResponse {\r\n const { data, total, maximum, minimal, searchParams } = params\r\n const limits = searchParams.limits\r\n const indexKey = this.helpersService.getBrandManager().buildIndexBrands(searchParams)\r\n\r\n return {\r\n products: {\r\n data: data.map((product) => RoundProductPricesHelper.roundProductPrices(product)),\r\n total,\r\n },\r\n pages: Math.ceil(total / limits.limit),\r\n prices: {\r\n price: {\r\n min: +(minimal?.price?.price?.toFixed(2) || 0),\r\n max: +(maximum?.price?.price?.toFixed(2) || 0),\r\n },\r\n subscriberPrice: {\r\n min: +(minimal?.price?.subscriberPrice?.toFixed(2) || 0),\r\n max: +(maximum?.price?.subscriberPrice?.toFixed(2) || 0),\r\n },\r\n },\r\n brands: this.helpersService.getBrandManager().getBrandsList(indexKey),\r\n }\r\n }\r\n\r\n private buildLimitQuery(options: { page?: number; perPage?: number }): { limit: number; offset: number } {\r\n const limit = options?.perPage || 20\r\n\r\n return {\r\n limit,\r\n offset: ((options?.page || 1) - 1) * limit,\r\n }\r\n }\r\n\r\n private hasProfile(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {\r\n profile: FetchProductsMainParams<T>['profile']\r\n filters?: CatalogFilters & { customOptions?: never; tags?: never }\r\n } {\r\n return 'profile' in options\r\n }\r\n\r\n private hasTerm(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {\r\n term: FetchProductsMainParams<T>['term']\r\n filters?: CatalogFilters & { customOptions?: never }\r\n } {\r\n return 'term' in options\r\n }\r\n\r\n private hasCategory(options: Partial<FetchProductsParams<T>>): options is FetchProductsOptions & {\r\n category: FetchProductsMainParams<T>['category']\r\n filters?: CatalogFilters & { customOptions?: never }\r\n } {\r\n return 'category' in options\r\n }\r\n}\r\n","export enum ProductSorts {\r\n MOST_RELEVANT = 'most-relevant',\r\n BEST_SELLER = 'best-sellers',\r\n BIGGEST_PRICE = 'biggest-price',\r\n LOWEST_PRICE = 'lowest-price',\r\n BIGGEST_DISCOUNT = 'biggest-discount',\r\n BEST_RATING = 'best-rating',\r\n NEWS = 'news',\r\n}\r\n","import { Type } from 'class-transformer'\r\nimport { Category } from '@infrab4a/connect'\r\n\r\nexport class CategoryWithTree extends Category {\r\n @Type(() => CategoryWithTree)\r\n children?: CategoryWithTree[]\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n LogRepository,\r\n PersonType,\r\n PersonTypes,\r\n Product,\r\n ProductCatalogRepository,\r\n ProductRepository,\r\n Shops,\r\n Wishlist,\r\n WishlistLogType,\r\n WishlistRepository,\r\n} from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../../consts'\r\n\r\nimport { CatalogService } from './catalog.service'\r\nimport { CategoryService } from './category.service'\r\nimport { CatalogServiceFacade, CategoryServiceFacade } from './facades'\r\n\r\n@Injectable()\r\nexport class WishlistService {\r\n private catalogService: CatalogService\r\n private categoryService: CategoryService\r\n\r\n constructor(\r\n @Inject('WishlistRepository') private readonly wishlistRepository: WishlistRepository,\r\n @Inject('ProductRepository') private readonly productRepository: ProductRepository,\r\n @Inject('ProductCatalogRepository') private readonly productCatalogRepository: ProductCatalogRepository,\r\n @Inject('LogRepository') private readonly logRepository: LogRepository,\r\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\r\n ) {}\r\n\r\n initializeServices(catalogServiceFacade: CatalogServiceFacade, categoryServiceFacade: CategoryServiceFacade): void {\r\n this.catalogService = catalogServiceFacade.getCatalogService()\r\n this.categoryService = categoryServiceFacade.getCategoryService()\r\n }\r\n\r\n getCatalogService() {\r\n return this.catalogService\r\n }\r\n\r\n getCategoryService() {\r\n return this.categoryService\r\n }\r\n\r\n async create({\r\n personId,\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n }: {\r\n personId: string\r\n title: string\r\n description: string\r\n published: boolean\r\n userFullName: string\r\n userPhoto?: string\r\n theme?: string\r\n bannerUrl?: string\r\n personType?: PersonType\r\n personIsSubscriber?: boolean\r\n }): Promise<Wishlist> {\r\n const wishlistData = this.buildWishlistData({\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n personId,\r\n })\r\n\r\n const existingWishlist = await this.findExistingWishlistByPersonId(personId)\r\n\r\n await this.createWishlistLog(WishlistLogType.CREATE, wishlistData as Wishlist)\r\n\r\n if (existingWishlist) return existingWishlist\r\n\r\n return this.createNewWishlist(wishlistData)\r\n }\r\n\r\n private buildWishlistData({\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n personId,\r\n }: {\r\n title: string\r\n description: string\r\n published: boolean\r\n userFullName: string\r\n userPhoto?: string\r\n theme?: string\r\n bannerUrl?: string\r\n personType?: PersonType\r\n personIsSubscriber?: boolean\r\n personId: string\r\n }) {\r\n return {\r\n slug: '',\r\n name: title,\r\n description,\r\n metadatas: [\r\n {\r\n shop: this.shop,\r\n title: `${userFullName} - ${title}`,\r\n description: `${userFullName} - ${description}`,\r\n },\r\n ],\r\n shop: this.shop,\r\n shops: [this.shop],\r\n personId,\r\n personName: userFullName,\r\n personPhoto: userPhoto,\r\n brandCategory: false,\r\n published,\r\n theme,\r\n bannerUrl,\r\n personType: personType ?? PersonTypes.NONE,\r\n personIsSubscriber: personIsSubscriber ?? false,\r\n }\r\n }\r\n\r\n private async findExistingWishlistByPersonId(personId: string): Promise<Wishlist | null> {\r\n const hasWishlist = await this.wishlistRepository\r\n .find({\r\n filters: {\r\n personId,\r\n },\r\n options: {\r\n enableCount: false,\r\n },\r\n orderBy: {\r\n id: 'asc',\r\n },\r\n })\r\n .then((res) => res.data)\r\n\r\n return hasWishlist.length ? hasWishlist.at(0) : null\r\n }\r\n\r\n private async createNewWishlist(data: any): Promise<Wishlist> {\r\n const newWishlist = await this.wishlistRepository.create(data)\r\n\r\n await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id })\r\n\r\n return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id })\r\n }\r\n\r\n async update({\r\n id,\r\n title,\r\n description,\r\n published,\r\n userFullName,\r\n userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType,\r\n personIsSubscriber,\r\n }: {\r\n id: string\r\n title: string\r\n description: string\r\n published: boolean\r\n userFullName: string\r\n userPhoto?: string\r\n theme?: string\r\n bannerUrl?: string\r\n personType?: PersonType\r\n personIsSubscriber?: boolean\r\n }): Promise<Wishlist> {\r\n const data = {\r\n id,\r\n name: title,\r\n description,\r\n published,\r\n metadatas: [\r\n {\r\n shop: this.shop,\r\n title: `${userFullName} - ${title}`,\r\n description: `${userFullName} - ${description}`,\r\n },\r\n ],\r\n personName: userFullName,\r\n personPhoto: userPhoto,\r\n theme,\r\n bannerUrl,\r\n personType: personType ?? PersonTypes.NONE,\r\n personIsSubscriber: personIsSubscriber ?? false,\r\n }\r\n\r\n await this.createWishlistLog(WishlistLogType.UPDATE, data as Wishlist)\r\n\r\n return this.wishlistRepository.update(data)\r\n }\r\n\r\n async delete(wishlistId: string): Promise<void> {\r\n const wishlist = await this.findById(wishlistId)\r\n\r\n await this.createWishlistLog(WishlistLogType.DELETE, wishlist)\r\n\r\n return this.wishlistRepository.delete({ id: wishlistId })\r\n }\r\n\r\n getWishlistBySlug(slug: string): Promise<Wishlist> {\r\n const [id] = slug.split('-')\r\n\r\n if (+id) return this.wishlistRepository.get({ id })\r\n\r\n return this.wishlistRepository.getWishlistBySlug(slug)\r\n }\r\n\r\n getWishlistsByPerson(personId: string): Promise<Wishlist[]> {\r\n return this.wishlistRepository.getWishlistByPerson(personId)\r\n }\r\n\r\n async addProduct(wishlistId: string, productId: string): Promise<Wishlist> {\r\n const wishlist = await this.wishlistRepository.get({ id: wishlistId })\r\n const hasProduct = wishlist.products.some((p) => p == productId)\r\n\r\n const wishlistData = await this.findById(wishlistId)\r\n const productData = await this.findProductById(productId)\r\n\r\n await this.createWishlistLog(WishlistLogType.ADD_PRODUCT, wishlistData, productData)\r\n\r\n if (!hasProduct) {\r\n wishlist.products = [...wishlist.products, productId]\r\n await this.wishlistRepository.addProduct(wishlistId, productId)\r\n }\r\n\r\n return wishlist\r\n }\r\n\r\n async removeProduct(wishlistId: string, productId: string): Promise<Wishlist> {\r\n const wishlist = await this.wishlistRepository.get({ id: wishlistId })\r\n const productIndex = wishlist.products.findIndex((p) => p == productId)\r\n\r\n if (productIndex != -1) {\r\n wishlist.products.splice(productIndex, 1)\r\n const wishlistData = await this.findById(wishlistId)\r\n const productData = await this.findProductById(productId)\r\n\r\n await this.createWishlistLog(WishlistLogType.REMOVE_PRODUCT, wishlistData, productData)\r\n await this.wishlistRepository.removeProduct(wishlistId, productId)\r\n }\r\n\r\n return wishlist\r\n }\r\n\r\n private async findById(id: string): Promise<Wishlist> {\r\n return this.wishlistRepository\r\n .find({\r\n fields: ['id', 'name', 'description', 'personId', 'personIsSubscriber', 'personType', 'personName'],\r\n filters: {\r\n id,\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n }\r\n\r\n private async findProductById(id: string): Promise<Product> {\r\n return this.productCatalogRepository\r\n .find({\r\n fields: ['id', 'sku', 'EAN', 'name', 'brand'],\r\n filters: {\r\n id,\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n }\r\n\r\n private async createWishlistLog(type: WishlistLogType, wishlist: Wishlist, product?: Product) {\r\n switch (type) {\r\n case WishlistLogType.CREATE:\r\n case WishlistLogType.UPDATE:\r\n case WishlistLogType.DELETE:\r\n await this.createWishlistOperationLog(type, wishlist)\r\n break\r\n\r\n case WishlistLogType.ADD_PRODUCT:\r\n case WishlistLogType.REMOVE_PRODUCT:\r\n await this.createWishlistProductLog(type, wishlist, product)\r\n break\r\n\r\n default:\r\n break\r\n }\r\n }\r\n\r\n private async createWishlistOperationLog(type: WishlistLogType, wishlist: Wishlist): Promise<void> {\r\n const operation = this.getOperationTypeFromWishlistLogType(type)\r\n\r\n await this.logRepository.create({\r\n collection: 'wishlist',\r\n date: new Date(),\r\n operation,\r\n documentId: wishlist.id,\r\n document: this.buildWishlistLogDocument(wishlist, type),\r\n })\r\n }\r\n\r\n private async createWishlistProductLog(type: WishlistLogType, wishlist: Wishlist, product: Product): Promise<void> {\r\n await this.logRepository.create({\r\n collection: 'wishlist',\r\n date: new Date(),\r\n operation: 'UPDATE',\r\n documentId: wishlist.id,\r\n document: {\r\n ...this.buildWishlistLogDocument(wishlist, type),\r\n ...this.buildProductLogData(product),\r\n },\r\n })\r\n }\r\n\r\n private getOperationTypeFromWishlistLogType(type: WishlistLogType): 'CREATE' | 'UPDATE' | 'DELETE' {\r\n if (type === WishlistLogType.CREATE) return 'CREATE'\r\n\r\n if (type === WishlistLogType.UPDATE) return 'UPDATE'\r\n\r\n return 'DELETE'\r\n }\r\n\r\n private buildWishlistLogDocument(wishlist: Wishlist, type: WishlistLogType) {\r\n return {\r\n id: wishlist.id,\r\n shop: this.shop,\r\n name: wishlist.name,\r\n description: wishlist.description,\r\n published: wishlist.published,\r\n type: type,\r\n personType: wishlist.personType,\r\n personId: wishlist.personId,\r\n personName: wishlist.personName,\r\n personIsSubscriber: wishlist.personIsSubscriber,\r\n }\r\n }\r\n\r\n private buildProductLogData(product: Product) {\r\n return {\r\n productId: product.id,\r\n productEAN: product.EAN,\r\n productSKU: product.sku,\r\n productName: product.name,\r\n productBrand: product.brand,\r\n }\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CategoryRepository, CouponRepository, OrderRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class CouponRepositoriesFacade {\r\n constructor(\r\n @Inject('CouponRepository') public readonly couponRepository: CouponRepository,\r\n @Inject('OrderRepository') public readonly orderRepository: OrderRepository,\r\n @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n Category,\r\n Checkout,\r\n CheckoutSubscription,\r\n CheckoutTypes,\r\n Coupon,\r\n CouponTypes,\r\n Exclusivities,\r\n LineItem,\r\n Order,\r\n OrderStatus,\r\n Shops,\r\n User,\r\n Where,\r\n} from '@infrab4a/connect'\r\nimport { from, Observable, of } from 'rxjs'\r\nimport { concatMap, map } from 'rxjs/operators'\r\n\r\nimport { CouponRepositoriesFacade } from './coupon'\r\nimport { CheckCouponParams, CouponRulesValidationParams } from './coupon/types/coupon-params.type'\r\nimport { ConfigurationFacade } from './shared'\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class CouponService {\r\n constructor(\r\n private readonly repositoriesFacade: CouponRepositoriesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {}\r\n\r\n checkCoupon(params: CheckCouponParams): Observable<Coupon> {\r\n const { nickname, checkoutType, checkout, plan } = params\r\n\r\n return from(\r\n this.repositoriesFacade.couponRepository\r\n .find({\r\n filters: {\r\n nickname: { operator: Where.EQUALS, value: nickname },\r\n active: { operator: Where.EQUALS, value: true },\r\n },\r\n })\r\n .then((result) => result.data[0]),\r\n ).pipe(\r\n concatMap((coupon) => this.couponValidation(coupon, checkoutType)),\r\n concatMap((couponValid: Coupon) =>\r\n this.couponRulesValidation({ coupon: couponValid, checkoutType, checkout, plan }),\r\n ),\r\n map((couponValidated: Coupon) => couponValidated as Coupon),\r\n )\r\n }\r\n\r\n private async couponValidation(coupon: Coupon, checkoutType: CheckoutTypes) {\r\n if (!coupon) throw 'Cupom inválido.'\r\n\r\n if (coupon?.beginAt && coupon?.beginAt.getTime() > new Date().getTime()) throw 'Cupom inválido.'\r\n\r\n if (coupon?.expiresIn && (coupon?.expiresIn as Date).getTime() < new Date().getTime()) throw 'Cupom expirado.'\r\n\r\n const isInShop =\r\n coupon.shopAvailability === Shops.ALL || coupon.shopAvailability === this.configurationFacade.defaultShop\r\n\r\n if (!isInShop) throw 'Cupom inválido para loja.'\r\n\r\n const isCheckoutType = coupon.checkoutType === CheckoutTypes.ALL || coupon.checkoutType === checkoutType\r\n\r\n if (!isCheckoutType) throw 'Cupom inválido. Erro de checkout.'\r\n\r\n return coupon\r\n }\r\n\r\n private async couponRulesValidation(params: CouponRulesValidationParams) {\r\n const { coupon, checkoutType, checkout, plan } = params\r\n\r\n if (checkoutType == CheckoutTypes.SUBSCRIPTION) {\r\n return this.validateSubscriptionCoupon(coupon, plan)\r\n }\r\n\r\n return this.validateEcommerceCoupon(coupon, checkoutType, checkout)\r\n }\r\n\r\n private validateSubscriptionCoupon(coupon: Coupon, plan: string): Coupon {\r\n if (coupon.plan && coupon.plan.toUpperCase() !== plan.toUpperCase()) {\r\n throw 'Cupom inválido para sua assinatura.'\r\n }\r\n\r\n return coupon\r\n }\r\n\r\n private async validateEcommerceCoupon(\r\n coupon: Coupon,\r\n checkoutType: CheckoutTypes,\r\n checkout: Partial<Checkout>,\r\n ): Promise<Coupon> {\r\n this.validateUserEligibility(coupon, checkout?.user)\r\n await this.validateUsageLimits(coupon, checkoutType, checkout)\r\n await this.validateProductEligibility(coupon, checkout)\r\n\r\n return coupon\r\n }\r\n\r\n private validateUserEligibility(coupon: Coupon, user: User): void {\r\n const validUser = this.coupomUserValidation(coupon, user)\r\n\r\n if (!validUser) throw 'Usuário não elegível.'\r\n }\r\n\r\n private async validateUsageLimits(\r\n coupon: Coupon,\r\n checkoutType: CheckoutTypes,\r\n checkout: Partial<Checkout>,\r\n ): Promise<void> {\r\n const couponUseLimits = this.getCouponUseLimits(coupon, checkoutType, checkout.user)\r\n\r\n if (couponUseLimits.firstOrder) {\r\n await this.validateFirstOrderLimit(checkout.user.email)\r\n }\r\n\r\n if (!couponUseLimits.unlimited || couponUseLimits.limitedPerUser) {\r\n await this.validateCouponUsageLimits(coupon, couponUseLimits, checkout.user.email)\r\n }\r\n }\r\n\r\n private async validateFirstOrderLimit(userEmail: string): Promise<void> {\r\n const ordersUser = await this.getOrdersFromUser(userEmail.toLocaleLowerCase())\r\n\r\n if (ordersUser.length >= 1) throw 'Limite de uso atingido'\r\n }\r\n\r\n private async validateCouponUsageLimits(coupon: Coupon, couponUseLimits: any, userEmail: string): Promise<void> {\r\n const ordersCoupon = await this.getOrdersWithCoupon(coupon)\r\n\r\n if (!couponUseLimits.unlimited && couponUseLimits.total && ordersCoupon.length >= couponUseLimits.total) {\r\n throw 'Limite de uso atingido.'\r\n }\r\n\r\n if (couponUseLimits.limitedPerUser) {\r\n const ordersWithUser = this.countOrdersWithUser(ordersCoupon, userEmail)\r\n\r\n if (ordersWithUser > 0) throw 'Limite de uso por usuário atingido.'\r\n }\r\n }\r\n\r\n private async validateProductEligibility(coupon: Coupon, checkout: Partial<Checkout>): Promise<void> {\r\n const hasProductCategories = await this.hasProductCategories(coupon, checkout)\r\n\r\n if (!hasProductCategories) throw 'Seu carrinho não possui produtos elegíveis para desconto.'\r\n\r\n const hasMinSubTotal = await this.hasMinSubTotal(coupon, checkout)\r\n\r\n if (!hasMinSubTotal) {\r\n this.throwMinSubTotalError(coupon)\r\n }\r\n }\r\n\r\n private throwMinSubTotalError(coupon: Coupon): void {\r\n const formattedValue = Intl.NumberFormat('pt-BR', {\r\n style: 'currency',\r\n currency: 'BRL',\r\n }).format(coupon.minSubTotalValue)\r\n\r\n if (coupon.productsCategories?.length) {\r\n throw `Valor mínimo de ${formattedValue} não atingido na(s) categoria(s) elegíveis para o desconto.`\r\n }\r\n\r\n throw `Valor mínimo de ${formattedValue} não atingido.`\r\n }\r\n\r\n public calcDiscountSubscription(coupon: Coupon, checkout: Partial<CheckoutSubscription>): Observable<number> {\r\n let discount = 0\r\n\r\n if (coupon.discount.subscription.type == CouponTypes.ABSOLUTE) discount = coupon.discount.subscription.value\r\n else discount = checkout.subscriptionPlan.recurrencePrice * (coupon.discount.subscription.value / 100)\r\n\r\n return of(discount)\r\n }\r\n\r\n private async hasMinSubTotal(coupon: Coupon, checkout: Partial<Checkout>): Promise<boolean> {\r\n if (!coupon.minSubTotalValue) return true\r\n\r\n const lineItensDiscount = await this.getLineItensEligebleForDiscount(coupon.productsCategories, checkout)\r\n const subTotal = this.calcCheckoutSubtotal(lineItensDiscount, checkout.user)\r\n\r\n if (coupon.minSubTotalValue <= subTotal) return true\r\n\r\n return false\r\n }\r\n\r\n private async hasProductCategories(coupon: Coupon, checkout: Partial<Checkout>): Promise<boolean> {\r\n if (!coupon.productsCategories?.length) {\r\n return true\r\n }\r\n\r\n const couponCategories = await this.getCouponCategoriesId(coupon.productsCategories)\r\n const hasCategories = checkout.lineItems?.filter((item) => {\r\n if (item.isGift) return false\r\n\r\n if (!item.categories?.length) return true\r\n\r\n return item.categories.some((c) => couponCategories.some((cat) => cat == c))\r\n })\r\n\r\n return hasCategories?.length ? true : false\r\n }\r\n\r\n private coupomUserValidation(coupon: Coupon, user: User) {\r\n if (!user || coupon.exclusivityType.includes(Exclusivities.ALL_USERS)) return true\r\n\r\n const userTypes: Exclusivities[] = []\r\n\r\n if (\r\n coupon.exclusivityType.includes(Exclusivities.COLLABORATORS) &&\r\n this.emailIsFromCollaborator(user.email.toLocaleLowerCase())\r\n )\r\n userTypes.push(Exclusivities.COLLABORATORS)\r\n\r\n if (\r\n coupon.exclusivityType.includes(Exclusivities.SPECIFIC_USER) &&\r\n coupon.userExclusiveEmail.includes(user.email.toLocaleLowerCase())\r\n )\r\n userTypes.push(Exclusivities.SPECIFIC_USER)\r\n\r\n if (\r\n coupon.exclusivityType.includes(Exclusivities.ACTIVE_SUBSCRIBER) &&\r\n user.isSubscriber &&\r\n user.subscriptionPlan != ''\r\n )\r\n userTypes.push(Exclusivities.ACTIVE_SUBSCRIBER)\r\n\r\n if (\r\n user.isSubscriber &&\r\n user.subscriptionPlan == '' &&\r\n coupon.exclusivityType.includes(Exclusivities.INACTIVE_SUBSCRIBER)\r\n )\r\n userTypes.push(Exclusivities.INACTIVE_SUBSCRIBER)\r\n\r\n if (coupon.exclusivityType.includes(Exclusivities.NON_SUBSCRIBER) && !user.isSubscriber)\r\n userTypes.push(Exclusivities.NON_SUBSCRIBER)\r\n\r\n return coupon.exclusivityType.some((r) => userTypes.includes(r))\r\n }\r\n\r\n private async getCouponCategoriesId(productsCategories: string[]): Promise<Array<String>> {\r\n const couponCategories: Array<String> = []\r\n\r\n for (let index = 0; index < productsCategories.length; index++) {\r\n const category: Category & { firestoreId?: string } = await this.repositoriesFacade.categoryRepository.get({\r\n id: productsCategories[index],\r\n })\r\n\r\n if (category) {\r\n const children = await this.repositoriesFacade.categoryRepository.getChildren(\r\n parseInt(productsCategories[index]),\r\n )\r\n\r\n couponCategories.push(category.id, ...children.map((c) => c.id.toString()))\r\n }\r\n }\r\n\r\n return [...new Set(couponCategories)]\r\n }\r\n\r\n private emailIsFromCollaborator = (userEmail: string): boolean => !!userEmail?.match(/@b4a.com.br/g)\r\n\r\n private async getLineItensEligebleForDiscount(\r\n productsCategories: string[],\r\n checkout: Partial<Checkout>,\r\n ): Promise<LineItem[]> {\r\n let lineItensDiscount = []\r\n const couponCategories = await this.getCouponCategoriesId(productsCategories)\r\n\r\n if (productsCategories?.length) {\r\n lineItensDiscount = checkout.lineItems?.filter((item) => {\r\n if (item.isGift) return false\r\n\r\n if (item.categories?.length) {\r\n return item.categories.some((c) => couponCategories.some((cat) => cat == c))\r\n }\r\n\r\n return true\r\n })\r\n } else {\r\n lineItensDiscount = checkout.lineItems.filter((item) => !item.isGift)\r\n }\r\n\r\n return lineItensDiscount\r\n }\r\n\r\n private calcCheckoutSubtotal(lineItens: LineItem[], user: User): number {\r\n return (\r\n lineItens\r\n ?.filter((item) => !item.isGift)\r\n .reduce(\r\n (acc, curr) =>\r\n user?.isSubscriber && curr.price?.subscriberPrice\r\n ? acc + curr.price?.subscriberPrice * curr.quantity\r\n : acc + curr.pricePaid * curr.quantity,\r\n 0,\r\n ) || 0\r\n )\r\n }\r\n\r\n private async getOrdersWithCoupon(coupon: Coupon): Promise<Order[]> {\r\n return await this.repositoriesFacade.orderRepository\r\n .find({\r\n filters: {\r\n coupon: { id: coupon.id },\r\n status: { operator: Where.NOTEQUALS, value: OrderStatus.CANCELADO },\r\n },\r\n })\r\n .then((result) => result.data)\r\n }\r\n\r\n private async getOrdersFromUser(email: string) {\r\n return await this.repositoriesFacade.orderRepository\r\n .find({\r\n filters: {\r\n user: { email: { operator: Where.EQUALS, value: email } },\r\n status: { operator: Where.NOTEQUALS, value: OrderStatus.CANCELADO },\r\n },\r\n })\r\n .then((result) => result.data)\r\n }\r\n\r\n private countOrdersWithUser(orders: Order[], email: string): number {\r\n return orders.filter((o) => o.user.email == email).length\r\n }\r\n\r\n private getCouponUseLimits(coupon: Coupon, checkoutType: CheckoutTypes, user: User) {\r\n let couponUseLimits: { unlimited?: boolean; total?: number; limitedPerUser?: boolean; firstOrder?: boolean }\r\n\r\n if (checkoutType == CheckoutTypes.ECOMMERCE || checkoutType == CheckoutTypes.ALL) {\r\n if (\r\n coupon.exclusivityType.length === 1 &&\r\n (coupon.exclusivityType.at(0) === Exclusivities.SPECIFIC_USER ||\r\n coupon.exclusivityType.at(0) === Exclusivities.COLLABORATORS)\r\n )\r\n couponUseLimits = coupon.useLimits.non_subscriber\r\n else couponUseLimits = user?.isSubscriber ? coupon.useLimits.subscriber : coupon.useLimits.non_subscriber\r\n } else {\r\n couponUseLimits = coupon.useLimits.subscription\r\n }\r\n\r\n return couponUseLimits\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n CheckoutSubscription,\r\n CheckoutSubscriptionRepository,\r\n CheckoutTypes,\r\n Coupon,\r\n isNil,\r\n pick,\r\n} from '@infrab4a/connect'\r\nimport { Observable } from 'rxjs'\r\nimport { concatMap } from 'rxjs/operators'\r\n\r\n\r\nimport { PERSISTENCE_PROVIDER } from '../consts'\r\nimport { DataPersistence } from '../persistence'\r\n\r\nimport { RequiredCheckoutSubscriptionData } from './types'\r\nimport { CouponService } from './coupon.service'\r\n\r\n@Injectable()\r\nexport class CheckoutSubscriptionService {\r\n constructor(\r\n @Inject('CheckoutSubscriptionRepository')\r\n private readonly checkoutSubscriptionRepository: CheckoutSubscriptionRepository,\r\n @Inject(PERSISTENCE_PROVIDER) private readonly dataPersistence: DataPersistence,\r\n private readonly couponService: CouponService,\r\n ) {}\r\n\r\n getCheckoutSubscription(checkoutData?: RequiredCheckoutSubscriptionData): Observable<CheckoutSubscription> {\r\n return this.dataPersistence\r\n .get('checkoutSubscriptionId')\r\n .pipe(\r\n concatMap((id) =>\r\n !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData),\r\n ),\r\n )\r\n }\r\n\r\n clearCheckoutSubscriptionFromSession(): Observable<void> {\r\n return this.dataPersistence.remove('checkoutSubscriptionId')\r\n }\r\n\r\n checkCoupon(nickname: string, _userEmail: string): Observable<Coupon> {\r\n return this.getCheckoutSubscription().pipe(\r\n concatMap((checkout) =>\r\n this.couponService\r\n .checkCoupon({\r\n nickname,\r\n checkoutType: CheckoutTypes.SUBSCRIPTION,\r\n checkout,\r\n plan: checkout.subscriptionPlan.name,\r\n })\r\n .pipe(),\r\n ),\r\n )\r\n }\r\n\r\n calcDiscountSubscription(coupon: Coupon) {\r\n return this.getCheckoutSubscription().pipe(\r\n concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()),\r\n )\r\n }\r\n\r\n private async createCheckoutSubscription(\r\n checkoutData?: RequiredCheckoutSubscriptionData,\r\n ): Promise<CheckoutSubscription> {\r\n const checkout = await this.checkoutSubscriptionRepository.create({\r\n createdAt: new Date(),\r\n ...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),\r\n })\r\n\r\n await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise()\r\n\r\n return checkout\r\n }\r\n}\r\n","export class UtilHelper {\r\n static createSlug(name: string): string {\r\n return name\r\n .toLowerCase()\r\n .replace(/\\s+/g, '-')\r\n .replace(/[ãàáäâ]/g, 'a')\r\n .replace(/[ẽèéëê]/g, 'e')\r\n .replace(/[ìíïî]/g, 'i')\r\n .replace(/[õòóöô]/g, 'o')\r\n .replace(/[ùúüû]/g, 'u')\r\n .replace(/[ñ]/g, 'n')\r\n .replace(/[ç]/g, 'c')\r\n .replace(/[&]/g, 'and')\r\n .replace(/[^\\w-]+/g, '')\r\n .replace(/--+/g, '-')\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport { CategoryRepository, HomeRepository, ProductRepository } from '@infrab4a/connect'\r\n\r\n@Injectable()\r\nexport class HomeShopRepositoriesFacade {\r\n constructor(\r\n @Inject('CategoryRepository') public readonly categoryRepository: CategoryRepository,\r\n @Inject('HomeRepository') public readonly homeRepository: HomeRepository,\r\n @Inject('ProductRepository') public readonly productRepository: ProductRepository,\r\n ) {}\r\n}\r\n","import { Injectable } from '@angular/core'\r\nimport {\r\n add,\r\n Banner,\r\n Category,\r\n Home,\r\n HomeCategoryGroup,\r\n HomeData,\r\n pick,\r\n Product,\r\n RequiredArgumentError,\r\n Shops,\r\n Where,\r\n} from '@infrab4a/connect'\r\nimport { forkJoin, from, Observable, of, throwError } from 'rxjs'\r\nimport { concatMap, map, tap } from 'rxjs/operators'\r\n\r\nimport { HomeShopRepositoriesFacade } from './home-shop'\r\nimport { ConfigurationFacade } from './shared'\r\n\r\ntype HomeConfigurationId = 'glamshop' | 'mens_market'\r\ntype BannerType = 'brand' | 'buyToWin' | 'block' | 'blog'\r\n\r\n@Injectable()\r\nexport class HomeShopService {\r\n private homeConfiguration: Home\r\n\r\n private get homeId(): HomeConfigurationId {\r\n if (this.configurationFacade.defaultShop === Shops.GLAMSHOP) return 'glamshop'\r\n\r\n if (this.configurationFacade.defaultShop === Shops.MENSMARKET) return 'mens_market'\r\n\r\n return null\r\n }\r\n\r\n constructor(\r\n private readonly repositoriesFacade: HomeShopRepositoriesFacade,\r\n private readonly configurationFacade: ConfigurationFacade,\r\n ) {}\r\n\r\n getHomeData(): Observable<Home> {\r\n return this.getHomeConfiguration().pipe(\r\n map((home) => (home?.data?.expiresAt > new Date() ? home : null)),\r\n concatMap((home) =>\r\n home\r\n ? of(home)\r\n : forkJoin([\r\n this.getDiscoverProducts(this.gender),\r\n this.getFeaturedProducts(this.gender),\r\n this.getVerticalProducts(this.gender),\r\n ]).pipe(\r\n map(([discoverProducts, featuredProducts, verticalProducts]) => ({\r\n discoverProducts,\r\n featuredProducts,\r\n verticalProducts,\r\n })),\r\n concatMap((data) => this.saveHomeData(data)),\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n getBanners(type: BannerType): Observable<Banner[]> {\r\n return this.getHomeConfiguration().pipe(\r\n map((home) => {\r\n if (type === 'brand') return home.brandsCarousel\r\n\r\n if (type === 'buyToWin') return [home.buyToWinBanner]\r\n\r\n if (type === 'block') return home.blockBanners\r\n\r\n if (type === 'blog') return [home.blogBanner]\r\n\r\n return []\r\n }),\r\n )\r\n }\r\n\r\n getMinValueForFreeShipping(): Observable<number> {\r\n return this.getHomeConfiguration().pipe(map((home) => home.minValueForFreeShipping))\r\n }\r\n\r\n private getDiscoverProducts(_gender?: string): Observable<{ category: Category; products: Product[] }[]> {\r\n return this.getHomeConfiguration().pipe(\r\n concatMap((home) =>\r\n from(\r\n this.repositoriesFacade.categoryRepository.getCategoriesForHome({\r\n categoryIds: home.discoverCategories,\r\n shop: this.configurationFacade.defaultShop,\r\n }),\r\n ).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData))),\r\n ),\r\n )\r\n }\r\n\r\n private getFeaturedProducts(_gender?: string): Observable<{ category: Category; products: Product[] }[]> {\r\n return this.getHomeConfiguration().pipe(\r\n concatMap((home) =>\r\n from(\r\n this.repositoriesFacade.categoryRepository.getCategoriesForHome({\r\n categoryIds: home.featuredCategories,\r\n shop: this.configurationFacade.defaultShop,\r\n }),\r\n ).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData))),\r\n ),\r\n )\r\n }\r\n\r\n private getVerticalProducts(gender?: string): Observable<{ category: Category; products: Product[] }[]> {\r\n return this.getHomeConfiguration().pipe(\r\n concatMap((home) =>\r\n forkJoin(\r\n home.verticalCarousels.filter(Boolean).map((id) =>\r\n from(this.repositoriesFacade.categoryRepository.get({ id })).pipe(\r\n concatMap((category) =>\r\n from(\r\n this.repositoriesFacade.productRepository.find({\r\n filters: {\r\n categories: { operator: Where.IN, value: [category.id] },\r\n ...(gender ? { tags: { operator: Where.IN, value: [gender] } } : {}),\r\n },\r\n limits: { limit: 12 },\r\n }),\r\n ).pipe(map((products) => ({ category, products }))),\r\n ),\r\n map(({ category, products }) => ({ category, products: products.data })),\r\n map(this.buildCategoryGroupWithRequiredData),\r\n ),\r\n ),\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n private getHomeConfiguration(): Observable<Home> {\r\n return of(this.homeConfiguration).pipe(\r\n concatMap((home) =>\r\n home\r\n ? of(home)\r\n : !this.homeId\r\n ? throwError(() => new RequiredArgumentError(['homeId']))\r\n : from(this.repositoriesFacade.homeRepository.get({ id: this.homeId })).pipe(\r\n tap((homeLoaded) => (this.homeConfiguration = homeLoaded)),\r\n ),\r\n ),\r\n )\r\n }\r\n\r\n private saveHomeData(homeData: HomeData): Observable<Home> {\r\n const data = {\r\n createdAt: new Date(),\r\n expiresAt: add(new Date(), { hours: 1 }),\r\n data: homeData,\r\n }\r\n\r\n return from(\r\n this.repositoriesFacade.homeRepository.update({\r\n id: this.homeId,\r\n data,\r\n }),\r\n ).pipe(\r\n tap(() => (this.homeConfiguration.data = data)),\r\n map(() => this.homeConfiguration),\r\n )\r\n }\r\n\r\n private buildCategoryGroupWithRequiredData = (group: HomeCategoryGroup): HomeCategoryGroup => ({\r\n category: Category.toInstance(pick(group?.category?.toPlain() || {}, ['id', 'name', 'slug', 'conditions'])),\r\n products:\r\n group?.products?.map((product) =>\r\n Product.toInstance(\r\n pick(product?.toPlain() || {}, [\r\n 'id',\r\n 'price',\r\n 'reviews',\r\n 'hasVariants',\r\n 'slug',\r\n 'sku',\r\n 'stock',\r\n 'costPrice',\r\n 'images',\r\n 'miniatures',\r\n 'name',\r\n 'weight',\r\n 'rate',\r\n 'type',\r\n 'brand',\r\n ]),\r\n ),\r\n ) || [],\r\n })\r\n\r\n private get gender() {\r\n return this.homeId === 'mens_market' ? 'masculino' : undefined\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core'\r\nimport {\r\n LineItem,\r\n Order,\r\n OrderFirestoreRepository,\r\n OrderStatus,\r\n ProductReview,\r\n ProductReviewRepository,\r\n Shops,\r\n VariantRepository,\r\n Where,\r\n} from '@infrab4a/connect'\r\n\r\nimport { DEFAULT_SHOP } from '../consts'\r\n\r\nimport { PendingProductReview, ProductReviewCreate } from './types'\r\n\r\n@Injectable()\r\nexport class OrderProductReviewService {\r\n constructor(\r\n @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,\r\n @Inject('ProductReviewRepository') private readonly productReviewRepository: ProductReviewRepository,\r\n @Inject('VariantRepository') private readonly variantRepository: VariantRepository,\r\n @Inject(DEFAULT_SHOP) public readonly defaultShop: Shops,\r\n ) {}\r\n\r\n async getPendingReviewsByEmail(email: string): Promise<PendingProductReview[]> {\r\n const products: PendingProductReview[] = []\r\n const orders = await this.getOrdersByEmail(email)\r\n\r\n if (orders.length) {\r\n for (const order of orders) {\r\n const lineItems = order.lineItems.filter((item) => !item.isGift)\r\n\r\n for (const item of lineItems) {\r\n const productReview = await this.getProductReview(order, item)\r\n\r\n if (productReview?.status != null) continue\r\n\r\n products.push(this.buildProductReview(order, item, productReview))\r\n }\r\n }\r\n }\r\n\r\n return products\r\n }\r\n\r\n private async getOrdersByEmail(email: string): Promise<Order[]> {\r\n const { data: orders } = await this.orderRepository.find({\r\n filters: {\r\n user: {\r\n email: email,\r\n },\r\n shop: this.defaultShop,\r\n status: OrderStatus.ENTREGUE,\r\n createdAt: {\r\n operator: Where.GTE,\r\n value: new Date(2024, 0, 0, 0, 0, 0).getTime(),\r\n },\r\n },\r\n orderBy: {\r\n createdAt: 'desc',\r\n },\r\n })\r\n\r\n return orders\r\n }\r\n\r\n private async getProductReview(order: Order, item: LineItem) {\r\n const products: string[] = [item.id]\r\n const isVariant = await this.variantRepository\r\n .find({\r\n filters: {\r\n id: item.id,\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n\r\n if (isVariant) products.push(isVariant.productId)\r\n const productReview = await this.productReviewRepository\r\n .find({\r\n filters: {\r\n orderId: { operator: Where.IN, value: [order.id, order.orderNumber].filter(Boolean) },\r\n productId: { operator: Where.IN, value: products },\r\n },\r\n })\r\n .then((res) => res.data.at(0))\r\n\r\n return productReview\r\n }\r\n\r\n private buildProductReview(order: Order, item: LineItem, review: ProductReview) {\r\n return {\r\n id: item.id,\r\n orderId: order.id,\r\n orderNumber: order.orderNumber,\r\n isEdition: false,\r\n name: item.name,\r\n image: item.image,\r\n deliveryDate: order.deliveredAt || null,\r\n evaluationInAnalysis: review ? true : false,\r\n rating: review ? review.rate : null,\r\n shopProductSlug: item.slug,\r\n }\r\n }\r\n\r\n async createReview(review: ProductReviewCreate): Promise<ProductReview> {\r\n return this.productReviewRepository.create(\r\n ProductReview.toInstance({\r\n productId: review.productId.toString(),\r\n shop: review.shop,\r\n rate: review.rate,\r\n author: review.author,\r\n email: review.email,\r\n location: review.location,\r\n review: review.comment,\r\n title: review.title,\r\n personId: review.personId,\r\n points: review.points,\r\n orderId: review.orderId,\r\n }),\r\n )\r\n }\r\n\r\n async verifyReviewProductAndOrder(orderId: string[], productId: string) {\r\n return this.productReviewRepository\r\n .find({\r\n filters: {\r\n orderId: { operator: Where.IN, value: orderId },\r\n productId: productId,\r\n },\r\n })\r\n .then((res) => res.data)\r\n }\r\n}\r\n","import { Injectable, Inject } from '@angular/core'\r\nimport { doc, Firestore, docSnapshots } from '@angular/fire/firestore'\r\nimport { Order, OrderFirestoreRepository } from '@infrab4a/connect'\r\nimport { Subject } from 'rxjs'\r\nimport { map } from 'rxjs/operators'\r\n\r\n@Injectable()\r\nexport class OrderService {\r\n orderSubject = new Subject<Order>()\r\n\r\n constructor(\r\n private readonly angularFirestore: Firestore,\r\n @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,\r\n ) {}\r\n\r\n getOrder(id: string): Subject<Order> {\r\n docSnapshots(doc(this.angularFirestore, `${this.orderRepository.collectionName}/${id}`))\r\n .pipe(map((doc) => Order.toInstance(doc.data())))\r\n .subscribe((doc) => this.orderSubject.next(doc))\r\n\r\n return this.orderSubject\r\n }\r\n}\r\n","import { Injector, ModuleWithProviders, NgModule, Type } from '@angular/core'\r\nimport { FirebaseApp, FirebaseOptions, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app'\r\nimport { AppCheckOptions, initializeAppCheck, provideAppCheck } from '@angular/fire/app-check'\r\nimport { getStorage, provideStorage, Storage } from '@angular/fire/storage'\r\nimport {\r\n AxiosElasticSearchConfig,\r\n FileUploaderService,\r\n FirebaseFileUploaderService,\r\n isNil,\r\n ProductsVertexSearch,\r\n Shops,\r\n UpdateUserImage,\r\n UserRepository,\r\n VertexSearchConfig,\r\n} from '@infrab4a/connect'\r\n\r\nimport { AngularElasticSeachModule } from './angular-elastic-search.module'\r\nimport { AngularFirebaseAuthModule } from './angular-firebase-auth.module'\r\nimport { AngularFirestoreModule } from './angular-firestore.module'\r\nimport { AngularHasuraGraphQLModule, HasuraGraphQLOptions } from './angular-hasura-graphql.module'\r\nimport { AngularVertexSeachModule } from './angular-vertex-search.module'\r\nimport {\r\n APP_CHECK_PROVIDER,\r\n BACKEND_URL,\r\n CATEGORY_STRUCTURE,\r\n DEFAULT_SHOP,\r\n ES_CONFIG,\r\n FIREBASE_APP_NAME,\r\n FIREBASE_OPTIONS,\r\n HASURA_OPTIONS,\r\n PERSISTENCE_PROVIDER,\r\n VERTEX_CONFIG,\r\n} from './consts'\r\nimport { STORAGE_BASE_URL } from './consts/storage-base-url.const'\r\nimport { CookieDataPersistence, DataPersistence } from './persistence'\r\nimport {\r\n AuthService,\r\n CartService,\r\n CatalogService,\r\n CategoryService,\r\n CheckoutService,\r\n CheckoutSubscriptionService,\r\n CouponService,\r\n HomeShopService,\r\n OrderProductReviewService,\r\n OrderService,\r\n WishlistService,\r\n} from './services'\r\nimport { CartServicesFacade } from './services/cart'\r\nimport { NewCategoryStructureAdapter, OldCategoryStructureAdapter } from './services/catalog/adapters'\r\nimport { CatalogSearchContext } from './services/catalog/context/catalog-search.context'\r\nimport {\r\n CatalogServiceFacade,\r\n CatalogStrategiesFacade,\r\n CategoryRepositoryFacade,\r\n CategoryServiceFacade,\r\n ProductCatalogFacade,\r\n} from './services/catalog/facades'\r\nimport {\r\n BrandManagerHelper,\r\n CatalogFilterHelper,\r\n CatalogSortHelper,\r\n ProductFieldsHelper,\r\n} from './services/catalog/helpers'\r\nimport {\r\n CatalogHelpersService,\r\n CatalogOperationsFacade,\r\n CatalogRepositoryService,\r\n ProductManagementFacade,\r\n} from './services/catalog/services'\r\nimport { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from './services/catalog/strategies'\r\nimport { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './services/checkout'\r\nimport { CouponRepositoriesFacade } from './services/coupon'\r\nimport { HomeShopRepositoriesFacade } from './services/home-shop'\r\nimport { ConfigurationFacade } from './services/shared'\r\nimport { FirebaseAppConfig } from './types'\r\n\r\n@NgModule({\r\n imports: [\r\n provideFirebaseApp((injector: Injector) => {\r\n const appName = injector.get<string>(FIREBASE_APP_NAME)\r\n\r\n try {\r\n const app = appName ? getApp(appName) : getApp()\r\n\r\n return app\r\n } catch (error) {\r\n console.warn('Firebase app not found, initializing new app')\r\n\r\n if (error instanceof Error) console.error(error.message)\r\n\r\n return initializeApp(injector.get(FIREBASE_OPTIONS), appName)\r\n }\r\n }),\r\n provideAppCheck((injector: Injector) => {\r\n const app = injector.get(FirebaseApp)\r\n\r\n try {\r\n const provider = injector.get<AppCheckOptions['provider']>(APP_CHECK_PROVIDER)\r\n\r\n if (provider)\r\n return initializeAppCheck(app, {\r\n provider,\r\n isTokenAutoRefreshEnabled: true,\r\n })\r\n } catch (error) {\r\n if (error instanceof Error) console.error(error.message)\r\n\r\n return\r\n }\r\n }),\r\n provideStorage((injector: Injector) => getStorage(injector.get(FirebaseApp))),\r\n AngularElasticSeachModule,\r\n AngularVertexSeachModule,\r\n AngularFirebaseAuthModule,\r\n AngularFirestoreModule,\r\n AngularHasuraGraphQLModule,\r\n ],\r\n providers: [\r\n AuthService,\r\n CartService,\r\n CatalogService,\r\n CategoryService,\r\n CheckoutService,\r\n CheckoutSubscriptionService,\r\n CouponService,\r\n HomeShopService,\r\n OrderService,\r\n WishlistService,\r\n ConfigurationFacade,\r\n CartServicesFacade,\r\n CheckoutRepositoriesFacade,\r\n CheckoutDependenciesFacade,\r\n CategoryRepositoryFacade,\r\n ProductCatalogFacade,\r\n CatalogServiceFacade,\r\n CategoryServiceFacade,\r\n CatalogStrategiesFacade,\r\n CatalogOperationsFacade,\r\n ProductManagementFacade,\r\n {\r\n provide: 'ProductServicesFacade',\r\n useFactory: (productStockNotificationRepository: any, categoryRepository: any, productSearch: any) => ({\r\n productStockNotificationRepository,\r\n categoryRepository,\r\n productSearch,\r\n }),\r\n deps: ['ProductStockNotificationRepository', 'CategoryRepository', 'ProductSearch'],\r\n },\r\n CatalogFilterHelper,\r\n CatalogSortHelper,\r\n ProductFieldsHelper,\r\n BrandManagerHelper,\r\n CatalogRepositoryService,\r\n CatalogHelpersService,\r\n CategorySearchStrategy,\r\n TermSearchStrategy,\r\n ProfileSearchStrategy,\r\n {\r\n provide: CatalogSearchContext,\r\n useFactory: (\r\n categoryStrategy: CategorySearchStrategy,\r\n termStrategy: TermSearchStrategy,\r\n profileStrategy: ProfileSearchStrategy,\r\n ) => {\r\n return new CatalogSearchContext(categoryStrategy, termStrategy, profileStrategy)\r\n },\r\n deps: [CategorySearchStrategy, TermSearchStrategy, ProfileSearchStrategy],\r\n },\r\n {\r\n provide: UpdateUserImage,\r\n useFactory: (userRepository: UserRepository, fileUploader: FileUploaderService) => {\r\n return new UpdateUserImage(userRepository, fileUploader)\r\n },\r\n deps: ['UserRepository', 'FileUploaderService'],\r\n },\r\n {\r\n provide: 'FileUploaderService',\r\n useFactory: (storage: Storage, baseUrl: string) => {\r\n return new FirebaseFileUploaderService(storage, baseUrl)\r\n },\r\n deps: [Storage, STORAGE_BASE_URL],\r\n },\r\n {\r\n provide: 'ProductSearch',\r\n useExisting: ProductsVertexSearch,\r\n },\r\n CouponRepositoriesFacade,\r\n HomeShopRepositoriesFacade,\r\n OrderProductReviewService,\r\n ],\r\n})\r\nexport class AngularConnectModule {\r\n static initializeApp(\r\n defaultShop: Shops,\r\n options: {\r\n firebase?: FirebaseOptions\r\n elasticSearch?: AxiosElasticSearchConfig\r\n vertexConfig?: VertexSearchConfig\r\n hasura: HasuraGraphQLOptions\r\n backendUrl: string\r\n oldCategoryStructure?: boolean\r\n storageBaseUrl?: string\r\n persistenceProvider?: Type<DataPersistence>\r\n appCheckProvider?: AppCheckOptions['provider']\r\n },\r\n nameOrConfig?: string | FirebaseAppConfig,\r\n ): ModuleWithProviders<AngularConnectModule> {\r\n return {\r\n ngModule: AngularConnectModule,\r\n providers: [\r\n ...this.buildCoreProviders(nameOrConfig, options),\r\n ...this.buildConditionalProviders(defaultShop, options),\r\n ],\r\n }\r\n }\r\n\r\n private static buildCoreProviders(\r\n nameOrConfig: string | FirebaseAppConfig,\r\n options: {\r\n appCheckProvider?: AppCheckOptions['provider']\r\n oldCategoryStructure?: boolean\r\n persistenceProvider?: Type<DataPersistence>\r\n },\r\n ) {\r\n return [\r\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\r\n { provide: APP_CHECK_PROVIDER, useValue: options.appCheckProvider },\r\n {\r\n provide: CATEGORY_STRUCTURE,\r\n useClass: this.selectCategoryStructureAdapter(options.oldCategoryStructure),\r\n },\r\n { provide: PERSISTENCE_PROVIDER, useClass: options?.persistenceProvider || CookieDataPersistence },\r\n ]\r\n }\r\n\r\n private static buildConditionalProviders(\r\n defaultShop: Shops,\r\n options: {\r\n firebase?: FirebaseOptions\r\n elasticSearch?: AxiosElasticSearchConfig\r\n vertexConfig?: VertexSearchConfig\r\n hasura: HasuraGraphQLOptions\r\n backendUrl: string\r\n storageBaseUrl?: string\r\n },\r\n ) {\r\n return [\r\n ...this.createProviderIfExists(DEFAULT_SHOP, defaultShop),\r\n ...this.createProviderIfExists(FIREBASE_OPTIONS, options.firebase),\r\n ...this.createProviderIfExists(ES_CONFIG, options.elasticSearch),\r\n ...this.createProviderIfExists(VERTEX_CONFIG, options.vertexConfig),\r\n ...this.createProviderIfExists(HASURA_OPTIONS, options.hasura),\r\n ...this.createProviderIfExists(BACKEND_URL, options.backendUrl),\r\n ...this.createProviderIfExists(STORAGE_BASE_URL, options.storageBaseUrl),\r\n ]\r\n }\r\n\r\n private static selectCategoryStructureAdapter(oldCategoryStructure?: boolean) {\r\n return isNil(oldCategoryStructure) || oldCategoryStructure\r\n ? OldCategoryStructureAdapter\r\n : NewCategoryStructureAdapter\r\n }\r\n\r\n private static createProviderIfExists(token: any, value: any) {\r\n return isNil(value) ? [] : [{ provide: token, useValue: value }]\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.CheckoutRepositoriesFacade","i1.CheckoutDependenciesFacade","i2.ConfigurationFacade","i1.AuthService","i2.CheckoutService","i3","i1.CartServicesFacade","i1.CatalogRepositoryService","i1.CatalogHelpersService","i1.CategorySearchStrategy","i1.TermSearchStrategy","i1.ProfileSearchStrategy","i1.ProductCatalogFacade","i1.CatalogFilterHelper","i1.CatalogSortHelper","i1.ProductFieldsHelper","i1.CatalogOperationsFacade","i2.ProductManagementFacade","i1.CouponRepositoriesFacade","i1.CouponService","i1.HomeShopRepositoriesFacade"],"mappings":"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"}