File

feature-libs/product-configurator/rulebased/core/connectors/rulebased-configurator.connector.ts

Index

Properties
Methods

Constructor

constructor(adapters: RulebasedConfiguratorAdapter[], configUtilsService: CommonConfiguratorUtilsService)
Parameters :
Name Type Optional
adapters RulebasedConfiguratorAdapter[] No
configUtilsService CommonConfiguratorUtilsService No

Methods

addToCart
addToCart(parameters: Configurator.AddToCartParameters)
Parameters :
Name Type Optional
parameters Configurator.AddToCartParameters No
Returns : Observable<CartModification>
createConfiguration
createConfiguration(owner: CommonConfigurator.Owner)
Parameters :
Name Type Optional
owner CommonConfigurator.Owner No
Protected getAdapter
getAdapter(configuratorType: string)
Parameters :
Name Type Optional
configuratorType string No
getConfigurationOverview
getConfigurationOverview(configuration: Configurator.Configuration)
Parameters :
Name Type Optional
configuration Configurator.Configuration No
readConfiguration
readConfiguration(configId: string, groupId: string, configurationOwner: CommonConfigurator.Owner)
Parameters :
Name Type Optional
configId string No
groupId string No
configurationOwner CommonConfigurator.Owner No
readConfigurationForCartEntry
readConfigurationForCartEntry(parameters: CommonConfigurator.ReadConfigurationFromCartEntryParameters)
Parameters :
Name Type Optional
parameters CommonConfigurator.ReadConfigurationFromCartEntryParameters No
readConfigurationForOrderEntry
readConfigurationForOrderEntry(parameters: CommonConfigurator.ReadConfigurationFromOrderEntryParameters)
Parameters :
Name Type Optional
parameters CommonConfigurator.ReadConfigurationFromOrderEntryParameters No
readPriceSummary
readPriceSummary(configuration: Configurator.Configuration)
Parameters :
Name Type Optional
configuration Configurator.Configuration No
updateConfiguration
updateConfiguration(configuration: Configurator.Configuration)
Parameters :
Name Type Optional
configuration Configurator.Configuration No
updateConfigurationForCartEntry
updateConfigurationForCartEntry(parameters: Configurator.UpdateConfigurationForCartEntryParameters)
Parameters :
Name Type Optional
parameters Configurator.UpdateConfigurationForCartEntryParameters No
Returns : Observable<CartModification>

Properties

Static CONFIGURATOR_ADAPTER_LIST
Default value : new InjectionToken< RulebasedConfiguratorAdapter[] >('ConfiguratorAdapterList')
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { CartModification } from '@spartacus/core';
import {
  CommonConfigurator,
  CommonConfiguratorUtilsService,
} from '@spartacus/product-configurator/common';
import { Observable } from 'rxjs';
import { Configurator } from '../model/configurator.model';
import { RulebasedConfiguratorAdapter } from './rulebased-configurator.adapter';

//Not provided in root, as this would break lazy loading
@Injectable()
export class RulebasedConfiguratorConnector {
  static CONFIGURATOR_ADAPTER_LIST = new InjectionToken<
    RulebasedConfiguratorAdapter[]
  >('ConfiguratorAdapterList');

  constructor(
    @Inject(RulebasedConfiguratorConnector.CONFIGURATOR_ADAPTER_LIST)
    protected adapters: RulebasedConfiguratorAdapter[],
    protected configUtilsService: CommonConfiguratorUtilsService
  ) {}

  createConfiguration(
    owner: CommonConfigurator.Owner
  ): Observable<Configurator.Configuration> {
    return this.getAdapter(owner.configuratorType).createConfiguration(owner);
  }

  readConfiguration(
    configId: string,
    groupId: string,
    configurationOwner: CommonConfigurator.Owner
  ): Observable<Configurator.Configuration> {
    return this.getAdapter(
      configurationOwner.configuratorType
    ).readConfiguration(configId, groupId, configurationOwner);
  }

  updateConfiguration(
    configuration: Configurator.Configuration
  ): Observable<Configurator.Configuration> {
    return this.getAdapter(
      configuration.owner.configuratorType
    ).updateConfiguration(configuration);
  }

  addToCart(
    parameters: Configurator.AddToCartParameters
  ): Observable<CartModification> {
    return this.getAdapter(parameters.owner.configuratorType).addToCart(
      parameters
    );
  }

  readConfigurationForCartEntry(
    parameters: CommonConfigurator.ReadConfigurationFromCartEntryParameters
  ): Observable<Configurator.Configuration> {
    return this.getAdapter(
      parameters.owner.configuratorType
    ).readConfigurationForCartEntry(parameters);
  }

  updateConfigurationForCartEntry(
    parameters: Configurator.UpdateConfigurationForCartEntryParameters
  ): Observable<CartModification> {
    return this.getAdapter(
      parameters.configuration.owner.configuratorType
    ).updateConfigurationForCartEntry(parameters);
  }

  readConfigurationForOrderEntry(
    parameters: CommonConfigurator.ReadConfigurationFromOrderEntryParameters
  ): Observable<Configurator.Configuration> {
    return this.getAdapter(
      parameters.owner.configuratorType
    ).readConfigurationForOrderEntry(parameters);
  }

  readPriceSummary(
    configuration: Configurator.Configuration
  ): Observable<Configurator.Configuration> {
    return this.getAdapter(
      configuration.owner.configuratorType
    ).readPriceSummary(configuration);
  }

  getConfigurationOverview(
    configuration: Configurator.Configuration
  ): Observable<Configurator.Overview> {
    return this.getAdapter(
      configuration.owner.configuratorType
    ).getConfigurationOverview(configuration.configId);
  }

  protected getAdapter(configuratorType: string): RulebasedConfiguratorAdapter {
    const adapterResult = this.adapters.find(
      (adapter) => adapter.getConfiguratorType() === configuratorType
    );
    if (adapterResult) {
      return adapterResult;
    } else {
      throw new Error(
        'No adapter found for configurator type: ' + configuratorType
      );
    }
  }
}

result-matching ""

    No results matching ""