pipeline {
    agent any

    stages {
        stage('Restore tlw-database-tool') {
            steps {
                copyArtifacts filter: '**/tlw-database-tool-1.0.jar', fingerprintArtifacts: true, projectName: 'build tlw-database-tool', selector: lastSuccessful(), target: '.'
            }
        }
        stage('GetAndWriteChecksum') {
            steps {
                script {
                    String jdkPath = tool name: 'OpenJDK22', type: 'jdk'
                    withCredentials([
                        usernamePassword(credentialsId: 'aws', usernameVariable: 'AWS_ACCESS_KEY_ID', passwordVariable: 'AWS_SECRET_ACCESS_KEY'),
                        usernamePassword(credentialsId: 'forum_database', usernameVariable: 'TLW_DATABASE_USERNAME', passwordVariable: 'TLW_DATABASE_PASSWORD'),
                        usernamePassword(credentialsId: 'forum_user', usernameVariable: 'FORUM_USERNAME', passwordVariable: 'FORUM_PASSWORD')
                    ]) {
                        withEnv([
                            "JAVA_HOME=${jdkPath}/jdk-22.0.2"
                        ]) {
                            String checksum_tippliga = sh returnStdout: true, script: "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode PostChecksum --season ${season} --league 1 --configFile Tippliga 2>&1"
                            writeFile file: 'checksum_tippliga.txt', text: checksum_tippliga
                            archiveArtifacts artifacts: 'checksum_tippliga.txt', followSymlinks: false
                            String checksum_wtlpokal = sh returnStdout: true, script: "$JAVA_HOME/bin/java -jar build/libs/tlw-database-tool-1.0.jar --mode PostChecksum --season ${season} --league 1 --configFile WTL-Pokal 2>&1"
                            writeFile file: 'checksum_wtlpokal.txt', text: checksum_wtlpokal
                            archiveArtifacts artifacts: 'checksum_wtlpokal.txt', followSymlinks: false
                        }
                    }
                }
            }
        }
        stage('CompareChecksums') {
            steps {
                copyArtifacts filter: 'checksum*', fingerprintArtifacts: true, projectName: 'CheckGistUpdates', selector: lastWithArtifacts(), target: 'last'
                script {
                    String checksumTippliga = readFile 'checksum_tippliga.txt'
                    String lastChecksumTippliga = readFile 'last/checksum_tippliga.txt'
                    String checksumWTLPokal = readFile 'checksum_wtlpokal.txt'
                    String lastChecksumWTLPokal = readFile 'last/checksum_wtlpokal.txt'
                    if(!checksumTippliga.equals(lastChecksumTippliga)){
                        telegramSendManual('Tippliga Update')
                        build wait: false, job: 'TippligaUpdater'
                    }
                    if(!checksumWTLPokal.equals(lastChecksumWTLPokal)){
                        telegramSendManual('WTL-Pokal Update')
                        build wait: false, job: 'WTLPokalUpdater'
                    }
                }
            }
        }
    }
    post {
        failure {
            telegramSendManual("Build failed!\n${env.BUILD_URL}console")
        }
    }
}

def telegramSendManual(String text) {
    sleep 1
    def encodedMessage = URLEncoder.encode(text, "UTF-8")
    println encodedMessage
    httpRequest(
        httpMode: 'GET',
        contentType: 'APPLICATION_JSON',
        responseHandle: 'NONE',
        url: "https://api.telegram.org/bot1298223079:AAEplcQpfzFG59qNYAYuSbJKtB9HMXCCE_U/sendMessage?text=$encodedMessage&chat_id=459231986&disable_web_page_preview=true",
        wrapAsMultipart: false,
        consoleLogResponseBody: true
    )
}
