import { useSelector } from "react-redux"; import { AppState } from "@/state/reducer"; import { getSubmissionStatus, SubmissionState, SubmissionStatus } from "@/state/reducer/submission"; import { useTranslation } from "react-i18next"; import { Box, Button, ButtonProps, Dialog, DialogContent, DialogProps, DialogTitle, StepProps, Typography } from "@material-ui/core"; import { FileFind, FileUploadOutline } from "mdi-material-ui/index"; import { route } from "@/routing"; import { Link as RouterLink } from "react-router-dom"; import { Actions, Step } from "@/components"; import React, { HTMLProps, useState } from "react"; import { Alert, AlertTitle } from "@material-ui/lab"; import { ContactButton, Status } from "@/pages/steps/common"; import { useCurrentEdition, useDeadlines } from "@/hooks"; import { useSpacing } from "@/styles"; import { MultiChoiceValue, Report, ReportSchema, SingleChoiceValue, TextFieldValue } from "@/data/report"; import { createPortal } from "react-dom"; import { getInternshipReport } from "@/state/reducer/report"; import { Edition } from "@/data/edition"; import { FileInfo } from "@/components/fileinfo"; import { InternshipDocument } from "@/api/dto/internship-registration"; export type ReportPreviewProps = { schema: ReportSchema, report: Report, } export const ReportPreview = ({ schema, report }: ReportPreviewProps) => { return <>{ schema.map(field => { const value = report.fields[`field_${ field.id }`]; const { t } = useTranslation(); const Value = () => { switch (field.type) { case "checkbox": return case "radio": case "select": return
{ (value as SingleChoiceValue).pl }
case "long-text": case "short-text": return

{ value as TextFieldValue }

} } return <> { field.label.pl } { value ? : t("no-value") } }) } } export type ReportPreviewDialogProps = { report: Report; } & DialogProps; export const ReportPreviewDialog = ({ report, ...props }: ReportPreviewDialogProps) => { const edition = useCurrentEdition() as Edition; const schema = edition.schema || []; const { t } = useTranslation(); return { t("steps.report.header") } } const ReportActions = () => { const status = useSelector(state => getSubmissionStatus(state.report)); const { t } = useTranslation(); const FormAction = ({ children = t('steps.report.submit'), ...props }: ButtonProps) => const ReviewAction = (props: ButtonProps) => { const [open, setOpen,] = useState(false); const report = useSelector(state => getInternshipReport(state.report) as Report); return <> { createPortal( setOpen(false) }/>, document.getElementById("modals") as Element, ) } } switch (status) { case "awaiting": return { t('send-again') } case "accepted": return { t('send-again') } case "declined": return { t('send-again') } case "draft": return default: return } } export const ReportComment = (props: HTMLProps) => { const { comment, declined } = useSelector(state => state.report); const { t } = useTranslation(); return comment ? { t('comments') }
: null } export const ReportStep = (props: StepProps) => { const { t } = useTranslation(); const submission = useSelector(state => state.report); const evaluation = useSelector(state => state.report.evaluation); const spacing = useSpacing(2); const edition = useCurrentEdition(); const status = getSubmissionStatus(submission); const deadlines = useDeadlines(); const { sent, declined, comment } = submission; return }>

{ t(`steps.report.info.${ status }`) }

{ evaluation && }
; }