From 1379d57d140936b3e0f6625468d31e394d3640c5 Mon Sep 17 00:00:00 2001 From: Tobias Date: Tue, 7 Jun 2022 11:56:13 +0200 Subject: [PATCH 1/2] refactor gQL wlist anmelden method --- src/graphql.ts | 100 +++++++++++++++---------------------------------- 1 file changed, 31 insertions(+), 69 deletions(-) diff --git a/src/graphql.ts b/src/graphql.ts index 66d8ddb4..3f05501f 100644 --- a/src/graphql.ts +++ b/src/graphql.ts @@ -2505,22 +2505,19 @@ export const schema = new GraphQLSchema({ (2 * Math.floor(Math.random() * 5) + (m ? 1 : 0)).toString() ) } - const checkAnmeldeID = (id: string) => { + const isUniqueAnmeldeID = (id: string) => { return query( `SELECT anmeldeID FROM anmeldungen WHERE anmeldeID = '${id}'` ).then((v) => v.length === 0) } - let anmeldeID = - anmeldeID_start + - genFour(args.geschlecht === 'm') + - anmeldeID_ende - while (!checkAnmeldeID(anmeldeID)) { + let anmeldeID + do { anmeldeID = anmeldeID_start + genFour(args.geschlecht === 'm') + anmeldeID_ende - } + } while (!isUniqueAnmeldeID(anmeldeID)); let persons = await query( `SELECT personID FROM personen WHERE vorname="${args.vorname}"AND nachname="${args.nachname}" AND gebDat="${args.gebDat}"` @@ -2528,7 +2525,7 @@ export const schema = new GraphQLSchema({ if (persons.length === 0) { // check in dublikaten Table const dubs = await query( - `SELECT zielPersonID FROM dublikate WHERE vorname="${args.vorname}"AND nachname="${args.nachname}" AND gebDat="${args.gebDat}"` + `SELECT zielPersonID FROM dublikate WHERE vorname="${args.vorname}"AND nachname="${args.nachname}" AND gebDat="${args.gebDat}"` ) if (dubs.length === 0) { @@ -2548,7 +2545,7 @@ export const schema = new GraphQLSchema({ `SELECT eMailID FROM eMails WHERE eMail="${args.eMail}" AND personID=${personID}` ) const mailExisted = eMails.length !== 0 - if (eMails.length === 0) { + if (!mailExisted) { await query( `INSERT INTO eMails(eMail, personID) VALUES ("${args.eMail}",${personID})` ) @@ -2668,89 +2665,54 @@ export const schema = new GraphQLSchema({ } else { let wartelistenplatz = 0 if (args.position === 1) { - const maxWListPlatz: Array = await query( - `SELECT personen.geschlecht AS geschlecht, MAX(anmeldungen.wartelistenPlatz) AS maxWlistPos FROM anmeldungen, personen WHERE personen.personID = anmeldungen.personID AND anmeldungen.veranstaltungsID = ${args.veranstaltungsID} AND anmeldungen.position = 1 GROUP BY personen.geschlecht` + const aktuellLetzterWLPlatz: Array = await query( + `SELECT personen.geschlecht AS geschlecht, MAX(anmeldungen.wartelistenPlatz) AS wartelistenPlatz FROM anmeldungen, personen WHERE personen.personID = anmeldungen.personID AND anmeldungen.veranstaltungsID = ${args.veranstaltungsID} AND anmeldungen.position = 1 GROUP BY personen.geschlecht` ) - const anzahlPersonen: Array = await query( + const aktuellTeilnehmende: Array = await query( `SELECT COUNT(personen.personID) AS anzahlPersonen, personen.geschlecht AS geschlecht FROM personen, anmeldungen WHERE personen.personID = anmeldungen.personID AND anmeldungen.veranstaltungsID = ${args.veranstaltungsID} AND anmeldungen.wartelistenPlatz = 0 AND anmeldungen.position = 1 GROUP BY personen.geschlecht` ) - let maxWlistMännlich = 0 - let maxWlistWeiblich = 0 - let anzahlMännlich = 0 - let anzahlWeiblich = 0 - - maxWListPlatz.forEach((per) => { - switch (per.geschlecht) { - case 'm': - maxWlistMännlich = per.maxWlistPos - break - case 'w': - maxWlistWeiblich = per.maxWlistPos - break - } + const letzterWLPlatz = { m: 0, w: 0, gesamt: 0 } + const teilnehmerCounter = { m: 0, w: 0, gesamt: 0 } + + aktuellLetzterWLPlatz.forEach(row => { + letzterWLPlatz[`${row.geschlecht}`] = row.wartelistenPlatz }) - const maxWlistGesamt = Math.max( - maxWlistMännlich, - maxWlistWeiblich - ) + letzterWLPlatz.gesamt = Math.max(letzterWLPlatz.m, letzterWLPlatz.w) - anzahlPersonen.forEach((per) => { - switch (per.geschlecht) { - case 'm': - anzahlMännlich = per.anzahlPersonen - break - case 'w': - anzahlWeiblich = per.anzahlPersonen - break - } + aktuellTeilnehmende.forEach(row => { + teilnehmerCounter[`${row.geschlecht}`] = row.anzahlPersonen }) - const anzahlGesamt = anzahlMännlich + anzahlWeiblich + teilnehmerCounter.gesamt = teilnehmerCounter.m + teilnehmerCounter.w - const hatGWarteliste = vData.hatGWarteliste - const anzahlPlätze = vData.anzahlPlätze - const anzahlPlätzeWeiblich = vData.anzahlPlätzeWeiblich - const anzahlPlätzeMännlich = vData.anzahlPlätzeMännlich + const hatGeschlechterWL = vData.hatGWarteliste + const verfügbarePlätze = { absolut: vData.anzahlPlätze, m: vData.anzahlPlätzeMännlich, w: vData.anzahlPlätzeWeiblich } - const myGeschlecht = args.geschlecht + const geschlechtKey = args.geschlecht === 'm' ? 'm' : 'w' - if (hatGWarteliste) { - if (myGeschlecht === 'm') { - if (maxWlistMännlich > 0) { - wartelistenplatz = maxWlistMännlich + 1 - } else { - if (anzahlMännlich < anzahlPlätzeMännlich) { - if (anzahlGesamt < anzahlPlätze) { - wartelistenplatz = 0 - } else { - wartelistenplatz = 1 - } - } else { - wartelistenplatz = 1 - } - } - } else { - if (maxWlistWeiblich > 0) { - wartelistenplatz = maxWlistWeiblich + 1 + if (hatGeschlechterWL) { + const letzerGeschlechtsWLPlatz = letzterWLPlatz[geschlechtKey] + const angemeldetGeschlechtCounter = teilnehmerCounter[geschlechtKey] + if (letzerGeschlechtsWLPlatz > 0) { + wartelistenplatz = letzerGeschlechtsWLPlatz + 1 } else { - if (anzahlWeiblich < anzahlPlätzeWeiblich) { - if (anzahlGesamt < anzahlPlätze) { + if (angemeldetGeschlechtCounter < verfügbarePlätze[geschlechtKey]) { + if (teilnehmerCounter.gesamt < verfügbarePlätze.absolut) { wartelistenplatz = 0 } else { wartelistenplatz = 1 } } else { wartelistenplatz = 1 - } } } } else { - if (maxWlistGesamt > 0) { - wartelistenplatz = maxWlistGesamt + 1 + if (letzterWLPlatz.gesamt > 0) { + wartelistenplatz = letzterWLPlatz.gesamt + 1 } else { - if (anzahlGesamt < anzahlPlätze) { + if (teilnehmerCounter.gesamt < verfügbarePlätze.absolut) { wartelistenplatz = 0 } else { wartelistenplatz = 1 From f325e41d4b4c28b8dbb2f8be7ef42abf0c10010f Mon Sep 17 00:00:00 2001 From: Tobias Date: Tue, 7 Jun 2022 12:17:30 +0200 Subject: [PATCH 2/2] rm linting errors --- src/graphql.ts | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/graphql.ts b/src/graphql.ts index 3f05501f..0737d7a9 100644 --- a/src/graphql.ts +++ b/src/graphql.ts @@ -2517,7 +2517,7 @@ export const schema = new GraphQLSchema({ anmeldeID_start + genFour(args.geschlecht === 'm') + anmeldeID_ende - } while (!isUniqueAnmeldeID(anmeldeID)); + } while (!isUniqueAnmeldeID(anmeldeID)) let persons = await query( `SELECT personID FROM personen WHERE vorname="${args.vorname}"AND nachname="${args.nachname}" AND gebDat="${args.gebDat}"` @@ -2675,37 +2675,49 @@ export const schema = new GraphQLSchema({ const letzterWLPlatz = { m: 0, w: 0, gesamt: 0 } const teilnehmerCounter = { m: 0, w: 0, gesamt: 0 } - aktuellLetzterWLPlatz.forEach(row => { + aktuellLetzterWLPlatz.forEach((row) => { letzterWLPlatz[`${row.geschlecht}`] = row.wartelistenPlatz }) - letzterWLPlatz.gesamt = Math.max(letzterWLPlatz.m, letzterWLPlatz.w) + letzterWLPlatz.gesamt = Math.max( + letzterWLPlatz.m, + letzterWLPlatz.w + ) - aktuellTeilnehmende.forEach(row => { + aktuellTeilnehmende.forEach((row) => { teilnehmerCounter[`${row.geschlecht}`] = row.anzahlPersonen }) - teilnehmerCounter.gesamt = teilnehmerCounter.m + teilnehmerCounter.w + teilnehmerCounter.gesamt = + teilnehmerCounter.m + teilnehmerCounter.w const hatGeschlechterWL = vData.hatGWarteliste - const verfügbarePlätze = { absolut: vData.anzahlPlätze, m: vData.anzahlPlätzeMännlich, w: vData.anzahlPlätzeWeiblich } + const verfügbarePlätze = { + absolut: vData.anzahlPlätze, + m: vData.anzahlPlätzeMännlich, + w: vData.anzahlPlätzeWeiblich + } const geschlechtKey = args.geschlecht === 'm' ? 'm' : 'w' if (hatGeschlechterWL) { const letzerGeschlechtsWLPlatz = letzterWLPlatz[geschlechtKey] - const angemeldetGeschlechtCounter = teilnehmerCounter[geschlechtKey] + const angemeldetGeschlechtCounter = + teilnehmerCounter[geschlechtKey] if (letzerGeschlechtsWLPlatz > 0) { wartelistenplatz = letzerGeschlechtsWLPlatz + 1 - } else { - if (angemeldetGeschlechtCounter < verfügbarePlätze[geschlechtKey]) { + } else { + if ( + angemeldetGeschlechtCounter < + verfügbarePlätze[geschlechtKey] + ) { if (teilnehmerCounter.gesamt < verfügbarePlätze.absolut) { - wartelistenplatz = 0 - } else { - wartelistenplatz = 1 - } + wartelistenplatz = 0 } else { wartelistenplatz = 1 + } + } else { + wartelistenplatz = 1 } } } else {