File

feature-libs/order/core/facade/order-return-request.service.ts

Index

Methods

Constructor

constructor(store: Store, processStateStore: Store>, userIdService: UserIdService)
Parameters :
Name Type Optional
store Store<StateWithOrder> No
processStateStore Store<StateWithProcess<void>> No
userIdService UserIdService No

Methods

cancelOrderReturnRequest
cancelOrderReturnRequest(returnRequestCode: string, returnRequestModification: ReturnRequestModification)
Parameters :
Name Type Optional
returnRequestCode string No
returnRequestModification ReturnRequestModification No
Returns : void
clearOrderReturnRequestDetail
clearOrderReturnRequestDetail()

Cleaning order return request details

Returns : void
clearOrderReturnRequestList
clearOrderReturnRequestList()

Cleaning order return request list

Returns : void
createOrderReturnRequest
createOrderReturnRequest(returnRequestInput: ReturnRequestEntryInputList)

Create order return request

Parameters :
Name Type Optional Description
returnRequestInput ReturnRequestEntryInputList No

order return request entry input

Returns : void
getCancelReturnRequestLoading
getCancelReturnRequestLoading()

Returns the cancel return request loading flag

Returns : Observable<boolean>
getCancelReturnRequestSuccess
getCancelReturnRequestSuccess()

Returns the cancel return request success flag

Returns : Observable<boolean>
getOrderReturnRequest
getOrderReturnRequest()

Return an order return request

Returns : Observable<ReturnRequest>
getOrderReturnRequestList
getOrderReturnRequestList(pageSize: number)

Gets order return request list

Parameters :
Name Type Optional
pageSize number No
getReturnRequestLoading
getReturnRequestLoading()

Get the order return request loading flag

Returns : Observable<boolean>
getReturnRequestSuccess
getReturnRequestSuccess()

Get the order return request success flag

Returns : Observable<boolean>
loadOrderReturnRequestDetail
loadOrderReturnRequestDetail(returnRequestCode: string)

Loads order return request detail

Parameters :
Name Type Optional
returnRequestCode string No
Returns : void
loadOrderReturnRequestList
loadOrderReturnRequestList(pageSize: number, currentPage?: number, sort?: string)

Loads order return request list

Parameters :
Name Type Optional Description
pageSize number No

page size

currentPage number Yes

current page

sort string Yes

sort

Returns : void
resetCancelReturnRequestProcessState
resetCancelReturnRequestProcessState()

Resets the cancel return request process flags

Returns : void
import { Injectable } from '@angular/core';
import { select, Store } from '@ngrx/store';
import {
  ProcessSelectors,
  ReturnRequest,
  ReturnRequestEntryInputList,
  ReturnRequestList,
  ReturnRequestModification,
  StateWithProcess,
  UserIdService,
} from '@spartacus/core';
import { OrderReturnRequestFacade } from '@spartacus/order/root';
import { Observable } from 'rxjs';
import { map, tap } from 'rxjs/operators';
import { OrderActions } from '../store/actions/index';
import { CANCEL_RETURN_PROCESS_ID, StateWithOrder } from '../store/order-state';
import { OrderSelectors } from '../store/selectors/index';

@Injectable()
export class OrderReturnRequestService implements OrderReturnRequestFacade {
  constructor(
    protected store: Store<StateWithOrder>,
    protected processStateStore: Store<StateWithProcess<void>>,
    protected userIdService: UserIdService
  ) {}

  /**
   * Create order return request
   * @param orderCode an order code
   * @param returnRequestInput order return request entry input
   */
  createOrderReturnRequest(
    returnRequestInput: ReturnRequestEntryInputList
  ): void {
    this.userIdService.takeUserId().subscribe((userId) => {
      this.store.dispatch(
        new OrderActions.CreateOrderReturnRequest({
          userId,
          returnRequestInput,
        })
      );
    });
  }

  /**
   * Return an order return request
   */
  getOrderReturnRequest(): Observable<ReturnRequest> {
    return this.store.pipe(select(OrderSelectors.getOrderReturnRequest));
  }

  /**
   * Gets order return request list
   */
  getOrderReturnRequestList(
    pageSize: number
  ): Observable<ReturnRequestList | undefined> {
    return this.store.pipe(
      select(OrderSelectors.getOrderReturnRequestListState),
      tap((returnListState) => {
        const attemptedLoad =
          returnListState.loading ||
          returnListState.success ||
          returnListState.error;
        if (!attemptedLoad) {
          this.loadOrderReturnRequestList(pageSize);
        }
      }),
      map((returnListState) => returnListState.value)
    );
  }

  /**
   * Loads order return request detail
   * @param returnRequestCode
   */
  loadOrderReturnRequestDetail(returnRequestCode: string): void {
    this.userIdService.takeUserId().subscribe((userId) => {
      this.store.dispatch(
        new OrderActions.LoadOrderReturnRequest({
          userId,
          returnRequestCode,
        })
      );
    });
  }

  /**
   * Loads order return request list
   * @param pageSize page size
   * @param currentPage current page
   * @param sort sort
   */
  loadOrderReturnRequestList(
    pageSize: number,
    currentPage?: number,
    sort?: string
  ): void {
    this.userIdService.takeUserId(true).subscribe(
      (userId) => {
        this.store.dispatch(
          new OrderActions.LoadOrderReturnRequestList({
            userId,
            pageSize,
            currentPage,
            sort,
          })
        );
      },
      () => {
        // TODO: for future releases, refactor this part to thrown errors
      }
    );
  }

  /**
   * Cleaning order return request list
   */
  clearOrderReturnRequestList(): void {
    this.store.dispatch(new OrderActions.ClearOrderReturnRequestList());
  }

  /**
   * Get the order return request loading flag
   */
  getReturnRequestLoading(): Observable<boolean> {
    return this.store.pipe(select(OrderSelectors.getOrderReturnRequestLoading));
  }

  /**
   * Get the order return request success flag
   */
  getReturnRequestSuccess(): Observable<boolean> {
    return this.store.pipe(select(OrderSelectors.getOrderReturnRequestSuccess));
  }

  /**
   * Cleaning order return request details
   */
  clearOrderReturnRequestDetail(): void {
    this.store.dispatch(new OrderActions.ClearOrderReturnRequest());
  }

  /*
   * Cancel order return request
   */
  cancelOrderReturnRequest(
    returnRequestCode: string,
    returnRequestModification: ReturnRequestModification
  ): void {
    this.userIdService.takeUserId().subscribe((userId) => {
      this.store.dispatch(
        new OrderActions.CancelOrderReturnRequest({
          userId,
          returnRequestCode,
          returnRequestModification,
        })
      );
    });
  }

  /**
   * Returns the cancel return request loading flag
   */
  getCancelReturnRequestLoading(): Observable<boolean> {
    return this.processStateStore.pipe(
      select(
        ProcessSelectors.getProcessLoadingFactory(CANCEL_RETURN_PROCESS_ID)
      )
    );
  }

  /**
   * Returns the cancel return request success flag
   */
  getCancelReturnRequestSuccess(): Observable<boolean> {
    return this.processStateStore.pipe(
      select(
        ProcessSelectors.getProcessSuccessFactory(CANCEL_RETURN_PROCESS_ID)
      )
    );
  }

  /**
   * Resets the cancel return request process flags
   */
  resetCancelReturnRequestProcessState(): void {
    return this.store.dispatch(new OrderActions.ResetCancelReturnProcess());
  }
}

result-matching ""

    No results matching ""