Skip to content

Commit

Permalink
feat: improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
baptadn committed Jan 21, 2025
1 parent 55e19a8 commit 7988372
Show file tree
Hide file tree
Showing 8 changed files with 68 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ const ApplicationPlaceList = ({ applications = [] }: Props) => {
(application) => application?.status === 'preselected',
)

const validatedApplications = applications?.filter(
(application) => application?.status === 'confirmed',
).length

const hasValidatedApplications =
selectedCampaign?.mode === 'preselections' && validatedApplications > 0

const filteredList = useMemo(
() =>
list.filter((application) => {
Expand Down Expand Up @@ -139,6 +146,7 @@ const ApplicationPlaceList = ({ applications = [] }: Props) => {
isOpen={isOpen}
onClose={onClose}
application={selectedApplication}
hasValidatedApplications={hasValidatedApplications}
canPreselect={
preselectedApplications?.length <
selectedCampaign?.preselections_max &&
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ const ApplicationPlaceListItem = ({ application, onSelect }: Props) => {
</Cell>
{['preselections', 'closed']?.includes(selectedCampaign?.mode) && (
<Cell cursor="default">
<HStack spacing={2}>
<HStack spacing={2} width="100%" justifyContent="flex-end">
<ApplicationCountAlert applicationId={application?.id} onlyIcon />
<ApplicationDownloadButton application={application} />
<Button
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Box, HStack, Text } from '@chakra-ui/react'
import PreselectionsValidated from 'public/assets/img/preselectionsValidated.svg'
import { useTranslation } from 'next-i18next'
import PreselectionsValidated from 'public/assets/img/preselectionsValidated.svg'

const ValidatedSelections = () => {
const { t } = useTranslation('application')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,13 @@ const ApplicationDetailDrawer = ({
onClose,
application,
canPreselect,
hasValidatedApplications,
}: {
isOpen: boolean
onClose: () => void
application: Application
canPreselect: boolean
hasValidatedApplications: boolean
}) => {
const { t } = useTranslation('application')
const { id } = application ?? {}
Expand Down Expand Up @@ -110,6 +112,7 @@ const ApplicationDetailDrawer = ({
canPreselect={canPreselect}
handleDownload={handleDownload}
isDownloading={isDownloading}
hasValidatedApplications={hasValidatedApplications}
/>
</GridItem>
</Grid>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ import { Application } from '~typings/api'
const ApplicationPreselectButton = ({
application,
canPreselect,
hasValidatedApplications,
}: {
application: Application
canPreselect: boolean
hasValidatedApplications: boolean
}) => {
const { t } = useTranslation('application')
const { errorToast, successToast } = useToast()
Expand Down Expand Up @@ -82,32 +84,44 @@ const ApplicationPreselectButton = ({
)}

{application?.status === null && (
<Button
isFullWidth
borderRadius={0}
leftIcon={<ApplicationSelected />}
display="flex"
justifyContent={'flex-start'}
p={3}
backgroundColor={'rgba(110, 174, 127, 0.25)'}
color="black"
_hover={{
backgroundColor: 'rgba(110, 174, 127, 0.4)',
}}
_active={{
backgroundColor: 'rgba(110, 174, 127, 0.6)',
}}
height="auto!important"
onClick={() => {
handleStatusChange('preselected')
}}
isDisabled={!canPreselect || application?.status === 'confirmed'}
>
<Text pl={1}>{t('place.detail.preselect')}</Text>
</Button>
<>
<Button
isFullWidth
borderRadius={0}
leftIcon={<ApplicationSelected />}
display="flex"
justifyContent={'flex-start'}
p={3}
backgroundColor={'rgba(110, 174, 127, 0.25)'}
color="black"
_hover={{
backgroundColor: 'rgba(110, 174, 127, 0.4)',
}}
_active={{
backgroundColor: 'rgba(110, 174, 127, 0.6)',
}}
height="auto!important"
onClick={() => {
handleStatusChange('preselected')
}}
isDisabled={
!canPreselect ||
application?.status === 'confirmed' ||
hasValidatedApplications
}
>
<Text pl={1}>{t('place.detail.preselect')}</Text>
</Button>

{!canPreselect && (
<Text pl={1} color="gray.500">
{t('place.preselected_limit_reached')}
</Text>
)}
</>
)}

{application?.status === 'confirmed' && (
{(application?.status === 'confirmed' || hasValidatedApplications) && (
<Box color="gray.500">
<Text as="span">{t('place.detail.confirmed_helper_start')}</Text>
<Text
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ const ApplicationRightPanel = ({
canPreselect,
handleDownload,
isDownloading,
hasValidatedApplications,
}: {
application: Application
canPreselect: boolean
handleDownload: () => void
isDownloading?: boolean
hasValidatedApplications: boolean
}) => {
const { t } = useTranslation('application')

Expand Down Expand Up @@ -48,6 +50,7 @@ const ApplicationRightPanel = ({
<ApplicationPreselectButton
application={application}
canPreselect={canPreselect}
hasValidatedApplications={hasValidatedApplications}
/>
</VStack>
<ApplicationCountAlert applicationId={application.id} />
Expand Down
16 changes: 13 additions & 3 deletions web/pages/api/pdfs/campaign/[id].tsx
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ const buildApplicationsSpreadsheet = async (applications: Application[]) => {
'Site web',
'Espace - Candidature',
'Créneau - Candidature',
'Statut - Candidature',
]

const headerRow = worksheet.addRow(headers)
Expand Down Expand Up @@ -114,6 +115,7 @@ const buildApplicationsSpreadsheet = async (applications: Application[]) => {
? `${application.disponibility.espace.users_permissions_user.structureName} - ${application.espace.name}`
: '-',
range,
application.status,
])

row.eachCell((cell) => {
Expand Down Expand Up @@ -257,6 +259,7 @@ const buildSummarySpreadsheet = async (
`Nom de l'espace`,
`Créneaux proposés`,
withAllApplications ? `Candidatures` : `Sélection finale`,
`Référence candidature`,
`Communication`,
`Contact`,
]
Expand Down Expand Up @@ -287,11 +290,16 @@ const buildSummarySpreadsheet = async (
espaceCount++
disponibilityCount++

const counterApplications = applicationsCounter[application.title]

const row = worksheet.addRow([
place.structureName,
espace.name,
disponibility.range,
application.name,
`${application.name}${
counterApplications > 1 ? ` - ${counterApplications}` : ''
}`,
`Ref. ${application.id}`,
'',
application.email,
])
Expand All @@ -305,7 +313,9 @@ const buildSummarySpreadsheet = async (
}

applicationCell.value = {
text: application.name,
text: `${application.name}${
counterApplications > 1 ? ` - ${counterApplications}` : ''
}`,
hyperlink: getApplicationLink(application.id),
}

Expand All @@ -314,7 +324,7 @@ const buildSummarySpreadsheet = async (
italic: true,
}

if (applicationsCounter[application.title] > 1) {
if (counterApplications > 1) {
applicationCell.fill = {
type: 'pattern',
pattern: 'solid',
Expand Down
1 change: 1 addition & 0 deletions web/public/locales/fr/application.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@
"no_places": "Aucun de vos espaces ne propose de créneau pour ce dispositif",
"no_applications": "Aucune candidature déposée pour ce créneau pour le moment.",
"no_applications_past": "Aucune candidature n'a été déposée pour ce créneau.",
"preselected_limit_reached": "Vous avez atteint la limite de candidatures à pré-sélectionner, annuler la sélection de l'une de ces candidatures afin de pouvoir sélectionner celle-ci.",
"detail": {
"title": "Candidature n°{{id}}",
"header": {
Expand Down

0 comments on commit 7988372

Please sign in to comment.