Untitled

 avatar
unknown
plain_text
25 days ago
13 kB
5
Indexable
import React, { useEffect } from 'react';
import {
    Section,
    Page,
    Header,
    Date,
    Card,
    Textarea,
    List,
    ListItem,
    Selectbox,
} from '@d-lift/uxcomponents';
import { Navigate, withPage, useAppState, AppContext } from '@d-lift/core';
import PageData from '@/UXModule/bcDesktopWayfinder/aplDesktopWayfinderData.json';
import CPUtil from '@/Util/CPUtil';
import ButtonNavigation from '@/UXModule/ButtonNavigation/ButtonNavigation';
import ConstantKeys from '@/Constants/ConstantKeys';
import dataAdapter from '@/Adapters/DataAdapter';

const pageConfig = {
    PageName: 'APLPR',
    Description: 'Program And Reason Page',
    ContextRoot: 'Appeals',
    ContentManager: true,
    PageType: 'workflow',
    WorkFlowNavigation: true,
    TemplateOptions: { cardWorkflow: true },
    pageId: 'APLPR',
    ShowTitle: false,
    SaveAndExitActionUrl: '/APLPR/APLPRLoad',
    PersistActionUrl: '/APLPR/APLPRNext',
};

const APLPR = () => {
    useEffect(() => {
        CPUtil.setValueInAppcontext('currentStep', 2);
        CPUtil.setValueInAppcontext('wayFinderSteps', PageData);

        //APLPRLoadData();
    }, []);

    const APLPRLoadData = () => {
        dataAdapter
            .invokeSummaryLoad({}, AppContext.pagedetails.getPageConfig().saveAndExitActionUrl)
            .then((response) => {
                let success = dataAdapter.validateServiceResponse(response);
                if (success) {
                    let appealId = response?.data?.appealId;
                    console.log('data from APLPRLoad', appealId);
                    setAppealId(appealId);
                }
            });
    };

    const defaultData = {
        programCd: '',
        programReasonCd: '',
        noticeAppealingDate: '',
        appealApplyDate: '',
        otherReason: '',
    };
    const [APLPR] = useAppState('APLPR', defaultData);
    const [appealId, setAppealId] = useAppState('appealId', '796cfb5b-f7f1-4329-a4c1-9c50b7050a0a');
    //const [appealId, setAppealId] = useAppState('appealId', ''); uncomment once APLPRLoad is working

    const onNext = () => {
        let data = AppContext.model.getValue(AppContext.pagedetails.getPageConfig().pageId);
        if (!AppContext.model.getValue('errorMsg')) {
            dataAdapter.invokeAppealPresist(
                { ...data, appealId },
                AppContext.pagedetails.getPageConfig().persistActionUrl,
                appealId,
            );
        }
        CPUtil.setValueInAppcontext('currentStep', 3);
        Navigate.to('/Appeals/AppealsContinuationOfBenefits/APLCB');
    };

    const onBack = () => {
        Navigate.to('/Appeals/AppealsMoreAbout/APLMR');
    };

    return (
        <Page ref-table-list="APPG_11006 ,  APPR_11005,APPR_11005:1, APPR_11005:2">
            <Section className="container">
                <Header labelKey="Appeals_program_reason_header" />
                <Header
                    header-size="2"
                    className="mt-4"
                    labelKey="Appeals_program_selection_sub_header"
                />

                <Selectbox
                    id="program_selection"
                    labelKey="Appeals_program_selection_dropdown_title"
                    defaultOption="true"
                    defaultOptionValue="SEL"
                    defaultOptionLabelKey="common_selectone"
                    model="APLPR.programCd"
                    ref-table="APPG_11006"
                    optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
                    optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
                    required="{true}"
                    validationRules="required"
                    errormessages='{{"required": "common_mandatory_error"}}'
                />
                <Selectbox
                    id="appeal_reason"
                    labelKey="Appeals_program_selection_reason_dropdown_title"
                    defaultOption="true"
                    defaultOptionValue="SEL"
                    defaultOptionLabelKey="common_selectone"
                    model="APLPR.programReasonCd"
                    ref-table="APPR_11005:1"
                    showIf={AppContext.model.getValue('APLPR.programCd') === 'snap'}
                    optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
                    optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
                    required="{true}"
                    validationRules="required"
                    errormessages='{{"required": "common_mandatory_error"}}'
                />
                <Selectbox
                    id="appeal_reason"
                    labelKey="Appeals_program_selection_reason_dropdown_title"
                    defaultOption="true"
                    defaultOptionValue="SEL"
                    defaultOptionLabelKey="common_selectone"
                    model="APLPR.programReasonCd"
                    ref-table="APPR_11005:2"
                    showIf={AppContext.model.getValue('APLPR.programCd') === 'ff'}
                    optionLabel={ConstantKeys.REF_TABLE_COLS.DESCRIPTION}
                    optionValue={ConstantKeys.REF_TABLE_COLS.CODE}
                    required="{true}"
                    validationRules="required"
                    errormessages='{{"required": "common_mandatory_error"}}'
                />
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd') === 'AP'}>
                    <Card className="application-pending-info-card mt-4 mb-4">
                        <Header size="2" labelKey="Application_pending_info_title" />
                        <List className="application-pending-info-list mb-0">
                            <ListItem labelKey="Application_pending_info_text1" />
                            <ListItem labelKey="Application_pending_info_text2" />
                        </List>
                    </Card>
                </Section>
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd') === 'CLB'}>
                    <Card className="application-pending-info-card mt-4 mb-4">
                        <Header size="2" labelKey="benefits_level_info_title" />
                        <List className="application-pending-info-list mb-0">
                            <ListItem labelKey="benefits_level_info_text1" />
                        </List>
                    </Card>
                </Section>
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd') === 'CL'}>
                    <Card className="application-pending-info-card mt-4 mb-4">
                        <Header size="2" labelKey="claims_info_title" />
                        <List className="application-pending-info-list mb-0">
                            <ListItem labelKey="claims_info_text1" />
                        </List>
                    </Card>
                </Section>
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd') === 'DEAP'}>
                    <Card className="application-pending-info-card mt-4 mb-4">
                        <Header size="2" labelKey="denied_appl_info_title" />
                        <List className="application-pending-info-list mb-0">
                            <ListItem labelKey="denied_appl_info_text1" />
                        </List>
                    </Card>
                </Section>
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd') === 'TE'}>
                    <Card className="application-pending-info-card mt-4 mb-4">
                        <Header size="2" labelKey="termination_info_title" />
                        <List className="application-pending-info-list mb-0">
                            <ListItem labelKey="termination_info_text1" />
                        </List>
                    </Card>
                </Section>
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd') === 'LB'}>
                    <Card className="application-pending-info-card mt-4 mb-4">
                        <Header size="2" labelKey="lossOfBenefits_info_title" />
                        <List className="application-pending-info-list mb-0">
                            <ListItem labelKey="lossOfBenefits_info_text1" />
                        </List>
                    </Card>
                </Section>

                <Header size="2" labelKey="Appeals_additional_details_header" />
                <Section showIf={AppContext.model.getValue('APLPR.programReasonCd')}>
                    <Date
                        id="noticeDate"
                        labelKey="notice_date_text"
                        model="APLPR.noticeAppealingDate"
                        monthDropdown
                        yearDropdown
                    />
                    <Date
                        id="noticeDate"
                        labelKey="apply_date_text"
                        model="APLPR.appealApplyDate"
                        monthDropdown
                        yearDropdown
                    />
                </Section>
                <Header size="3" labelKey="Tell_us_why_textbox_title" />
                <Textarea
                    labelKey="Maximum_characters"
                    rows="9"
                    maxLength="2000"
                    showRemaining
                    charRemainingKey="common_char_remaining_text"
                    model="APLPR.otherReason"
                    calculateLength="{CPUtil.getTextLengthInBytes}"
                    validationRules="max_length_in_bytes_2000"
                    errormessages='{{ max_length_in_bytes_2000: "common_length_validation"}}'
                    change="{(e)=>CPUtil.handleSpclCharsInTextArea(e)}"
                    truncate="true"
                />
            </Section>
            <ButtonNavigation onNext={onNext} onBack={onBack} />
        </Page>
    );
};

export default withPage(pageConfig, APLPR);



 invokeAppealPresist = async (data, presistActionUrl) => {
        try {
            CPUtil.showSpinner();
            let pageAction = this.getPageAction(presistActionUrl);
            let serviceContextUrl = this.getServiceUrlContext(pageAction.pageId);
            let dataJson = this.createAppealRequest(
                serviceContextUrl.serviceContext,
                pageAction,
                data.appealId,
            );
            let serviceResponse = await CPUtil.HTTP.post(
                serviceContextUrl.baseUrl + presistActionUrl,
                dataJson,
            );
            CPUtil.hideSpinner();
            let success = dataAdapter.validateServiceResponse(serviceResponse);
            if (success) {
                DriverUtil.navigateToNext(AppContext.pagedetails.getPageConfig().pageId);
            }

            return serviceResponse;
        } catch (exceptionObject) {
            throw this.exceptionHandling(exceptionObject);
        } finally {
            CPUtil.hideSpinner();
        }
    };



    createAppealRequest(serviceContext, pageAction, appealId) {
        let request = {};

        let pageId = AppContext.pagedetails.getPageConfig().pageId;
        let model = AppContext.model.getValue(pageId);

        // serviceContext
        request.serviceContext = serviceContext;

        // userDetails
        let userDetails = {
            loginUserId:
                AppContext.security.getProfile()._id ||
                CPUtil.getValueFromAppContext(ApplicationConstants.ANONYMOUS_TOKEN),
            appNumber: PSUtil.getAppNum(),
        };
        request.userDetails = userDetails;

        // currentActionDetails
        let currentActionDetails = {
            pageId: pageAction.pageId,
            pageAction: pageAction.pageAction,
            indvSeqDetails: {},
        };
        request.currentActionDetails = currentActionDetails;

        // pageCollection
        request.pageCollection = {
            appealId: appealId || '', // Default to empty string if not found
            AppealsProgram_Collection: {
                programCd: model.programCd || '',
                programReasonCd: model.programReasonCd || '',
            },
        };

        return request;
    }


    update the above code for the createAppealRequest function , so that it takes the AppealsProgram_Collection whatever is sent from APLPR.jsx, and is not consistent or made fixed as above. this function needs to reusable so that whatever the AppealsProgram_Collection is, it will work
Editor is loading...
Leave a Comment