import React, { useState, useEffect, useContext } from 'react'; import { useSelector } from 'react-redux'; import { useParams } from 'react-router-dom'; import { useTranslation } from 'react-i18next'; import { OriginFeature, Countries, IRECBusinessLegalStatusLabelsMap } from '@energyweb/utils-general'; import { makeStyles, createStyles, useTheme, Paper, Grid, TextField, Box } from '@material-ui/core'; import { fromUsersSelectors } from '../../features/users'; import { Registration } from '../../utils/irec'; import { OriginConfigurationContext } from '../../PackageConfigurationProvider'; import { Download } from '../Documents'; import { IRECOrganizationView } from './IRec/IRECOrganizationView'; import { fromGeneralSelectors } from '../../features'; interface IFormValues { name: string; address: string; businessType: string; city: string; zipCode: string; country: number; tradeRegistryCompanyNumber: string; vatNumber: string; signatoryAddress: string; signatoryCity: string; signatoryCountry: number; signatoryEmail: string; signatoryFullName: string; signatoryPhoneNumber: string; signatoryZipCode: string; status: string; signatoryDocumentIds?: string[]; documentIds?: string[]; } const useStyles = makeStyles(() => createStyles({ container: { padding: '20px', marginBottom: '20px' } }) ); export function OrganizationView() { const userOffchain = useSelector(fromUsersSelectors.getUserOffchain); const organizationClient = useSelector(fromGeneralSelectors.getBackendClient) ?.organizationClient; const params: { id?: string } = useParams(); const { enabledFeatures } = useContext(OriginConfigurationContext); const [formValues, setFormValues] = useState(null); const [iRecData, setIRecData] = useState(null); const iRecClient = useSelector(fromGeneralSelectors.getIRecClient); const { t } = useTranslation(); const classes = useStyles(useTheme()); const setBusinessType = (type: string) => { if (parseInt(type, 10)) { return IRECBusinessLegalStatusLabelsMap[type]; } else { return type; } }; const setValues = (organization) => { setFormValues({ ...organization, businessType: setBusinessType(organization.businessType), country: Countries.find((c) => c.code === organization.country).name, signatoryCountry: Countries.find((c) => c.code === organization.signatoryCountry).name, status: organization.status.toLowerCase() }); }; useEffect(() => { const getOrganization = async () => { let iRecOrg: Registration[]; if (enabledFeatures.includes(OriginFeature.IRec)) { const response = await iRecClient.organizationClient.getRegistrations(); iRecOrg = response.data; } const organization = params.id ? (await organizationClient.get(parseInt(params.id, 10))).data : userOffchain?.organization; if (organization) { setValues(organization); if (enabledFeatures.includes(OriginFeature.IRec)) { const owner = params.id ? parseInt(params.id, 10) : organization.id; setIRecData(iRecOrg?.filter((org) => parseInt(org.owner, 10) === owner)[0]); } } }; getOrganization(); }, [params]); if (!formValues) { return <>; } return ( <> {t('organization.registration.organizationInformation')} {formValues.documentIds?.length || formValues.signatoryDocumentIds?.length ? ( {t('organization.registration.documents')} ) : null} {formValues.documentIds && ( )} {formValues.signatoryDocumentIds && ( )} {enabledFeatures.includes(OriginFeature.IRec) && ( )} ); }