diff --git a/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt b/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt index 4cbaa1e..21f5c4f 100644 --- a/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt +++ b/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt @@ -21,6 +21,11 @@ object MemberRecordService { return recordCollection.findOne(MemberRecord::_id eq bsonId) } + fun findByMemberIdBetweenDate(id: String, start: Long, end: Long): MemberRecord? { + val bsonId: Id = ObjectId(id).toId() + return recordCollection.findOne(MemberRecord::memberId eq bsonId, MemberRecord::createdAt gte start, MemberRecord::createdAt lt end) + } + fun findByTimeBetween(start: Long, end: Long): List { return recordCollection.find(MemberRecord::createdAt gte start, MemberRecord::createdAt lt end).toList() } diff --git a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt index 95416f4..9f40b13 100644 --- a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt +++ b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt @@ -32,20 +32,38 @@ fun Application.configureMemberRecordRouting() { } post("/{id}") { val id = call.parameters.getOrFail("id") - val now = Calendar.getInstance() - val record = call.receive() val member = MemberService.findById(id) ?: run { call.respond(HttpStatusCode.NotFound) return@post } - record.apply { + + val now = Calendar.getInstance() + val startTime = getDayStartLong(now[Calendar.YEAR], now[Calendar.MONTH], now[Calendar.DAY_OF_MONTH]) + val endTime = getDayEndLong(now[Calendar.YEAR], now[Calendar.MONTH], now[Calendar.DAY_OF_MONTH]) + val existData = MemberRecordService.findByMemberIdBetweenDate(id, startTime, endTime) ?: run { + record.apply { + memberId = member._id + createdAt = System.currentTimeMillis() + updatedAt = System.currentTimeMillis() + } + MemberRecordService.create(record).let { + call.respond(HttpStatusCode.OK, record) + } + return@post + } + existData.apply { memberId = member._id - createdAt = System.currentTimeMillis() + record1 = record.record1 + record1c = record.record1c + record2 = record.record2 + record2c = record.record2c + record3 = record.record3 + record3c = record.record3c updatedAt = System.currentTimeMillis() } - MemberRecordService.create(record).let { - call.respond(HttpStatusCode.OK, record) + MemberRecordService.updateById(existData._id.toString(), existData).let { + call.respond(HttpStatusCode.OK, existData) } } get("/{year}/{month}/{day}") {