All files / projects/requisition-management/src/app/pages/requisition-detail/requisition-summary requisition-summary.component.ts

100% Statements 16/16
70% Branches 7/10
100% Functions 4/4
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 502x   2x     2x             2x   5x             5x         5x   4x       4x   4x         4x 4x 8x 4x   4x 4x        
import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';
 
import { AttributeHelper } from 'ish-core/models/attribute/attribute.helper';
import { BasketApprover } from 'ish-core/models/basket-approval/basket-approval.model';
 
import { Requisition, RequisitionViewer } from '../../../models/requisition/requisition.model';
 
@Component({
  selector: 'ish-requisition-summary',
  templateUrl: './requisition-summary.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class RequisitionSummaryComponent implements OnInit {
  @Input({ required: true }) requisition: Requisition;
  @Input() view: RequisitionViewer = 'buyer';
 
  costCenterName: string;
  customerApproverCount: number;
  uniqueApprovers: BasketApprover[];
 
  ngOnInit() {
    this.costCenterName = AttributeHelper.getAttributeValueByAttributeName(
      this.requisition?.attributes,
      'BusinessObjectAttributes#Order_CostCenter_Name'
    );
 
    if (this.requisition) {
      const rawApprovers =
        this.requisition.approval.statusCode === 'PENDING'
          ? this.requisition.approval.customerApproval.approvers || []
          : this.requisition.approval.approvers || [];
 
      this.uniqueApprovers = this.uniqueByEmail(rawApprovers);
 
      this.customerApproverCount = this.uniqueApprovers.length || 1;
    }
  }
 
  private uniqueByEmail(list: BasketApprover[]) {
    const uniqueEmails = new Set<string>();
    return list.filter(a => {
      if (uniqueEmails.has(a.email)) {
        return false;
      }
      uniqueEmails.add(a.email);
      return true;
    });
  }
}