Untitled

 avatar
unknown
plain_text
a month ago
17 kB
7
Indexable
import React from 'react';
import { UX } from '@d-lift/uxcomponents';
import './AppealsStatusCard.scss';

const AppealsStatusCard = (props) => {
    const { className, data, onClick } = props;

    let ip = false;
    let su = true;

    return (
        <UX type="card" className={className} id={data?.appealId}>
            <UX type="row">
                <UX type="column">
                    {<DataModule label={'Appeal_data_header'} data={data?.appealId} />}
                </UX>
            </UX>
            <UX type="row">
                <UX type="column">
                    {<DataModule label={'Program_data_header'} data={data?.program} />}
                </UX>
                <UX type="column" className="date-sub-header">
                    {<DataModule label={'Date_sub_data_header'} data={data?.submittedDate} />}
                </UX>
            </UX>
            <hr className="mt-0" />
            <UX type="row">
                <UX
                    type="column"
                    className="col-12 col-md-6 col-lg-4 footer-btn"
                    showIf={data?.statusCode === 'IP'}>
                    <UX type="icon" className="footer-icon-hover" symbol="fa fa-pen" />
                    <UX
                        type="hyperLink"
                        link="/"
                        className="footer-link"
                        labelKey={'Edit_label'}
                        click={(e) => {
                            e.preventDefault();
                            onClick(data);
                        }}
                    />
                </UX>
                <UX
                    type="column"
                    className=" col-12 col-md-6 col-lg-4 footer-btn"
                    showIf={data?.statusCode === 'IP'}>
                    <UX type="icon" className="footer-icon-hover" symbol="fa fa-trash" />
                    <UX
                        type="hyperLink"
                        link="/"
                        className="footer-link"
                        labelKey={'Delete_label'}
                        click={(e) => {
                            e.preventDefault();
                            onClick(data);
                        }}
                    />
                </UX>
                <UX type="column" className="footer-btn" showIf={data?.statusCode === 'SU'}>
                    <UX type="icon" className="footer-icon-hover" symbol="fa fa-eye" />
                    <UX
                        type="hyperLink"
                        link="/"
                        className="footer-link"
                        labelKey={'View_label'}
                        click={(e) => {
                            e.preventDefault();
                            onClick(data);
                        }}
                    />
                </UX>
                <UX type="column" className="footer-btn pl-42" showIf={data?.statusCode === 'SU'}>
                    <UX type="icon" className="footer-icon-hover" symbol="fa fa-file-pdf" />
                    <UX
                        type="hyperLink"
                        link="/"
                        className="footer-link"
                        labelKey={'View_Pdf_label'}
                        click={(e) => {
                            e.preventDefault();
                            onClick(data);
                        }}
                    />
                </UX>
                <UX
                    type="column"
                    className="col col-lg-5 footer-btn pl-36"
                    showIf={data?.statusCode === 'SU'}>
                    <UX type="icon" className="footer-icon-hover" symbol="fa fa-file-download" />
                    <UX
                        type="hyperLink"
                        link="/"
                        className="footer-link"
                        labelKey={'Withdraw_label'}
                        click={(e) => {
                            e.preventDefault();
                            onClick(data);
                        }}
                    />
                </UX>
            </UX>
        </UX>
    );
};

export default AppealsStatusCard;

const DataModule = ({ label, data }) => {
    return (
        <>
            <UX type="para" className="data-header" labelKey={label} />
            <UX type="para" className="data-details">
                {data}
            </UX>
        </>
    );
};


import { useAppState, withPage } from '@d-lift/core';
import { AppContext, Navigate, Lift } from '@d-lift/core';
import {
    Section,
    Page,
    Header,
    Button,
    Row,
    Column,
    Para,
    Icon,
    Card,
    Modal,
} from '@d-lift/uxcomponents';
import React, { useEffect, useState } from 'react';
import ToDoCard from '@/UXModule/Card/ToDoCard/ToDoCard';
import AppealsStatusCard from '@/UXModule/Card/AppealsStatusCard/AppealsStatusCard';

const pageConfig = {
    Description: 'Appeals Dashboard Page',
    ContentManager: true,
    PageId: 'APLDB',
    PageName: 'APLDB',
    ContextRoot: 'Appeals',
    LayoutStyle: 'home',
};

const APLDB = () => {
    const [fileManageAppealsCards] = useAppState('fileManageAppealsCards', []);
    const [appealsDetailsCardsData, setAppealsDetailsCardsData] = useAppState(
        'AppealsDetailsCardData',
        [],
    );
    //const [dataLoaded, setDataLoaded] = useAppState('dataLoaded', true);
    const [ipCount, setIpCount] = useAppState('ipCount', 0);
    const [suCount, setSuCount] = useAppState('suCount', 0);

    const [deleteModal, setDeleteModal] = useAppState('deleteModal', false);
    const [viewDetails, setViewDetails] = useAppState('viewDetails', false);

    useEffect(() => {
        updateFileManageAppealsCards();
        updateAppealsDetailsCardsData();
    }, []);

    const addFileManageAppealsCardItem = (cardItem) => {
        const nextFileManageAppealCard = [...AppContext.model.getValue('fileManageAppealsCards')];
        nextFileManageAppealCard.push(cardItem);
        AppContext.model.setValue('fileManageAppealsCards', nextFileManageAppealCard);
    };

    const updateFileManageAppealsCards = () => {
        addFileManageAppealsCardItem({
            heading: 'File_appeal_heading',
            description: 'File_appeal_description',
            type: 'fileAppeal',
            linkText: 'File_appeal_link',
        });
        addFileManageAppealsCardItem({
            heading: 'Link_appeal_heading',
            description: 'Link_appeal_description',
            type: 'linkAppeal',
            linkText: 'Link_appeal_link',
        });
        addFileManageAppealsCardItem({
            heading: 'Upload_document_heading',
            description: 'Upload_document_description',
            type: 'linkAppeal',
            linkText: 'Upload_document_link',
        });
    };

    const updateAppealsDetailsCardsData = () => {
        const AppealsDetailsCardData = [
            {
                appealId: '1234567890',
                program: 'TANF',
                status: 'In Progress',
                statusCode: 'IP',
                submittedDate: '01/01/2021 12:00 PM',
            },
            {
                appealId: '1234567891',
                program: 'SNAP',
                status: 'Submitted',
                statusCode: 'SU',
                submittedDate: '01/01/2021 12:00 PM',
            },
            {
                appealId: '1234567892',
                program: 'DSNAP',
                status: 'Submitted',
                statusCode: 'SU',
                submittedDate: '01/01/2021 12:00 PM',
            },
            {
                appealId: '1234567893',
                program: 'childcare',
                status: 'Submitted',
                statusCode: 'SU',
                submittedDate: '01/01/2021 12:00 PM',
            },
        ];

        setAppealsDetailsCardsData(AppealsDetailsCardData);

        setSuCount(AppealsDetailsCardData.filter((data) => data.statusCode === 'SU').length);
        setIpCount(AppealsDetailsCardData.filter((data) => data.statusCode === 'IP').length);
    };

    const handleFileManageAppealCardClick = (data) => {
        if (data.type === 'fileAppeal') {
            Navigate.to('/Appeals/APLMR');
        }
    };

    const handleAppealDetailsCardClick = (data) => {
        setDeleteModal(true);
        console.log('AppealsDetailsCard clicked:', data);
    };

    const deleteAppealCardDetails = async () => {
        try {
            const request = {};

            setDeleteModal(false);
            Lift.spinner.show();
            // const response = await adminService.deleteAppealCardDetails({
            //     requestBody: request,
            // });

            // if (response) {
            // } else {
            // }
        } catch (error) {
        } finally {
            Lift.spinner.hide();
        }
    };

    const closeDeleteModal = () => {
        setDeleteModal(false);
    };

    const handleViewDetails = (data) => {
        setViewDetails(true);
        console.log('Appeals View Details clicked:', data);
    };

    const closeViewDetails = () => {
        setViewDetails(false);
    };

    return (
        <Page>
            <Section className="container">
                <Row>
                    <Column>
                        <Header labelKey="Appeals_dashboard_header_1" />
                        <Para labelKey="Appeals_dashboard_sub_heading_1"></Para>
                        {fileManageAppealsCards?.map((cardData, index) => (
                            <ToDoCard
                                key={`fileManageAppealsCards_${index}`}
                                className="mb-4"
                                data={cardData}
                                onClick={() => handleFileManageAppealCardClick(cardData)}
                            />
                        ))}
                    </Column>
                    <Column>
                        <Header labelKey="Appeals_dashboard_header_2" />

                        <div style={{ display: 'flex', alignItems: 'center' }}>
                            <Para
                                className="status-heading"
                                labelKey="Appeals_dashboard_inprogress_heading"
                            />
                            <Para className="mb-3 status-heading">{'(' + ipCount + ')'}</Para>
                        </div>

                        {appealsDetailsCardsData?.map((cardData, index) => (
                            <AppealsStatusCard
                                key={`AppealsDetailsCardData_${index}`}
                                className="mb-4"
                                data={cardData}
                                onClick={() => handleAppealDetailsCardClick(cardData)}
                                showIf="{AppealsDetail.statusCode === 'IP' && dataLoaded}"
                            />
                        ))}

                        <Card className="mb-4 justify-items" showIf="{!dataLoaded}">
                            <Para
                                className="mb-0 status-heading"
                                labelKey="inprogress_empty_text"
                            />
                        </Card>
                        <div style={{ display: 'flex', alignItems: 'center' }}>
                            <Para
                                className="status-heading"
                                labelKey="Appeals_dashboard_submitted_heading"
                            />
                            <Para className="mb-3 status-heading">{'(' + suCount + ')'}</Para>
                        </div>

                        {appealsDetailsCardsData?.map((cardData, index) => (
                            <AppealsStatusCard
                                key={`AppealsStatusCardData_${index}`}
                                className="mb-4"
                                data={cardData}
                                //onClick={() => handleAppealDetailsCardClick(cardData)}
                                onClick={() => handleViewDetails(cardData)}
                                showIf="{AppealsDetail.statusCode === 'SU' && dataLoaded}"
                            />
                        ))}

                        <Card className="mb-4 justify-items" showIf="{!dataLoaded}">
                            <Para className="mb-0 status-heading" labelKey="submitted_empty_text" />
                        </Card>

                        <Modal isOpen={deleteModal}>
                            <div className="d-flex justify-content-center mb-3">
                                <Icon
                                    symbol="fa fa-exclamation-circle"
                                    aria-hidden="true"
                                    //style={{ 'font-size': '0.2em' }}
                                />
                            </div>

                            <Header className="mb-3" labelKey="delete_notification" />

                            <div style={{ display: 'flex', alignItems: 'center' }}>
                                <Column>
                                    <Row>
                                        {' '}
                                        <Button
                                            className="col-auto mx-2 mb-2"
                                            labelKey="cancel_btn"
                                            click={closeDeleteModal}
                                        />
                                    </Row>
                                    <Row>
                                        <Button
                                            className="col-auto mx-2"
                                            labelKey="delete_btn"
                                            click={deleteAppealCardDetails}
                                        />
                                    </Row>
                                </Column>
                            </div>
                        </Modal>
                        <Modal isOpen={viewDetails}>
                            <div style={{ display: 'flex', justifyContent: 'center' }}>
                                <Header
                                    className="mb-3 float-right"
                                    labelKey="appeal_status_header1"
                                />
                            </div>
                            <Header size="2" className="mb-3 " labelKey="appeal_status_header2" />

                            <Para labelKey="draft_label" />
                            <Para labelKey="draft_text" />

                            <Para labelKey="inprogress_label" />
                            <Para labelKey="inprogress_text" />

                            <Para labelKey="hearing_label" />
                            <Para labelKey="hearing_text" />

                            <Para labelKey="hearingInprogress_label" />
                            <Para labelKey="hearingInprogress_text" />

                            <Para labelKey="administrativeDecision_label" />
                            <Para labelKey="administrativeDecision_text" />

                            <Para labelKey="decisionIssued_label" />
                            <Para labelKey="decisionIssued_text" />

                            <Para labelKey="rescheduledHearing_label" />
                            <Para labelKey="rescheduledHearing_text" />

                            <Para labelKey="petition_label" />
                            <Para labelKey="petition_text" />

                            <Para labelKey="closed_label" />
                            <Para labelKey="closed_text" />

                            <div style={{ display: 'flex', alignItems: 'center' }}>
                                <Button
                                    className="col-auto mx-2 mb-2"
                                    labelKey="okay_btn"
                                    click={closeViewDetails}
                                />
                            </div>
                        </Modal>
                    </Column>
                </Row>
            </Section>
        </Page>
    );
};

export default withPage(pageConfig, APLDB);


in the above code we are able to send only one func as  onClick={() => handleAppealDetailsCardClick(cardData)} to AppealsStatusCard, but update the code to send the handleAppealDetailsCardClick for delete functionality and handleEditAppealDetailsCardClick() for when clcked on edit
Editor is loading...
Leave a Comment