vineanova-redux-artifacts
Version: 
## Overview
63 lines (54 loc) • 1.7 kB
JavaScript
import { createSelector } from 'reselect';
import isEmpty from 'lodash/isEmpty';
import {isValid, format} from 'date-fns';
import isNil from 'lodash/isNil';
import has from 'lodash/has';
const viewDateFormat = 'dd/MM/yyyy';
export const getlookupSupplyContractTypeEntity = state => state.entities.lookupSupplyContractType;
export const getlookupSupplyContractTypeEntityMeta = createSelector(
  [getlookupSupplyContractTypeEntity],
  reference => {
    const { isLoading, isLoaded, hasError, error } = reference;
    return {
      isLoading,
      isLoaded,
      hasError,
      error,
    };
  },
);
export const getlookupSupplyContractTypeEntityData = createSelector(
  [getlookupSupplyContractTypeEntity],
  reference => {
    const { data = [] } = reference;
    const refData = isEmpty(data) ? [] : data;
    if (!Array.isArray(refData) || isNil(refData)) return [];
    const formattedData = refData.map(d => {
      let hasDates = false;
      let fromDate = '';
      let toDate = '';
      let fromTo = '';
      if(has(d, 'effectiveToDate') && has(d, 'effectiveFromDate')){
        hasDates = true;
        toDate =
          !isEmpty(d.effectiveToDate) && isValid(new Date(d.effectiveToDate))
            ? format(new Date(d.effectiveToDate), viewDateFormat)
            : '';
        fromDate =
          !isEmpty(d.effectiveFromDate) &&
          isValid(new Date(d.effectiveFromDate))
            ? format(new Date(d.effectiveFromDate), viewDateFormat)
            : '';
      }
      
      return {
        ...d,
        ...(hasDates && {
          fromDate,
          toDate,
          fromTo,  
        })              
      };
    });
    
    return formattedData;
  },
);