DealCreationPoint.java

package com.tradecloud.domain.model.deal;

public enum DealCreationPoint {

    ORDER_CONSIGNED("Order Consigned"),
    ORDER_FINALISED("Order Finalise"),
    ORDER_SIGNED_OFF("Order Sign Off"),
    DOCUMENT_FINALISED("Document Finalise"),
    DOCUMENT_SIGNED_OFF("Document Sign Off"),
    ORDER_DELETED("Order Deletion"),
    SPLIT_PAYMENT_CHANGE("split Payment Change"),
    MANUAL_DEAL_UPDATED_SOURCE("Manual Deal Updated"),
    MANUAL_DEAL_CREATED_SOURCE("Manual Deal Created");


    private String stringValue;

    DealCreationPoint(String stringValue) {
        this.stringValue = stringValue;
    }

    @Override
    public String toString() {
        return stringValue;
    }

    /**
     * Redbox Deal Creation Point Wording may differ from TC, e.g redbox send us "Order Consignment" and TC expect "Order Consigned".
     * This method will ensure any refactor should keep redox integration working.
     *
     * @param redBoxString Deal Creation Point from Redbox.
     * @return
     */
    public static DealCreationPoint fromRedbox(String redBoxString) {

        switch (redBoxString) {
            case "Order Consignment":
                return ORDER_CONSIGNED;
            case "Order Finalise":
                return ORDER_FINALISED;
            case "Order Sign Off":
                return ORDER_SIGNED_OFF;
            case "Document Finalise":
                return DOCUMENT_FINALISED;
            case "Order Deletion":
                return ORDER_DELETED;
            default:
                return null;
        }
    }
}