diff --git a/src/main/kotlin/es/wokis/data/bo/user/UserBO.kt b/src/main/kotlin/es/wokis/data/bo/user/UserBO.kt index 67905f3..d2f976c 100644 --- a/src/main/kotlin/es/wokis/data/bo/user/UserBO.kt +++ b/src/main/kotlin/es/wokis/data/bo/user/UserBO.kt @@ -3,6 +3,7 @@ package es.wokis.data.bo.user import es.wokis.data.constants.ServerConstants.DEFAULT_LANG import es.wokis.data.constants.ServerConstants.EMPTY_TEXT import io.ktor.server.auth.* +import java.util.* data class UserBO( val id: String? = null, @@ -11,5 +12,13 @@ data class UserBO( val password: String, val image: String = EMPTY_TEXT, val lang: String = DEFAULT_LANG, + val createdOn: Long = Date().time, + val emailVerified: Boolean = false, + val badges: List = emptyList(), val devices: List = emptyList() -) : Principal \ No newline at end of file +) : Principal + +data class BadgeBO( + val id: Int, + val color: String +) diff --git a/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt b/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt index 797bf4b..5d96cce 100644 --- a/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt +++ b/src/main/kotlin/es/wokis/data/datasource/invoice/InvoiceLocalDataSource.kt @@ -31,7 +31,7 @@ class InvoiceLocalDataSourceImpl(private val invoiceCollection: MongoCollection< }.toList() override suspend fun addInvoices(id: String, invoices: List): Boolean = try { - invoiceCollection.insertMany(invoices.toDBO()).wasAcknowledged() + invoiceCollection.insertMany(invoices.map { it.copy(userId = id) }.toDBO()).wasAcknowledged() } catch (e: Throwable) { println(e.stackTraceToString()) @@ -39,7 +39,7 @@ class InvoiceLocalDataSourceImpl(private val invoiceCollection: MongoCollection< } override suspend fun updateInvoices(id: String, invoices: List): Boolean = try { - invoices.toDBO().map { + invoices.map { it.copy(userId = id) }.toDBO().map { invoiceCollection.updateOne(InvoiceDBO::id eq it.id, it).wasAcknowledged() }.all { it } diff --git a/src/main/kotlin/es/wokis/data/dbo/user/UserDBO.kt b/src/main/kotlin/es/wokis/data/dbo/user/UserDBO.kt index d69adba..6323b6f 100644 --- a/src/main/kotlin/es/wokis/data/dbo/user/UserDBO.kt +++ b/src/main/kotlin/es/wokis/data/dbo/user/UserDBO.kt @@ -4,6 +4,7 @@ import es.wokis.data.constants.ServerConstants import es.wokis.data.constants.ServerConstants.DEFAULT_LANG import org.bson.codecs.pojo.annotations.BsonId import org.litote.kmongo.Id +import java.util.Date data class UserDBO( @BsonId @@ -13,5 +14,13 @@ data class UserDBO( val password: String, val lang: String = DEFAULT_LANG, val image: String = ServerConstants.EMPTY_TEXT, + val createdOn: Long = Date().time, + val emailVerified: Boolean = false, + val badges: List = emptyList(), val devices: List = emptyList() +) + +data class BadgeDBO( + val id: Int, + val color: String ) \ No newline at end of file diff --git a/src/main/kotlin/es/wokis/data/dto/user/UserDTO.kt b/src/main/kotlin/es/wokis/data/dto/user/UserDTO.kt index 28bf509..80359d7 100644 --- a/src/main/kotlin/es/wokis/data/dto/user/UserDTO.kt +++ b/src/main/kotlin/es/wokis/data/dto/user/UserDTO.kt @@ -1,6 +1,7 @@ package es.wokis.data.dto.user import es.wokis.data.constants.ServerConstants +import java.util.* data class UserDTO( val id: String, @@ -8,5 +9,13 @@ data class UserDTO( val email: String, val image: String = ServerConstants.EMPTY_TEXT, val lang: String, + val createdOn: Long = Date().time, + val emailVerified: Boolean = false, + val badges: List = emptyList(), val devices: List = emptyList() +) + +data class BadgeDTO( + val id: Int, + val color: String ) \ No newline at end of file diff --git a/src/main/kotlin/es/wokis/data/mapper/user/UserMapper.kt b/src/main/kotlin/es/wokis/data/mapper/user/UserMapper.kt index ff24351..3279e0a 100644 --- a/src/main/kotlin/es/wokis/data/mapper/user/UserMapper.kt +++ b/src/main/kotlin/es/wokis/data/mapper/user/UserMapper.kt @@ -1,8 +1,11 @@ package es.wokis.data.mapper.user +import es.wokis.data.bo.user.BadgeBO import es.wokis.data.bo.user.UserBO import es.wokis.data.constants.ServerConstants.EMPTY_TEXT +import es.wokis.data.dbo.user.BadgeDBO import es.wokis.data.dbo.user.UserDBO +import es.wokis.data.dto.user.BadgeDTO import es.wokis.data.dto.user.UserDTO import es.wokis.data.dto.user.auth.LoginDTO import es.wokis.data.dto.user.auth.RegisterDTO @@ -29,7 +32,10 @@ fun UserDTO.toBO() = UserBO( password = EMPTY_TEXT, image = image, lang = lang, - devices = devices + devices = devices, + badges = badges.toBO(), + createdOn = createdOn, + emailVerified = emailVerified ) fun UserBO.toDBO() = UserDBO( @@ -39,7 +45,10 @@ fun UserBO.toDBO() = UserDBO( password = password, lang = lang, image = image, - devices = devices + devices = devices, + badges = badges.toDBO(), + createdOn = createdOn, + emailVerified = emailVerified ) fun UserDBO.toBO() = UserBO( @@ -49,7 +58,10 @@ fun UserDBO.toBO() = UserBO( password = password, image = image, lang = lang, - devices = devices + devices = devices, + badges = badges.toBO(), + createdOn = createdOn, + emailVerified = emailVerified ) fun List?.toDTO() = this?.map { it.toDTO() }.orEmpty() @@ -60,5 +72,38 @@ fun UserBO.toDTO() = UserDTO( email = email, image = image, lang = lang, - devices = devices + devices = devices, + badges = badges.toDTO(), + createdOn = createdOn, + emailVerified = emailVerified +) + +@JvmName("toBOBadgeDTO") +fun List.toBO() = this.map { it.toBO() } + +fun List.toBO() = this.map { it.toBO() } + +fun List.toDBO() = this.map { it.toDBO() } + +@JvmName("toDTOBadgeBO") +fun List.toDTO() = this.map { it.toDTO() } + +fun BadgeDTO.toBO() = BadgeBO( + id = id, + color = color +) + +fun BadgeDBO.toBO() = BadgeBO( + id = id, + color = color +) + +fun BadgeBO.toDBO() = BadgeDBO( + id = id, + color = color +) + +fun BadgeBO.toDTO() = BadgeDTO( + id = id, + color = color ) \ No newline at end of file diff --git a/src/main/kotlin/es/wokis/data/repository/user/UserRepository.kt b/src/main/kotlin/es/wokis/data/repository/user/UserRepository.kt index 6252f9e..0e0def1 100644 --- a/src/main/kotlin/es/wokis/data/repository/user/UserRepository.kt +++ b/src/main/kotlin/es/wokis/data/repository/user/UserRepository.kt @@ -77,7 +77,8 @@ class UserRepositoryImpl(private val userLocalDataSource: UserLocalDataSource) : getUserByEmail(email)?.let { userNotNull -> updateUser( userNotNull.copy( - image = imageUrl + image = imageUrl, + emailVerified = true ) ) }