kandimat-user-app/src/app/euromat/graphqlQueries.js

110 lines
2.4 KiB
JavaScript

import gql from 'graphql-tag'
import possiblePositions from '@/app/euromat/possiblePositions'
export function getPositionById (id) {
return possiblePositions.find(option => option.id === id).position
}
export const apolloThesesQuery = gql`{
allQuestions(orderBy: ROW_ID_ASC) {
nodes {
category: categoryByCategoryRowId {
id
title
}
title
rowId
id
}
}
}`
export const apolloThesesUpdate = data => data.allQuestions.nodes.map(node => ({
id: node.rowId,
thesis: {
de: node.title
},
category: {
de: node.category ? node.category.title : ''
}
}))
export const apolloThesesCountQuery = gql`{
allQuestions {
totalCount
}
}`
export const apolloThesesCountUpdate = data => data.allQuestions.totalCount
export const apolloPersonsForResultsQuery = gql`{
allPeople(condition: {role: KANDIMAT_CANDIDATE}) {
nodes {
id
firstName
lastName
rowId
answers: answersByPersonRowId {
nodes {
id
position
questionRowId
text
}
}
}
}
}`
export const apolloPersonsForResultsUpdate = data => data.allPeople.nodes.map(person => ({
id: person.rowId,
name: `${person.firstName} ${person.lastName}`,
token: person.firstName.charAt(0) + person.lastName.charAt(0),
positions: person.answers.nodes.map(answer => ({
thesis: answer.questionRowId,
position: getPositionById(answer.position),
statement: {
de: answer.text
}
}))
}))
export const apolloPersonPositionsQuery = gql`
query Person($partyId: Int!) {
personByRowId(rowId: $partyId) {
id
firstName
lastName
answers: answersByPersonRowId {
nodes {
id
position
personRowId
text
question: questionByQuestionRowId {
id
rowId
}
}
}
}
}`
export const apolloPersonPositionsUpdate = data => {
const person = data.personByRowId
return {
id: person.rowId,
name: `${person.firstName} ${person.lastName}`,
token: person.firstName.charAt(0) + person.lastName.charAt(0),
theses: person.answers ? person.answers.nodes.map(answer => {
const question = answer.question
return question ? {
id: question.rowId,
position: getPositionById(answer.position),
statement: answer.text,
showStatement: false
} : null
}) : []
}
}