Skip to content

Commit

Permalink
Merge pull request #612 from urfit-tech/fix/adjust-ExternalLinkAdminM…
Browse files Browse the repository at this point in the history
…odalBlock-and-ProgramPackageProgramConnectionModal
  • Loading branch information
TedxTed authored and Logos50607 committed Jan 14, 2025
1 parent 750e080 commit 5cfa7d1
Show file tree
Hide file tree
Showing 12 changed files with 380 additions and 25 deletions.
26 changes: 15 additions & 11 deletions src/components/program/ExternalLinkAdminModalBlock.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import programMessages from './translation'
import { useMutateProgramContent } from '../../hooks/program'
import { handleError } from '../../helpers'
import { useApp } from 'lodestar-app-element/src/contexts/AppContext'
import dayjs, { Dayjs } from 'dayjs'
import { useState } from 'react'
import { commonMessages } from '../../helpers/translation'
import moment, { Moment } from 'moment'

type FieldProps = {
title: string
Expand All @@ -23,11 +23,11 @@ type FieldProps = {
ratio: number
isOn: boolean
displayMode: DisplayMode
publishedAt: Dayjs
publishedAt: Moment
assessmentId: string
}

const linkMap = {
assessment: 'exam',
accessLinks: 'test',
}

Expand Down Expand Up @@ -86,6 +86,11 @@ const ExternalLinkAdminModalBlock: React.FC<{
isNotifyUpdate: false,
pinnedStatus: false,
displayMode: values.displayMode,
publishedAt: values.publishedAt
? values.publishedAt.toDate()
: values.displayMode !== 'conceal'
? new Date()
: null,
},
})
await updateProgramContentBody({
Expand All @@ -94,14 +99,9 @@ const ExternalLinkAdminModalBlock: React.FC<{
data: {
trigger: 'externalTestRequirement',
parameters: {
assessment: values.link.filter(item => item.type === 'exam').map(item => item.url),
assessmentId: values.assessmentId,
accessLinks: values.link.filter(item => item.type === 'test').map(item => item.url),
programPackageCompleteRatio: values.ratio,
publishedAt: values.publishedAt
? values.publishedAt.toDate()
: values.displayMode !== 'conceal'
? new Date()
: null,
},
isOn: values.isOn,
},
Expand All @@ -126,10 +126,11 @@ const ExternalLinkAdminModalBlock: React.FC<{
layout="vertical"
initialValues={{
title: programContent.title || '',
assessmentId: programContent?.programContentBody?.data?.parameters?.assessmentId,
displayMode: programContent.displayMode,
isOn: programContent?.programContentBody?.data?.isOn ?? true,
ratio: programContent?.programContentBody?.data?.parameters?.programPackageCompleteRatio || 0,
publishedAt: programContent.publishedAt ? dayjs(programContent.publishedAt) : dayjs().startOf('minute'),
publishedAt: programContent.publishedAt ? moment(programContent.publishedAt) : moment().startOf('minute'),
link: transformedData || [{ amount: 1 }],
}}
onFinish={handleSubmit}
Expand Down Expand Up @@ -192,7 +193,10 @@ const ExternalLinkAdminModalBlock: React.FC<{
<Form.Item label={formatMessage(programMessages.ExternalLinkForm.title)} name="title">
<Input />
</Form.Item>
<Form.Item label={formatMessage(programMessages.ExternalLinkForm.link)}>
<Form.Item label={formatMessage(programMessages.ExternalLinkForm.examLink)} name="assessmentId">
<Input />
</Form.Item>
<Form.Item label={formatMessage(programMessages.ExternalLinkForm.links)}>
<Form.List name="link">
{(fields, { add, remove }) => (
<div>
Expand Down
3 changes: 2 additions & 1 deletion src/components/program/translation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,8 @@ const programMessages = {
}),
ExternalLinkForm: defineMessages({
title: { id: 'program.ExternalLinkForm.title', defaultMessage: 'Examination paper name' },
link: { id: 'program.ExternalLinkForm.link', defaultMessage: 'Exam paper/test link' },
links: { id: 'program.ExternalLinkForm.links', defaultMessage: 'Test Links' },
examLink: { id: 'program.ExternalLinkForm.examLink', defaultMessage: 'Exam Link' },
typeLabel: { id: 'program.ExternalLinkForm.typeLabel', defaultMessage: 'Type' },
linkLabel: { id: 'program.ExternalLinkForm.linkLabel', defaultMessage: 'Link' },
programPackageCompleteRatio: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ const ProgramPackageProgramConnectionModal: React.FC<{
const [form] = useForm<FieldProps>()
const { id: appId } = useApp()
const { availablePrograms } = useGetAvailableProgramCollection(appId)
const { includesBodyTypePrograms } = useGetIncludesBodyTypeProgramCollection(appId, 'link')
const { includesBodyTypePrograms, refetch: refetchInCludesBodyTypeProgramCollection } =
useGetIncludesBodyTypeProgramCollection(appId, 'link')
const [insertProgramPackageProgram] = useMutation<
hasura.INSERT_PROGRAM_PACKAGE_PROGRAM,
hasura.INSERT_PROGRAM_PACKAGE_PROGRAMVariables
Expand All @@ -41,23 +42,31 @@ const ProgramPackageProgramConnectionModal: React.FC<{
.then(() => {
setLoading(true)
const values = form.getFieldsValue()
const programsId = values.programValues.map((value: string) => value.split('_')[0])
const programsIds = values.programValues.map((value: string) => value.split('_')[0])
const matchBodyTypeIncludesLinkPrograms = availablePrograms
.filter(program => programsIds.includes(program.id))
.filter(program => program.programContentBody.includes('link'))
if (matchBodyTypeIncludesLinkPrograms.length > 1) {
setLoading(false)
return window.alert(formatMessage(programPackageMessages.alertMessage.oneLinkError))
}
insertProgramPackageProgram({
variables: {
programs: programsId.map((programId: string, index: number) => ({
programs: programsIds.map((programId: string, index: number) => ({
program_package_id: programPackageId,
program_id: programId,
position: index,
})),
delete_program_package_programs_id: programs
.filter(program => !programsId.includes(program.id))
.filter(program => !programsIds.includes(program.id))
.map(program => program.programPackageProgramId),
},
})
.then(() => {
message.success(formatMessage(commonMessages.event.successfullySaved))
setVisible(false)
onRefetch?.()
refetchInCludesBodyTypeProgramCollection()
})
.catch(handleError)
.finally(() => setLoading(false))
Expand Down Expand Up @@ -155,6 +164,13 @@ const useGetAvailableProgramCollection = (appId: string) => {
title
is_subscription
published_at
program_content_sections {
program_contents {
program_content_body {
type
}
}
}
}
}
`,
Expand All @@ -166,6 +182,7 @@ const useGetAvailableProgramCollection = (appId: string) => {
title: string | null
isSubscription: boolean
publishedAt: string
programContentBody: (string | null | undefined)[]
}[] =
loading || error || !data
? []
Expand All @@ -174,6 +191,9 @@ const useGetAvailableProgramCollection = (appId: string) => {
title: program.title || '',
isSubscription: program.is_subscription,
publishedAt: program.published_at,
programContentBody: program.program_content_sections
.map(section => section.program_contents.map(content => content.program_content_body.type))
.flat(),
}))
return {
loading,
Expand All @@ -184,7 +204,7 @@ const useGetAvailableProgramCollection = (appId: string) => {
}

const useGetIncludesBodyTypeProgramCollection = (appId: string, includesBodyType: string) => {
const { loading, error, data } = useQuery<
const { loading, error, data, refetch } = useQuery<
hasura.GetIncludesBodyTypeProgramCollection,
hasura.GetIncludesBodyTypeProgramCollectionVariables
>(
Expand Down Expand Up @@ -239,6 +259,7 @@ const useGetIncludesBodyTypeProgramCollection = (appId: string, includesBodyType

return {
includesBodyTypePrograms,
refetch,
}
}

Expand Down
Loading

0 comments on commit 5cfa7d1

Please sign in to comment.