Home Reference Source

src/utils/conditionOperators/DateGreaterThan.js

import ConditionOperator from './ConditionOperator';
import moment from 'moment';
export default class DateGeaterThan extends ConditionOperator {
    static get operatorKey() {
        return 'dateGreaterThan';
    }

    static get displayedName() {
        return 'Greater Than';
    }

    getFormattedDates({ value, comparedValue, conditionTriggerComponent }) {
        const hasValidationFormat = conditionTriggerComponent ? conditionTriggerComponent.getValidationFormat : null;
        const date = hasValidationFormat ? moment(value, conditionTriggerComponent.getValidationFormat()) : moment(value);
        const comparedDate = hasValidationFormat ? moment(comparedValue, conditionTriggerComponent.getValidationFormat()) : moment(comparedValue);

        return { date, comparedDate };
    }

    execute(options, functionName = 'isAfter') {
        const { value, instance, conditionComponentPath } = options;

        if (!value) {
            return false;
        }

        let conditionTriggerComponent = null;

        if (instance && instance.root) {
            conditionTriggerComponent = instance.root.getComponent(conditionComponentPath);
        }

        if ( conditionTriggerComponent && conditionTriggerComponent.isPartialDay && conditionTriggerComponent.isPartialDay(value)) {
            return false;
        }

        const { date, comparedDate } = this.getFormattedDates({ ...options, conditionTriggerComponent });

        return date[functionName](comparedDate);
    }
}