Beispiel #1
0
class Control(QtWidgets.QMainWindow):
    def __init__(self, parent=None):
        super(Control, self).__init__(parent)
        uic.loadUi('code/ui/Controleren.ui', self)
        self.setWindowTitle('Scans controleren')
        self.setup()

        self.show()

        self.nextBtn.clicked.connect(self.nextFile)
        self.updateScoreBtn.clicked.connect(self.updateScore)
        self.allesJustBtn.clicked.connect(self.allesOverzetten)
        self.discardBtn.hide()

    def closeEvent(self, event):
        self.SH.fromScannerToUser()
        if len(self.SH.getAllScanResults()) > 0:
            msg = QtWidgets.QMessageBox()
            msg.setText("Nog niet alle scans werden gecontroleerd")
            msg.setWindowTitle("Opgelet")
            msg.exec()
        event.accept()

    def keyPressEvent(self, event):
        if type(event) == QtGui.QKeyEvent:
            if event.key() == QtCore.Qt.Key_Escape:
                self.close()
            elif event.key() == QtCore.Qt.Key_Right or event.key(
            ) == QtCore.Qt.Key_Enter or event.key() == QtCore.Qt.Key_Return:
                self.nextFile()
            event.accept()
        else:
            event.ignore()

    def setup(self):
        from score_handler import Class_Scores
        from ronde_handler import Class_Rondes
        from inschrijving_handler import Class_Inschrijvingen
        self.SH = Class_Scores()
        self.RH = Class_Rondes()
        self.PH = Class_Inschrijvingen()
        self.AllScanData = self.SH.getAllScanResults()

        if len(self.AllScanData) > 0:
            self.ScanDataIndex = 0
            self.currentRondeSettings = None
            self.checkboxes = []
            self.checkTafelnummer = False

            self.hideQLayout(self.basicScores)
            self.updateFile()
            self.updateLayout()
            self.setImageLbl()

        else:
            msg = QtWidgets.QMessageBox()
            msg.setText(
                "Alle beschikbare scans zijn gecontroleerd dus je kan hier niets mee doen..."
            )
            msg.setWindowTitle("Klaar!")
            msg.exec()

    def allesOverzetten(self):
        #Laatste Aanpassing

        bereik = range(self.ScanDataIndex, len(self.AllScanData))

        self.toCheck = []
        for i in bereik:
            row = self.AllScanData[i]
            row = row[0]
            if int(row[2]) == 0:
                self.ScanDataIndex = i
                self.iterateAll()
                if self.checkTafelnummer:
                    self.toCheck.append(row)
            else:
                self.toCheck.append(row)
        if len(self.toCheck) == 0:
            self.allChecked(True)
        else:
            self.SH.fromScannerToUser()
            self.msgBox(
                'Bijna klaar',
                'Er zijn nog een paar scans die manueel nagekeken moeten worden.'
            )
            self.setup()

    def iterateAll(self):
        self.updateFile()
        if not self.checkTafelnummer:
            newRow = [self.ronde] + [self.ploeg] + self.score
            self.SH.validateScanResult(newRow)

    def nextFile(self):
        if self.updateScore():
            newRow = [self.ronde] + [self.ploeg] + self.score
            self.SH.validateScanResult(newRow)
            self.ScanDataIndex = self.ScanDataIndex + 1
            if self.ScanDataIndex < len(self.AllScanData):
                self.updateFile()
                self.setImageLbl()
                self.updateLayout()
            else:
                self.allChecked(True)
            return True
        else:
            if not self.scoresOk:
                text = 'Deze score kan niet kloppen, kijk het nog eens na!'
            elif not self.bonusOk:
                text = 'Er is iets mis met het bonusthema, kijk het nog eens na!'
            elif not self.tafelOk:
                text = 'Dit tafelnummer bestaat niet of is niet aanwezig, kijk het nog eens na!'
                self.ploegTxt.setFocus()
            elif not self.schiftingOk:
                text = 'Geen geldig antwoord voor de schiftingsvraag, kijk het nog eens na!'
                self.schiftingTxt.setFocus()
            else:
                text = 'Geen geldige input, kijk het nog eens na!'
            self.msgBox('Ongeldig', text)
            return False

    def updateFile(self):
        data = self.AllScanData[self.ScanDataIndex]
        self.filename = data[1]
        self.row = data[0]
        self.ploeg = int(self.row[1])
        self.ronde = int(self.row[0])
        self.score = self.row[3:]

    def setImageLbl(self):
        try:
            pixmap = QtGui.QPixmap(self.filename)
            pixmap = pixmap.scaled(self.imagesLbl.width(),
                                   self.imagesLbl.height(),
                                   QtCore.Qt.KeepAspectRatio)
            self.imagesLbl.setPixmap(pixmap)
            self.imagesLbl.setAlignment(QtCore.Qt.AlignCenter)
        except:
            msg = QtWidgets.QMessageBox()
            msg.setText("Geen afbeelding gevonden maar wel de data???")
            msg.setWindowTitle("Vreemd")
            msg.exec()

    def updateScore(self):
        score = []
        nieuwescore = []
        checked = False
        update = False
        changed = False
        self.schiftingOk = True
        self.bonusOk = True
        self.tafelOk = True
        self.scoresOk = True
        if self.ronde > 0 and self.superronde == 1:
            for box in self.checkboxes:
                score.append(int(box.isChecked()))
            checked = True
            update = True
            for i in range(int(len(score) / 3)):
                if sum(score[i * 3:i * 3 + 3]) > 1:
                    update = False
                    self.scoresOk = False
                    break
            if update:
                nieuwescore = score
                changed = not list(map(int, self.score)) == nieuwescore
        elif self.ronde == 0:
            checked = True
            try:
                schifting = int(self.schiftingTxt.text())
                nieuwescore.append(schifting)
                update = True
                changed = not int(self.score[0]) == nieuwescore[0]
            except:
                update = False
                self.schiftingOk = False

            if len(self.checkboxes) > 1 and update:
                bonusThema = 0
                update = False
                for i, box in enumerate(self.checkboxes):
                    if box.isChecked():
                        score.append(1)
                        bonusThema = i + 1
                    else:
                        score.append(0)
                if sum(score) == 1:
                    nieuwescore.append(bonusThema)
                    update = True
                    if not changed and not int(self.score[1]) == bonusThema:
                        changed = True
                else:
                    self.bonusOk = False

        else:
            for i, box in enumerate(self.checkboxes):
                if box.isChecked():
                    nieuwescore.append(1)
                else:
                    nieuwescore.append(0)
            update = True
            checked = False
            changed = not list(map(int, self.score)) == nieuwescore

        if self.checkTafelnummer:
            try:
                self.ploeg = int(self.ploegTxt.text())
                aanwezig = self.PH.isAanwezig(self.ploeg)
                if not aanwezig:
                    #de nieuwe tafel is niet aanwezig dus is sowieso foute ingave
                    checked = True
                    update = False
                    self.tafelOk = False
                else:
                    self.ploeg = int(str('999') + str(self.ploeg))
            except:
                checked = True
                update = False
                self.tafelOk = False

        if checked and not update:
            return False
        if update and changed:
            self.score = nieuwescore
            filename = self.AllScanData[self.ScanDataIndex][1]
            image = cv2.imread(self.filename)
            heigth, width, channels = image.shape
            cv2.rectangle(image, (int(width * 0.1), int(heigth)),
                          (0, int(heigth * 0.9)), (0, 166, 255), -1)
            cv2.imwrite(self.filename, image)
            self.setImageLbl()
        return True

    def updateBoxes(self):
        if self.ronde > 0:
            for i, box in enumerate(self.checkboxes):
                box.setChecked(int(self.score[i]))
        else:
            self.schiftingTxt.setText(self.score[0])
            if self.NOQ == 2:
                bonusthema = int(self.score[1])
                for i, box in enumerate(self.checkboxes):
                    box.setChecked(i + 1 == bonusthema)

    def updateLayout(self):
        self.checkTafelnummer = False
        if not self.ronde == self.currentRondeSettings:
            #updatelayout
            self.checkboxes = []
            self.NOQ = len(self.score)
            try:
                self.superronde = self.RH.isSuperRonde(self.ronde)
            except:
                self.superronde = 0
                pass
            for box in self.checkboxes:
                box.hide()
                box.setChecked(0)

            self.hideQLayout(self.schiftingsvraag)
            self.hideQLayout(self.tafelnummer)
            if self.superronde == 1:
                index = 0
                for i in range(self.basicScores.count()):
                    box1 = self.basicScores.itemAt(i).widget()
                    box2 = self.superronde2.itemAt(i).widget()
                    box3 = self.superronde3.itemAt(i).widget()
                    if i < self.NOQ / 3:
                        box1.setText('{}a.'.format(i + 1))
                        box2.setText('{}b.'.format(i + 1))
                        box3.setText('{}c.'.format(i + 1))
                        self.checkboxes.append(box1)
                        self.checkboxes.append(box2)
                        self.checkboxes.append(box3)
                        box1.show()
                        box2.show()
                        box3.show()
                    else:
                        box1.hide()
                        box2.hide()
                        box3.hide()
            else:
                self.hideQLayout(self.superronde2)
                self.hideQLayout(self.superronde3)
                if self.NOQ < 3:
                    self.showQLayout(self.schiftingsvraag)
                    if self.NOQ == 2:
                        aantalThemas = 9
                        boxes = (self.basicScores.itemAt(i).widget()
                                 for i in range(self.basicScores.count()))
                        for i, box in enumerate(boxes):
                            if i < aantalThemas:
                                box.setText('{}.'.format(i + 1))
                                self.checkboxes.append(box)
                                box.show()
                            else:
                                box.hide()
                    else:
                        self.hideQLayout(self.basicScores)
                    self.schiftingTxt.setText(self.score[0])

                else:
                    boxes = (self.basicScores.itemAt(i).widget()
                             for i in range(self.basicScores.count()))
                    for i, box in enumerate(boxes):
                        if i < self.NOQ:
                            box.setText('{}.'.format(i + 1))
                            self.checkboxes.append(box)
                            box.show()
                        else:
                            box.hide()

        self.currentRondeSettings = self.ronde
        if '999' in str(self.ploeg):
            self.showQLayout(self.tafelnummer)
            self.checkTafelnummer = True
            self.ploegTxt.setText('')
        self.updateBoxes()  #check or unchek

    def hideQLayout(self, layout):
        items = (layout.itemAt(i).widget() for i in range(layout.count()))
        for i, item in enumerate(items):
            try:
                item.hide()
            except:
                pass

    def showQLayout(self, layout):
        items = (layout.itemAt(i).widget() for i in range(layout.count()))
        for i, item in enumerate(items):
            try:
                item.show()
            except:
                pass

    def msgBox(self, titel, text):
        msg = QtWidgets.QMessageBox()
        msg.setText(text)
        msg.setWindowTitle(titel)
        msg.exec()

    def allChecked(self, doeiets):
        #sluit deze GUI af en verwerk SCANCONTROL

        self.msgBox('Klaar!', "Alle beschikbare scans zijn gecontroleerd!")
        if doeiets:
            self.SH.fromScannerToUser()
        self.close()
Beispiel #2
0
class AdminUI(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(AdminUI, self).__init__(parent)
        uic.loadUi('code/ui/Admin.ui', self)
        self.setup()
        self.show()

    def setup(self):
        from inschrijving_handler import Class_Inschrijvingen
        from ronde_handler import Class_Rondes
        from score_handler import Class_Scores
        from email_handler import Class_Emails

        self.EH = Class_Emails()
        self.PH = Class_Inschrijvingen()
        self.RH = Class_Rondes()
        self.SH = Class_Scores()

        self.fillComboBoxes()
        self.fillInfoFields()
        self.updateOverzicht()

        self.origineelPBox.currentIndexChanged.connect(self.fillInfoFields)
        self.origineelRBox.currentIndexChanged.connect(self.fillInfoFields)
        self.origineelWachtlijstPBox.currentIndexChanged.connect(
            self.fillInfoFields)

        self.rondeloting1.currentIndexChanged.connect(self.fillAntwoorden1)
        self.rondeloting2.currentIndexChanged.connect(self.fillAntwoorden2)
        self.rondeloting3.currentIndexChanged.connect(self.fillAntwoorden3)

        self.juistloting1.setChecked(1)
        self.juistloting2.setChecked(1)
        self.juistloting3.setChecked(1)
        self.lotingGenereer.clicked.connect(self.maakLoting)
        self.lotingZenden.clicked.connect(self.maakAndSendLoting)
        self.PAanpassenBtn.clicked.connect(self.updatePloeg)
        self.UitschrijvenBtn.clicked.connect(self.verwijderPloeg)
        self.updatenPBtn.clicked.connect(self.updateAllPloegen)
        self.betalingMailBtn.clicked.connect(self.sendBetalingEmailPloeg)

        self.RNieuwBtn.clicked.connect(self.nieuweRonde)
        self.RAanpassenBtn.clicked.connect(self.updateRonde)
        self.verwijderRBtn.clicked.connect(self.verwijderRonde)

        self.BevestigDeelnameButton.clicked.connect(self.verplaatsPloeg)
        self.VraagDeelnameBtn.clicked.connect(self.uitnodigenPloeg)

        self.RAanmeldenBtn.clicked.connect(self.resetAanmelden)
        self.RPloegenBtn.clicked.connect(self.resetPloegen)
        self.RRondesBtn.clicked.connect(self.resetRondes)
        self.RAllBtn.clicked.connect(self.totalReset)

        self.BetalingBtn.clicked.connect(self.betalingToevoegen)
        self.BetalingQRBtn.clicked.connect(self.emailBetalingQR)
        self.QRBtn.clicked.connect(self.emailQRLastDay)
        self.BetalingReminderBrn.clicked.connect(self.emailBetalingReminder)
        self.EindstandBtn.clicked.connect(self.emailEindstand)
        self.Uitnodiging2Btn.clicked.connect(self.emailUitnodigingReminder)
        self.UitnodigingBtn.clicked.connect(self.emailUitnodiging)

        self.updateOverzichtBtn.clicked.connect(self.saveOverzicht)

        self.uploadOnlineBtn.clicked.connect(self.uploadLive)

    def uploadLive(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je de (voorlopige) tussenstand online wil zwieren zodat iedereen hem kan zien?'
        ):
            self.SH.uploadScorebordPublic()

    def fillComboBoxes(self):
        self.origineelPBox.clear()
        self.tafelnummerBox.clear()
        self.rondeNummerBox.clear()
        self.origineelRBox.clear()
        self.rondeloting1.clear()
        self.rondeloting2.clear()
        self.rondeloting3.clear()
        self.antwoordloting1.clear()
        self.antwoordloting2.clear()
        self.antwoordloting3.clear()
        self.origineelWachtlijstPBox.clear()
        for index, ploegnaam in enumerate(self.PH.getPloegNamen()):
            self.origineelPBox.addItem(ploegnaam)
            self.tafelnummerBox.addItem(str(index + 1) + ': ' + ploegnaam)
        for index, ploegnaam in enumerate(self.PH.getPloegNamenWachtlijst()):
            self.origineelWachtlijstPBox.addItem(ploegnaam)
        for index, rondenaam in enumerate(self.RH.getRondeNames()):
            self.origineelRBox.addItem(rondenaam)
            self.rondeloting1.addItem(rondenaam)
            self.rondeloting2.addItem(rondenaam)
            self.rondeloting3.addItem(rondenaam)
            self.rondeNummerBox.addItem(str(index + 1) + ': ' + rondenaam)

        self.origineelPBox.setCurrentIndex(-1)
        self.rondeloting1.setCurrentIndex(-1)
        self.rondeloting2.setCurrentIndex(-1)
        self.rondeloting3.setCurrentIndex(-1)
        self.tafelnummerBox.setCurrentIndex(-1)
        self.origineelRBox.setCurrentIndex(-1)
        self.rondeNummerBox.setCurrentIndex(-1)
        self.origineelWachtlijstPBox.setCurrentIndex(-1)

    def fillInfoFields(self):
        Pindex = self.origineelPBox.currentIndex()
        Ptext = self.origineelPBox.currentText()
        Rindex = self.origineelRBox.currentIndex()
        Rtext = self.origineelRBox.currentText()
        Wtext = self.origineelWachtlijstPBox.currentText()
        Windex = self.origineelWachtlijstPBox.currentIndex()
        if Rindex > -1 and len(Rtext) > 1:
            info = self.RH.getRondeInfo(Rtext)
            self.RondenaamTxt.setText(info[1])
            self.AfkortingTxt.setText(info[2])
            self.superCheck.setChecked(int(info[4]))
            self.bonusCheck.setChecked(int(info[5]))
            self.NOQBOX.setValue(int(info[3]))
            self.rondeNummerBox.setCurrentIndex(Rindex)

        else:
            self.RondenaamTxt.setText('')
            self.AfkortingTxt.setText('')
            self.superCheck.setChecked(int(0))
            self.bonusCheck.setChecked(int(0))
            self.NOQBOX.setValue(int('0'))

        if Pindex > -1 and len(Ptext) > 1:
            info = self.PH.getPloegInfo(Ptext)
            self.PloegnaamTxt.setText(info[2])
            self.VoornaamTxt.setText(info[3])
            self.AchternaamTxt.setText(info[4])
            self.EmailTxt.setText(info[5])
            self.tafelnummerBox.setCurrentIndex(Pindex)
        else:
            self.PloegnaamTxt.setText('')
            self.VoornaamTxt.setText('')
            self.AchternaamTxt.setText('')
            self.EmailTxt.setText('')

        if Windex > -1 and len(Wtext) > 1:
            info = self.PH.getPloegInfoWachtlijst(Wtext)
            self.PloegTxt.setText(info[1])
            self.VoornmTxt.setText(info[2])
            self.AchternmTxt.setText(info[3])
            self.MailTxt.setText(info[4])
        else:
            self.PloegTxt.setText('')
            self.VoornmTxt.setText('')
            self.AchternmTxt.setText('')
            self.MailTxt.setText('')

    def fillAntwoorden1(self):
        self.antwoordloting1.clear()
        if self.rondeloting1.currentIndex() >= 0:
            antwoorden = self.RH.getAntwoorden(
                self.rondeloting1.currentIndex())
            for i in range(1, len(antwoorden)):
                self.antwoordloting1.addItem(antwoorden[i])

    def fillAntwoorden2(self):
        self.antwoordloting2.clear()
        if self.rondeloting2.currentIndex() >= 0:
            antwoorden = self.RH.getAntwoorden(
                self.rondeloting2.currentIndex())
            for i in range(1, len(antwoorden)):
                self.antwoordloting2.addItem(antwoorden[i])

    def fillAntwoorden3(self):
        self.antwoordloting3.clear()
        if self.rondeloting3.currentIndex() >= 0:
            antwoorden = self.RH.getAntwoorden(
                self.rondeloting3.currentIndex())
            for i in range(1, len(antwoorden)):
                self.antwoordloting3.addItem(antwoorden[i])

    def emailUitnodiging(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je al de uitnodigingen wil versturen. Kijk zeker na in email_handler wat de volgorde is van belangrijkheid van quiz!'
        ):
            answer, ok = QtWidgets.QInputDialog.getInt(
                self, 'Start index', 'Wat is de laatst verzonden index?')
            if ok:
                self.EH.sendUitnodigingen(int(answer))

    def emailUitnodigingReminder(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je herinneringen wil versturen? Kijk zeker na in email_handler wat de volgorde is van belangrijkheid van quiz, normaal naar de laatste 2 edities van deze en de meest recente quiz'
        ):
            answer, ok = QtWidgets.QInputDialog.getInt(
                self, 'Start index', 'Wat is de laatst verzonden index?')
            if ok:
                self.EH.sendUitnodigingenReminder(int(answer))

    def emailBetalingQR(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je vraag tot betaling wil versturen naar iedereen? Kijk zeker na in email_handler wat het onderwerp is van de mail'
        ):
            a = 1
            for ploeginfo in self.PH.getPloegenDict():
                self.EH.sendBetalingQR(ploeginfo)
                a = a + 1

    def emailBetalingReminder(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je de betalingsreminder wil versturen naar iedereen die nog niet betaald heeft? Kijk zeker na in email_handler wat het onderwerp is van de mail'
        ):
            for ploeginfo in self.PH.getPloegenDict():
                if not bool(int(ploeginfo['Betaald'])):
                    self.EH.sendBetalingReminder(ploeginfo)

    def emailQRLastDay(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je echt de laatste info wil versturen naar iedereen? Kijk zeker na in email_handler wat het onderwerp is van de mail'
        ):
            for ploeginfo in self.PH.getPloegenDict():
                self.EH.sendWrapUp(ploeginfo)

    def emailEindstand(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je de eindstand wil versturen naar iedereen? Kijk zeker na in email_handler wat het onderwerp is van de mail'
        ):
            self.EH.sendEindstand()

    def betalingToevoegen(self):
        dialog = QtWidgets.QFileDialog()
        dialog.setViewMode(QtWidgets.QFileDialog.Detail)
        if (dialog.exec()):
            filenames = dialog.selectedFiles()
            self.PH.setBetalingen(filenames[0])

    def resetAanmelden(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je al de aanmeldingen, en dus ook de scores, wilt resetten?'
        ):
            self.PH.resetAlleAanmeldingen()
            self.SH.clearScoresDir()
            self.SH.clearImagesDir()

    def resetPloegen(self):
        if self.questionBox(
                'Zeker?',
                'Zeker dat je al de aanmeldingen, en dus ook de scores, wilt verwijderen?'
        ):
            self.PH.verwijderAllePloegen()
            self.SH.clearScoresDir()
            self.SH.clearImagesDir()
            self.fillComboBoxes()

    def resetRondes(self):
        if self.questionBox('Zeker?',
                            'Zeker dat je al de rondes wilt verwijderen?'):
            self.RH.verwijderAlleRondes()
            self.SH.clearScoresDir()
            self.SH.clearImagesDir()
            self.fillComboBoxes()

    def totalReset(self):
        if self.questionBox(
                'Zeker?', 'Zeker dat je alles van deze quiz wil verwijderen?'):
            self.RH.verwijderAlleRondes()
            self.PH.verwijderAllePloegen()
            self.SH.clearScoresDir()
            self.SH.clearImagesDir()
            self.fillComboBoxes()

    def nieuweRonde(self):
        index1 = self.origineelRBox.currentIndex()
        index2 = self.rondeNummerBox.currentIndex()
        Ronde1 = self.origineelRBox.currentText()
        rondeInfo = self.getRondeSettings()
        self.RH.nieuweRonde(rondeInfo)

        if not index1 == index2 and index2 > -1:
            if self.questionBox(
                    'Ronde invoegen?',
                    'Zeker dat je {} als ronde {} wilt plaatsen?'.format(
                        rondeInfo[0], index2 + 1)):
                self.RH.insertRondeBefore(rondeInfo[0], index2 + 1)
        self.fillComboBoxes()

    def updateRonde(self):
        index1 = self.origineelRBox.currentIndex()
        index2 = self.rondeNummerBox.currentIndex()
        Ronde1 = self.origineelRBox.currentText()
        rondeInfo = self.getRondeSettings()
        self.RH.updateRondeInfo(Ronde1, rondeInfo)

        if not index1 == index2 and index2 > -1:
            if self.questionBox(
                    'Ronde invoegen?',
                    'Zeker dat je {} als ronde {} wilt plaatsen?'.format(
                        rondeInfo[0], index2 + 1)):
                self.RH.insertRondeBefore(rondeInfo[0], index2 + 1)

        self.fillComboBoxes()

    def getRondeSettings(self):
        rondeInfo = []
        rondeInfo.append(self.RondenaamTxt.text())
        rondeInfo.append(self.AfkortingTxt.text())
        rondeInfo.append(self.NOQBOX.value())
        rondeInfo.append(int(self.superCheck.isChecked()))
        rondeInfo.append(int(self.bonusCheck.isChecked()))
        return rondeInfo

    def verwijderRonde(self):
        index1 = self.origineelRBox.currentIndex()
        Ronde1 = self.origineelRBox.currentText()
        self.RH.verwijderRonde(Ronde1)

    def updatePloeg(self):
        index1 = self.origineelPBox.currentIndex()
        index2 = self.tafelnummerBox.currentIndex()
        ploeg1 = self.origineelPBox.currentText()

        ploegInfo = []
        ploegInfo.append(self.PloegnaamTxt.text())
        ploegInfo.append(self.VoornaamTxt.text())
        ploegInfo.append(self.AchternaamTxt.text())
        ploegInfo.append(self.EmailTxt.text())
        self.PH.updatePloegInfo(ploeg1, ploegInfo)

        if not index1 == index2 and index2 > -1:
            if self.questionBox(
                    'Tafelnummers wisselen?',
                    'Zeker dat je {} wilt wisselen met tafelnummer {} wilt wisselen?'
                    .format(ploeg1, index2 + 1)):
                self.PH.wisselTafelnummers(ploeg1, index2 + 1)

        self.fillComboBoxes()

    def verwijderPloeg(self):
        Pindex = self.origineelPBox.currentIndex()
        Ptext = self.origineelPBox.currentText()
        if Pindex > -1 and len(Ptext) > 1:
            if self.questionBox(
                    'Ploeg verwijderen?',
                    'Zeker dat je {} wilt uitschrijven?'.format(Ptext)):
                self.PH.verwijderPloeg(Ptext)
                self.fillComboBoxes()

    def sendBetalingEmailPloeg(self):
        Ptext = self.origineelPBox.currentText()
        info = self.PH.getPloegInfo(Ptext)
        if self.questionBox(
                'Zeker?',
                'Zeker dat je de betaling wil versturen naar deze ploeg? Kijk zeker na in email_handler wat het onderwerp is van de mail'
        ):
            self.EH.sendBetalingQRSimpel(info)

    def verplaatsPloeg(self):
        info = self.PH.getPloegInfoWachtlijst(
            self.origineelWachtlijstPBox.currentText())
        self.PH.ploegToevoegenWachtlijst(info)
        self.fillComboBoxes()
        if self.questionBox('Zeker?',
                            'Wil je ook een inschrijivngsmail versturen?'):
            self.EH.bevestigingInschrijving(
                [info[1], info[2], info[3], info[4]])

    def uitnodigenPloeg(self):
        info = self.PH.getPloegInfoWachtlijst(
            self.origineelWachtlijstPBox.currentText())
        self.EH.sendWachtlijstUitnogiding(info)

    def updateAllPloegen(self):
        self.PH.updatePloegGeneral()
        self.PH.autoUpdate()
        #self.PH.sorteerPloegGeneral()
        print(
            'DEBUG mode: Ploeg General is niet gesorteerd om overzicht te behouden, enkel uncomment na de quiz best'
        )

    def updateOverzicht(self):
        aantalAangemeld, aantalHuidigeInschrijvingen, aantalInschrijvingen, aantalBetaald = self.PH.aantalPloegen(
        )
        bedrag = self.PH.getBetalingen()

        self.actieveTxt.setText(str(aantalHuidigeInschrijvingen))
        self.totaalTxt.setText(str(aantalInschrijvingen))
        self.betaaldTxt.setText(str(aantalBetaald))
        self.bedragTxt.setText('€' + str(bedrag))
        self.geenEmailTxt.setText(str(self.PH.aantalZonder()))

        try:
            config = configparser.ConfigParser()
            config.read('settings.ini')
            self.tresholdTxt.setText(config.get('COMMON', 'TRESHOLD'))
            self.percentageTxt.setText(config.get('COMMON', 'BOXPERCENT'))
            self.moeilijkTxt.setText(config.get('COMMON', 'MOEILIJKTRESHOLD'))

        except Exception as error_msg:
            print("Error while trying to read Settings.")
            print({"Error": str(error_msg)})

    def saveOverzicht(self):
        filename = 'settings.ini'
        parser = configparser.ConfigParser()
        parser.read(filename)
        parser.set('COMMON', 'TRESHOLD', self.tresholdTxt.text())
        parser.set('COMMON', 'BOXPERCENT', self.percentageTxt.text())
        parser.set('COMMON', 'MOEILIJKTRESHOLD', self.moeilijkTxt.text())
        with open(filename, 'w') as configfile:
            parser.write(configfile)

    def msgBox(self, text, titel):
        msg = QtWidgets.QMessageBox()
        msg.setIcon(QtWidgets.QMessageBox.Information)
        msg.setText(text)
        msg.setWindowTitle(titel)
        msg.exec()

    def questionBox(self, titel, message):
        qm = QtWidgets.QMessageBox()
        answer = qm.question(QtWidgets.QDialog(), titel, message,
                             qm.Yes | qm.No)
        if answer == qm.Yes:
            return True
        return False

    def maakAndSendLoting(self):
        self.maakLoting()
        self.EH.sendLoting()

    def maakLoting(self):
        juistloting1 = []
        juistloting2 = []
        juistloting3 = []
        ploegnamen = self.PH.getPloegNamen()
        RN1 = self.rondeloting1.currentIndex() + 1
        VN1 = self.antwoordloting1.currentIndex() + 1
        RN2 = self.rondeloting2.currentIndex() + 1
        VN2 = self.antwoordloting2.currentIndex() + 1
        RN3 = self.rondeloting3.currentIndex() + 1
        VN3 = self.antwoordloting3.currentIndex() + 1
        for i, ploeg in enumerate(ploegnamen):
            if self.PH.isAanwezig(i + 1):
                score1 = self.SH.getScore(RN1, i + 1)
                score2 = self.SH.getScore(RN2, i + 1)
                score3 = self.SH.getScore(RN3, i + 1)
                if int(score1[VN1 - 1]) == int(self.juistloting1.isChecked()):
                    juistloting1.append(ploeg)
                if int(score2[VN2 - 1]) == int(self.juistloting2.isChecked()):
                    juistloting2.append(ploeg)
                if int(score3[VN2 - 1]) == int(self.juistloting3.isChecked()):
                    juistloting3.append(ploeg)
            else:
                i = i - 1

        answers = []
        answers.append(self.antwoordloting1.currentText())
        answers.append(self.antwoordloting2.currentText())
        answers.append(self.antwoordloting3.currentText())

        self.EH.saveLoting(answers, juistloting1, juistloting2, juistloting3)