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 5d96cce..9455c1a 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,19 @@ class InvoiceLocalDataSourceImpl(private val invoiceCollection: MongoCollection< }.toList() override suspend fun addInvoices(id: String, invoices: List): Boolean = try { - invoiceCollection.insertMany(invoices.map { it.copy(userId = id) }.toDBO()).wasAcknowledged() + val localInvoices = getInvoicesOfUser(id) + var lastUpdatedId = localInvoices.map { it.idApp }.maxByOrNull { it } ?: 0 + invoices.map { it.copy(userId = id) }.toDBO().map { + invoiceCollection.insertOne( + if (localInvoices.any { localInvoice -> localInvoice.idApp == it.idApp }) { + lastUpdatedId++ + it.copy(idApp = lastUpdatedId) + + } else { + it + } + ).wasAcknowledged() + }.all { it } } catch (e: Throwable) { println(e.stackTraceToString())