Skip to content

Commit

Permalink
Merge branch 'pre-release/32.2.0' into hotfix/income-plan-conditional…
Browse files Browse the repository at this point in the history
…-for-null
  • Loading branch information
kodiakhq[bot] authored Oct 22, 2024
2 parents 186ceb3 + e0118ac commit 2ca97dd
Show file tree
Hide file tree
Showing 14 changed files with 251 additions and 59 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { SignatureCollectionSignatureUpdateInput } from './dto/signatureUpdate.i
import { SignatureCollectionSignatureLookupInput } from './dto/signatureLookup.input'
import { SignatureCollectionAreaSummaryReportInput } from './dto/areaSummaryReport.input'
import { SignatureCollectionAreaSummaryReport } from './models/areaSummaryReport.model'
import { SignatureCollectionUploadPaperSignatureInput } from './dto/uploadPaperSignature.input'

@UseGuards(IdsUserGuard, ScopesGuard)
@Scopes(AdminPortalScope.signatureCollectionProcess)
Expand Down Expand Up @@ -287,4 +288,13 @@ export class SignatureCollectionAdminResolver {
): Promise<SignatureCollectionSuccess> {
return this.signatureCollectionService.lockList(input, user)
}

@Mutation(() => SignatureCollectionSuccess)
@Audit()
async signatureCollectionAdminUploadPaperSignature(
@CurrentUser() user: User,
@Args('input') input: SignatureCollectionUploadPaperSignatureInput,
): Promise<SignatureCollectionSuccess> {
return this.signatureCollectionService.uploadPaperSignature(input, user)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,10 @@ import { SignatureCollectionSignatureUpdateInput } from './dto/signatureUpdate.i
import { SignatureCollectionSignatureLookupInput } from './dto/signatureLookup.input'
import { SignatureCollectionAreaSummaryReportInput } from './dto/areaSummaryReport.input'
import { SignatureCollectionAreaSummaryReport } from './models/areaSummaryReport.model'
import { SignatureCollectionListIdInput } from './dto'
import {
SignatureCollectionListIdInput,
SignatureCollectionUploadPaperSignatureInput,
} from './dto'

@Injectable()
export class SignatureCollectionAdminService {
Expand Down Expand Up @@ -64,9 +67,14 @@ export class SignatureCollectionAdminService {
(signatureSignee.canSignInfo[0] === ReasonKey.AlreadySigned ||
signatureSignee.canSignInfo[0] === ReasonKey.noInvalidSignature))

const inArea = list.area.id === signatureSignee.area?.id
return {
success: canSign && list.area.id === signatureSignee.area?.id,
reasons: canSign ? [] : signatureSignee.canSignInfo,
success: canSign && inArea,
reasons: canSign
? inArea
? []
: [ReasonKey.NotInArea]
: signatureSignee.canSignInfo,
}
}

Expand Down Expand Up @@ -243,4 +251,14 @@ export class SignatureCollectionAdminService {
input.listId,
)
}

async uploadPaperSignature(
input: SignatureCollectionUploadPaperSignatureInput,
user: User,
): Promise<SignatureCollectionSuccess> {
return await this.signatureCollectionClientService.uploadPaperSignature(
user,
input,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,11 @@ import {
} from './types/list.dto'
import { Signature, mapSignature } from './types/signature.dto'
import { CandidateLookup } from './types/user.dto'
import { BulkUpload, mapBulkResponse } from './types/bulkUpload.dto'
import {
BulkUpload,
getReasonKeyForPaperSignatureUpload,
mapBulkResponse,
} from './types/bulkUpload.dto'
import { Success } from './types/success.dto'
import { mapCandidate } from './types/candidate.dto'
import { Slug } from './types/slug.dto'
Expand Down Expand Up @@ -423,4 +427,47 @@ export class SignatureCollectionAdminClientService {
return { success: false }
}
}

async uploadPaperSignature(
auth: Auth,
{
listId,
nationalId,
pageNumber,
}: { listId: string; nationalId: string; pageNumber: number },
): Promise<Success> {
try {
const signature = await this.getApiWithAuth(
this.adminApi,
auth,
).adminMedmaelalistiIDMedmaeliBulkPost({
medmaeliBulkRequestDTO: {
medmaeli: [
{
kennitala: nationalId,
bladsida: pageNumber,
},
],
},
iD: parseInt(listId),
})

const success = !!(
signature.medmaeliKenn?.includes(nationalId) ||
signature.medMedmaeliAnnarListi?.includes(nationalId)
)

return {
success,
reasons: success
? []
: getReasonKeyForPaperSignatureUpload(signature, nationalId),
}
} catch {
return {
success: false,
reasons: [ReasonKey.DeniedByService],
}
}
}
}
26 changes: 26 additions & 0 deletions libs/clients/signature-collection/src/lib/types/bulkUpload.dto.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { MedmaeliBulkResponseDTO } from '../../../gen/fetch'
import { ReasonKey } from '../signature-collection.types'

export interface NationalIds {
nationalId: string
Expand Down Expand Up @@ -48,3 +49,28 @@ export const mapBulkResponse = (
})) ?? []),
],
})

export const getReasonKeyForPaperSignatureUpload = (
bulkResponse: MedmaeliBulkResponseDTO,
nationalId: string,
): ReasonKey[] => {
const listMapping: { [key in keyof MedmaeliBulkResponseDTO]?: ReasonKey } = {
notFound: ReasonKey.notFound,
undirAldri: ReasonKey.UnderAge,
ekkiIsRik: ReasonKey.NoCitizenship,
ekkiBuseta: ReasonKey.NotISResidency,
ekkiASvaedi: ReasonKey.NotInArea,
medMedmaeliALista: ReasonKey.AlreadySigned,
medMedmaeliAnnarListi: ReasonKey.noInvalidSignature,
}

for (const [key, reason] of Object.entries(listMapping)) {
const list = bulkResponse[key as keyof MedmaeliBulkResponseDTO] as
| Array<string>
| undefined
if (list?.includes(nationalId)) {
return [reason]
}
}
return []
}
21 changes: 21 additions & 0 deletions libs/portals/admin/signature-collection/src/lib/messages.ts
Original file line number Diff line number Diff line change
Expand Up @@ -442,6 +442,27 @@ export const m = defineMessages({
defaultMessage: 'Opna fyrir úrvinnslu',
description: '',
},
collectionReviewedTitle: {
id: 'admin-portal.signature-collection:collectionReviewedTitle',
defaultMessage: 'Meðmælasöfnun vegna framboðs til Alþingis lokið',
description: '',
},
collectionReviewedMessage: {
id: 'admin-portal.signature-collection:collectionReviewedMessage',
defaultMessage:
'Nú hefur úrvinnslu verið lokið á öllum listum í öllum kjördæmum.',
description: '',
},
collectionProcessedTitle: {
id: 'admin-portal.signature-collection:collectionProcessedTitle',
defaultMessage: 'Úrvinnsla meðmælasöfnunar lokið',
description: '',
},
collectionProcessedMessage: {
id: 'admin-portal.signature-collection:collectionReviewedTitle',
defaultMessage: 'Nú er hægt að framlengja stökum listum.',
description: '',
},
listReviewedModalDescription: {
id: 'admin-portal.signature-collection:listReviewedModalDescription#markdown',
defaultMessage:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,10 @@ import electionsCommitteeLogo from '../../../assets/electionsCommittee.svg'
import nationalRegistryLogo from '../../../assets/nationalRegistry.svg'
import { useSignatureCollectionAdminRemoveListMutation } from './removeList.generated'
import { useSignatureCollectionAdminRemoveCandidateMutation } from './removeCandidate.generated'
import { SignatureCollectionList } from '@island.is/api/schema'
import {
CollectionStatus,
SignatureCollectionList,
} from '@island.is/api/schema'

export const Constituency = ({
allowedToProcess,
Expand All @@ -41,7 +44,8 @@ export const Constituency = ({
const navigate = useNavigate()
const { revalidate } = useRevalidator()

const { collection, allLists } = useLoaderData() as ListsLoaderReturn
const { collection, collectionStatus, allLists } =
useLoaderData() as ListsLoaderReturn
const { constituencyName } = useParams() as { constituencyName: string }

const constituencyLists = allLists.filter(
Expand Down Expand Up @@ -127,12 +131,13 @@ export const Constituency = ({
': ' +
constituencyLists.length}
</Text>
{allowedToProcess && constituencyLists?.length > 0 && (
<CreateCollection
collectionId={collection?.id}
areaId={areaId}
/>
)}
{allowedToProcess &&
collectionStatus === CollectionStatus.Processed && (
<CreateCollection
collectionId={collection?.id}
areaId={areaId}
/>
)}
</Box>
<Stack space={3}>
{constituencyLists.map((list) => (
Expand All @@ -158,7 +163,9 @@ export const Constituency = ({
},
}}
tag={
allowedToProcess && list.active
allowedToProcess &&
list.active &&
collectionStatus === CollectionStatus.InitialActive
? {
label: 'Cancel collection',
renderTag: () => (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,12 @@ const List = ({ allowedToProcess }: { allowedToProcess: boolean }) => {
? formatMessage(m.listStatusReviewedStatusAlert)
: formatMessage(m.listStatusActiveAlert)
}
type={listStatus === ListStatus.Reviewed ? 'success' : undefined}
type={
listStatus === ListStatus.Reviewed ||
listStatus === ListStatus.Inactive
? 'success'
: undefined
}
/>
<ActionExtendDeadline
listId={list.id}
Expand All @@ -101,7 +106,9 @@ const List = ({ allowedToProcess }: { allowedToProcess: boolean }) => {
)}
{allowedToProcess && (
<Box>
{!list.active && <PaperSignees listId={list.id} />}
{!list.active && !list.reviewed && (
<PaperSignees listId={list.id} />
)}
<ActionReviewComplete listId={list.id} listStatus={listStatus} />
</Box>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,13 @@ import {
useSignatureCollectionAdminCanSignInfoQuery,
useIdentityQuery,
} from './identityAndCanSignLookup.generated'
import { useSignatureCollectionUploadPaperSignatureMutation } from './uploadPaperSignee.generated'
import { useSignatureCollectionAdminUploadPaperSignatureMutation } from './uploadPaperSignee.generated'
import { useRevalidator } from 'react-router-dom'

export const PaperSignees = ({ listId }: { listId: string }) => {
useNamespaces('sp.signatureCollection')
const { formatMessage } = useLocale()
const { revalidate } = useRevalidator()
const { control, reset } = useForm()

const [nationalIdInput, setNationalIdInput] = useState('')
Expand Down Expand Up @@ -61,17 +63,22 @@ export const PaperSignees = ({ listId }: { listId: string }) => {
}, [nationalIdInput, loading, data])

const [uploadPaperSignee, { loading: uploadingPaperSignature }] =
useSignatureCollectionUploadPaperSignatureMutation({
useSignatureCollectionAdminUploadPaperSignatureMutation({
variables: {
input: {
listId: listId,
nationalId: nationalIdInput,
pageNumber: Number(page),
},
},
onCompleted: () => {
toast.success(formatMessage(m.paperSigneeSuccess))
onCompleted: (res) => {
if (res.signatureCollectionAdminUploadPaperSignature?.success) {
toast.success(formatMessage(m.paperSigneeSuccess))
} else {
toast.error(formatMessage(m.paperSigneeError))
}
reset()
revalidate()
setNationalIdTypo(false)
setName('')
},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
mutation SignatureCollectionUploadPaperSignature(
mutation SignatureCollectionAdminUploadPaperSignature(
$input: SignatureCollectionUploadPaperSignatureInput!
) {
signatureCollectionUploadPaperSignature(input: $input) {
signatureCollectionAdminUploadPaperSignature(input: $input) {
success
reasons
}
Expand Down
Loading

0 comments on commit 2ca97dd

Please sign in to comment.