Skip to content
Snippets Groups Projects
Commit 2f74eea8 authored by Andreas Ellewsen's avatar Andreas Ellewsen
Browse files

Merge branch 'validate-roletype-ou' into 'master'

Make type and ou choices required in new role form

See merge request !293
parents 9ef2ae46 cdc62c2e
No related branches found
No related tags found
1 merge request!293Make type and ou choices required in new role form
Pipeline #119388 canceled
......@@ -116,6 +116,8 @@
"invalidEmail": "Invalid e-mail address",
"passportNumberRequired": "Passport number required",
"mobilePhoneRequired": "Mobile phone is required",
"typeMustBeChosen": "Role is required",
"ouMustBeChosen": "Organisation is required",
"startDateMustBeSet": "Start date must be set",
"startDateMustBeBeforeEndDate": "Start date has to be before end date",
"phoneNumberAndCountryCode": "Both country code and phone number must be set",
......
......@@ -116,6 +116,8 @@
"invalidEmail": "Ugyldig e-postadresse",
"passportNumberRequired": "Passnummer er obligatorisk",
"mobilePhoneRequired": "Mobilnummer er obligatorisk",
"typeMustBeChosen": "Gjesterolle er obligatorisk",
"ouMustBeChosen": "Organisasjon er obligatorisk",
"startDateMustBeSet": "Startdato må være satt",
"startDateMustBeBeforeEndDate": "Startdato må være før sluttdato",
"phoneNumberAndCountryCode": "Både landkode og telefonnummer må være satt",
......
......@@ -116,6 +116,8 @@
"invalidEmail": "Ugyldig e-postadresse",
"passportNumberRequired": "Passnummer er obligatorisk",
"mobilePhoneRequired": "Mobilnummer er obligatorisk",
"typeMustBeChosen": "Gjesterolle er obligatorisk",
"ouMustBeChosen": "Organisasjon er obligatorisk",
"startDateMustBeSet": "Startdato må vere satt",
"startDateMustBeBeforeEndDate": "Startdato må vere før sluttdato",
"phoneNumberAndCountryCode": "Både landkode og telefonnummer må vere satt",
......
......@@ -18,6 +18,7 @@ import {
FormControlLabel,
Box,
Typography,
FormHelperText,
} from '@mui/material'
import Page from 'components/page'
import { Guest } from 'interfaces'
......@@ -175,7 +176,10 @@ function NewGuestRole({ guest, reloadGuestInfo }: NewGuestRoleProps) {
</MenuItem>
)
}
const hasRoleTypeError =
errors && errors.type && errors.type.type === 'required'
const hasOuChoiceError =
errors && errors.orgunit && errors.orgunit.type === 'required'
return (
<Page>
<SponsorInfoButtons
......@@ -190,41 +194,68 @@ function NewGuestRole({ guest, reloadGuestInfo }: NewGuestRoleProps) {
</Typography>
<form onSubmit={onSubmit}>
<Stack spacing={2}>
<FormControl>
<InputLabel id="roletype-select-label">
{t('input.roleType')}
</InputLabel>
<Select
id="roletype-select"
defaultValue=""
value={roleTypeChoice}
error={!!errors.type}
label={t('input.roleType')}
onChange={handleRoleTypeChange}
>
{(roleTypes === undefined ? [] : roleTypes)
.sort(roleTypeSort())
.map((rt) => rolesToItem(rt))}
</Select>
</FormControl>
<Controller
name="type"
control={control}
rules={{ required: true }}
render={() => (
<FormControl error={hasRoleTypeError}>
<InputLabel id="roletype-select-label">
{t('input.roleType')}
</InputLabel>
<Select
id="roletype-select"
defaultValue=""
value={roleTypeChoice}
error={!!errors.type}
label={t('input.roleType')}
onChange={handleRoleTypeChange}
>
{(roleTypes === undefined ? [] : roleTypes)
.sort(roleTypeSort())
.map((rt) => rolesToItem(rt))}
</Select>
</FormControl>
)}
/>
{hasRoleTypeError && (
<FormHelperText error>
{t('validation.typeMustBeChosen')}
</FormHelperText>
)}
<Controller
name="orgunit"
control={control}
rules={{ required: true }}
render={() => (
<FormControl error={hasOuChoiceError}>
<InputLabel id="ou-select-label-id">
{t('common:ou')}
</InputLabel>
<Select
labelId="ou-select-label"
id="ou-select-label"
defaultValue=""
value={ouChoice.toString()}
label={t('common:ou')}
onChange={handleOuChange}
>
{ous !== undefined &&
ous.length > 0 &&
ous
.sort(i18n.language === 'en' ? enSort : nbSort)
.map((ou) => ouToItem(ou))}
</Select>
</FormControl>
)}
/>
{hasOuChoiceError && (
<FormHelperText error>
{t('validation.ouMustBeChosen')}
</FormHelperText>
)}
<FormControl>
<InputLabel id="ou-select-label-id">{t('common:ou')}</InputLabel>
<Select
labelId="ou-select-label"
id="ou-select-label"
defaultValue=""
value={ouChoice.toString()}
label={t('common:ou')}
onChange={handleOuChange}
>
{ous !== undefined &&
ous.length > 0 &&
ous
.sort(i18n.language === 'en' ? enSort : nbSort)
.map((ou) => ouToItem(ou))}
</Select>
</FormControl>
<Controller
name="start_date"
control={control}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment