diff --git a/src/main/kotlin/com/ray650128/pcredive/Application.kt b/src/main/kotlin/com/ray650128/pcredive/Application.kt index 61f8d6e..e91e76c 100644 --- a/src/main/kotlin/com/ray650128/pcredive/Application.kt +++ b/src/main/kotlin/com/ray650128/pcredive/Application.kt @@ -1,10 +1,17 @@ package com.ray650128.pcredive +import com.ray650128.pcredive.database.model.MemberRecord +import com.ray650128.pcredive.database.model.Record +import com.ray650128.pcredive.database.service.MemberRecordService +import com.ray650128.pcredive.database.service.MemberService import io.ktor.server.application.* import com.ray650128.pcredive.plugins.* +import java.util.* -fun main(args: Array): Unit = +fun main(args: Array) { + startTimer() io.ktor.server.netty.EngineMain.main(args) +} @Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused. fun Application.module() { @@ -13,3 +20,37 @@ fun Application.module() { configureMemberRouting() configureMemberRecordRouting() } + +private fun startTimer() { + val date = Date() + val timer = Timer() + timer.schedule(object : TimerTask() { + override fun run() { + val c = Calendar.getInstance() + val hour = c[Calendar.HOUR_OF_DAY] + val minute = c[Calendar.MINUTE] + val second = c[Calendar.SECOND] + val day = c[Calendar.DAY_OF_MONTH] + val lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH) + //println("Time: $day, ${String.format("%2d:%2d:%2d", hour, minute, second)}") + if ((day in (lastDay - 5)..lastDay) && (hour == 5 && minute == 0 && second == 0)) { + val members = MemberService.findAll(false) + members.forEach { member -> + MemberRecordService.create( + MemberRecord( + memberId = member._id, + record1 = Record(""), + record1c = Record(""), + record2 = Record(""), + record2c = Record(""), + record3 = Record(""), + record3c = Record(""), + createdAt = System.currentTimeMillis(), + updatedAt = System.currentTimeMillis() + ) + ) + } + } + } + }, date, 1000L) +} \ No newline at end of file diff --git a/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt b/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt index 42c5aa0..0d20d31 100644 --- a/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt +++ b/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt @@ -9,12 +9,12 @@ import org.litote.kmongo.newId data class MemberRecord( @Contextual var _id: Id = newId(), @Contextual var memberId: Id? = null, - var record1: Record = Record("未出"), - var record1c: Record = Record("未出"), - var record2: Record = Record("未出"), - var record2c: Record = Record("未出"), - var record3: Record = Record("未出"), - var record3c: Record = Record("未出"), + var record1: Record = Record(""), + var record1c: Record = Record(""), + var record2: Record = Record(""), + var record2c: Record = Record(""), + var record3: Record = Record(""), + var record3c: Record = Record(""), var createdAt: Long? = null, var updatedAt: Long? = null ) diff --git a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt index a938496..cfa34cf 100644 --- a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt +++ b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt @@ -135,7 +135,7 @@ fun getData(year: Int, month: Int, day: Int): List { val records = ArrayList() val memberList = MemberService.findAll() memberList.forEach { member -> - if (member.createAt!! < startTime && !member.leave) { + if ((member.createAt!! < startTime || member.createAt!! > endTime) && !member.leave) { records.add( RecordData(member = member, null) )