From d0869b235aecf992a4f31cc74b0dbc6cdeaa791d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sat, 27 Mar 2021 13:43:25 +0100 Subject: [PATCH] Use db student id to distinguish reporting units and recipients (#1254) --- .../io/github/wulkanowy/data/db/dao/RecipientDao.kt | 4 ++-- .../io/github/wulkanowy/data/db/entities/Recipient.kt | 2 +- .../github/wulkanowy/data/mappers/RecipientMapper.kt | 2 +- .../wulkanowy/data/mappers/ReportingUnitMapper.kt | 2 +- .../wulkanowy/data/repositories/RecipientRepository.kt | 10 +++++----- .../data/repositories/ReportingUnitRepository.kt | 10 +++++----- .../wulkanowy/data/repositories/RecipientLocalTest.kt | 4 ++-- 7 files changed, 17 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/RecipientDao.kt b/app/src/main/java/io/github/wulkanowy/data/db/dao/RecipientDao.kt index 943f3f0c..c2787ac3 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/RecipientDao.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/RecipientDao.kt @@ -9,6 +9,6 @@ import javax.inject.Singleton @Dao interface RecipientDao : BaseDao { - @Query("SELECT * FROM Recipients WHERE student_id = :userLoginId AND unit_id = :unitId AND role = :role") - suspend fun loadAll(userLoginId: Int, unitId: Int, role: Int): List + @Query("SELECT * FROM Recipients WHERE student_id = :studentId AND unit_id = :unitId AND role = :role") + suspend fun loadAll(studentId: Int, unitId: Int, role: Int): List } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/entities/Recipient.kt b/app/src/main/java/io/github/wulkanowy/data/db/entities/Recipient.kt index b1f1f353..3021da72 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/entities/Recipient.kt +++ b/app/src/main/java/io/github/wulkanowy/data/db/entities/Recipient.kt @@ -9,7 +9,7 @@ import java.io.Serializable data class Recipient( @ColumnInfo(name = "student_id") - val userLoginId: Int, + val studentId: Int, @ColumnInfo(name = "real_id") val realId: String, diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/RecipientMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/RecipientMapper.kt index 9996f680..80bddaab 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/RecipientMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/RecipientMapper.kt @@ -5,7 +5,7 @@ import io.github.wulkanowy.sdk.pojo.Recipient as SdkRecipient fun List.mapToEntities(userLoginId: Int) = map { Recipient( - userLoginId = userLoginId, + studentId = userLoginId, realId = it.id, realName = it.name, name = it.shortName, diff --git a/app/src/main/java/io/github/wulkanowy/data/mappers/ReportingUnitMapper.kt b/app/src/main/java/io/github/wulkanowy/data/mappers/ReportingUnitMapper.kt index 71ea7099..6a21d59f 100644 --- a/app/src/main/java/io/github/wulkanowy/data/mappers/ReportingUnitMapper.kt +++ b/app/src/main/java/io/github/wulkanowy/data/mappers/ReportingUnitMapper.kt @@ -6,7 +6,7 @@ import io.github.wulkanowy.sdk.pojo.ReportingUnit as SdkReportingUnit fun List.mapToEntities(student: Student) = map { ReportingUnit( - studentId = student.studentId, + studentId = student.id.toInt(), unitId = it.id, roles = it.roles, senderId = it.senderId, diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/RecipientRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/RecipientRepository.kt index 24ab5f0c..975a30a2 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/RecipientRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/RecipientRepository.kt @@ -19,22 +19,22 @@ class RecipientRepository @Inject constructor( ) { suspend fun refreshRecipients(student: Student, unit: ReportingUnit, role: Int) { - val new = sdk.init(student).getRecipients(unit.unitId, role).mapToEntities(unit.senderId) - val old = recipientDb.loadAll(unit.senderId, unit.unitId, role) + val new = sdk.init(student).getRecipients(unit.unitId, role).mapToEntities(unit.studentId) + val old = recipientDb.loadAll(unit.studentId, unit.unitId, role) recipientDb.deleteAll(old uniqueSubtract new) recipientDb.insertAll(new uniqueSubtract old) } suspend fun getRecipients(student: Student, unit: ReportingUnit, role: Int): List { - return recipientDb.loadAll(unit.senderId, unit.unitId, role).ifEmpty { + return recipientDb.loadAll(unit.studentId, unit.unitId, role).ifEmpty { refreshRecipients(student, unit, role) - recipientDb.loadAll(unit.senderId, unit.unitId, role) + recipientDb.loadAll(unit.studentId, unit.unitId, role) } } suspend fun getMessageRecipients(student: Student, message: Message): List { - return sdk.init(student).getMessageRecipients(message.messageId, message.senderId).mapToEntities(student.userLoginId) + return sdk.init(student).getMessageRecipients(message.messageId, message.senderId).mapToEntities(student.studentId) } } diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/ReportingUnitRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/ReportingUnitRepository.kt index 792e66b5..b9caf978 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/ReportingUnitRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/ReportingUnitRepository.kt @@ -18,25 +18,25 @@ class ReportingUnitRepository @Inject constructor( suspend fun refreshReportingUnits(student: Student) { val new = sdk.init(student).getReportingUnits().mapToEntities(student) - val old = reportingUnitDb.load(student.studentId) + val old = reportingUnitDb.load(student.id.toInt()) reportingUnitDb.deleteAll(old.uniqueSubtract(new)) reportingUnitDb.insertAll(new.uniqueSubtract(old)) } suspend fun getReportingUnits(student: Student): List { - return reportingUnitDb.load(student.studentId).ifEmpty { + return reportingUnitDb.load(student.id.toInt()).ifEmpty { refreshReportingUnits(student) - reportingUnitDb.load(student.studentId) + reportingUnitDb.load(student.id.toInt()) } } suspend fun getReportingUnit(student: Student, unitId: Int): ReportingUnit? { - return reportingUnitDb.loadOne(student.studentId, unitId) ?: run { + return reportingUnitDb.loadOne(student.id.toInt(), unitId) ?: run { refreshReportingUnits(student) - return reportingUnitDb.loadOne(student.studentId, unitId) + return reportingUnitDb.loadOne(student.id.toInt(), unitId) } } } diff --git a/app/src/test/java/io/github/wulkanowy/data/repositories/RecipientLocalTest.kt b/app/src/test/java/io/github/wulkanowy/data/repositories/RecipientLocalTest.kt index 43a36191..82406ef4 100644 --- a/app/src/test/java/io/github/wulkanowy/data/repositories/RecipientLocalTest.kt +++ b/app/src/test/java/io/github/wulkanowy/data/repositories/RecipientLocalTest.kt @@ -54,7 +54,7 @@ class RecipientLocalTest { coEvery { recipientDb.deleteAll(any()) } just Runs // execute - val res = runBlocking { recipientRepository.getRecipients(student, ReportingUnit(1, 123, "", 4, "", listOf()), 7) } + val res = runBlocking { recipientRepository.getRecipients(student, ReportingUnit(4, 123, "", 4, "", listOf()), 7) } // verify assertEquals(3, res.size) @@ -73,7 +73,7 @@ class RecipientLocalTest { coEvery { recipientDb.deleteAll(any()) } just Runs // execute - val res = runBlocking { recipientRepository.getRecipients(student, ReportingUnit(1, 123, "", 4, "", listOf()), 7) } + val res = runBlocking { recipientRepository.getRecipients(student, ReportingUnit(4, 123, "", 4, "", listOf()), 7) } // verify assertEquals(3, res.size)