// TODO: Deprecate this file after release of New Contract Terms
import React, { useContext } from 'react';
import { Col, Row } from '@theorchard/suite-components';
import { get } from 'lodash-es';
import PropTypes from 'prop-types';
import { ContractTermContext } from 'src/contexts/contract-term-context';
import { getCountryName } from 'src/utils/country';

export const ContractTermCondition = ({ contractTermCondition }: any) => {
    const { state } = useContext(ContractTermContext);
    const storeList = state.stores;
    const transactionTypeList = state.transactionTypes;
    let countries = get(contractTermCondition, 'conditions.countries', []);
    let stores = get(contractTermCondition, 'conditions.stores', []);
    let transactionTypes = get(
        contractTermCondition,
        'conditions.transactionTypes',
        []
    );
    if (!stores || !stores.length) stores = 'All';
    else stores = stores.map((store: string) => storeList[store]).join(', ');

    if (!transactionTypes || !transactionTypes.length) transactionTypes = 'All';
    else
        transactionTypes = transactionTypes
            .map(
                (transactionType: string) =>
                    transactionTypeList[transactionType] &&
                    transactionTypeList[transactionType].txnTypeCode.concat(
                        ' - ',
                        transactionTypeList[transactionType].txnTypeName
                    )
            )
            .join(', ');

    if (countries && countries.length)
        countries = countries
            .map((code: string) => getCountryName(code))
            .join(', ');
    else countries = 'All';

    return (
        <Row className="ContractTermConditionsCondition">
            <Col sm="3">{transactionTypes}</Col>
            <Col sm="3">{stores}</Col>
            <Col sm="3">{countries}</Col>
            <Col sm="3">{`${contractTermCondition.termRate}%`}</Col>
        </Row>
    );
};

ContractTermCondition.propTypes = {
    contractTermCondition: PropTypes.object,
};

export default ContractTermCondition;
