Skip to content
This repository has been archived by the owner on Feb 4, 2025. It is now read-only.

Preparations to support order deletion from the app #2972

Merged
merged 3 commits into from
Mar 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ import dagger.Binds
import dagger.Module
import dagger.Provides
import org.wordpress.android.fluxc.module.DatabaseModule
import org.wordpress.android.fluxc.persistence.OrderSqlUtils
import org.wordpress.android.fluxc.persistence.TransactionExecutor
import org.wordpress.android.fluxc.persistence.WCAndroidDatabase
import org.wordpress.android.fluxc.persistence.dao.AddonsDao
import org.wordpress.android.fluxc.persistence.dao.CouponsDao
import org.wordpress.android.fluxc.persistence.dao.OrdersDao
import javax.inject.Inject
import javax.inject.Singleton

@Module(
Expand Down Expand Up @@ -49,6 +51,11 @@ interface WCDatabaseModule {

@Provides fun provideWooPaymentsDepositsOverviewDao(database: WCAndroidDatabase) =
database.wooPaymentsDepositsOverviewDao

/**
* OrderSqlUtils is a Kotlin object, we can't use [Inject] to inject it.
*/
@Provides fun provideOrderSqlUtils() = OrderSqlUtils
}
@Binds fun bindTransactionExecutor(database: WCAndroidDatabase): TransactionExecutor
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ import org.wordpress.android.fluxc.model.list.ListDescriptor
import org.wordpress.android.fluxc.model.list.ListDescriptorTypeIdentifier
import org.wordpress.android.fluxc.model.list.ListDescriptorUniqueIdentifier

class WCOrderListDescriptor(
data class WCOrderListDescriptor(
val site: SiteModel,
val statusFilter: String? = null,
val searchQuery: String? = null,
val excludeFutureOrders: Boolean = false,
val beforeFilter: String? = null,
val afterFilter: String? = null,
val productId: Long? = null,
val customerId: Long? = null
val customerId: Long? = null,
val excludedIds: List<Long>? = null
) : ListDescriptor {
override val config: ListConfig = ListConfig.default

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,8 @@ class OrderRestClient @Inject constructor(
"before" to listDescriptor.beforeFilter,
"after" to listDescriptor.afterFilter,
"customer" to listDescriptor.customerId?.toString(),
"product" to listDescriptor.productId?.toString()
"product" to listDescriptor.productId?.toString(),
"exclude" to listDescriptor.excludedIds?.joinToString()
)

val response = wooNetwork.executeGetGsonRequest(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,15 @@ object OrderSqlUtils {
.execute()
}

fun deleteOrderSummaryById(site: SiteModel, orderId: Long) {
WellSql.delete(WCOrderSummaryModel::class.java)
.where()
.equals(WCOrderSummaryModelTable.LOCAL_SITE_ID, site.id)
.equals(WCOrderSummaryModelTable.REMOTE_ORDER_ID, orderId)
.endWhere()
.execute()
}

fun insertOrUpdateOrderStatusOption(orderStatus: WCOrderStatusModel): Int {
val result = WellSql.select(WCOrderStatusModel::class.java)
.where().beginGroup()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import org.wordpress.android.fluxc.model.order.UpdateOrderRequest
import org.wordpress.android.fluxc.network.rest.wpcom.wc.WooResult
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderDtoMapper.Companion.toDto
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderRestClient
import org.wordpress.android.fluxc.persistence.OrderSqlUtils
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
import org.wordpress.android.fluxc.persistence.dao.OrdersDaoDecorator
import org.wordpress.android.fluxc.store.WCOrderStore.OnOrderChanged
Expand All @@ -37,7 +38,8 @@ class OrderUpdateStore @Inject internal constructor(
private val coroutineEngine: CoroutineEngine,
private val wcOrderRestClient: OrderRestClient,
private val ordersDaoDecorator: OrdersDaoDecorator,
private val siteSqlUtils: SiteSqlUtils
private val siteSqlUtils: SiteSqlUtils,
private val orderSqlUtils: OrderSqlUtils
) {
suspend fun updateCustomerOrderNote(
orderId: Long,
Expand Down Expand Up @@ -276,6 +278,7 @@ class OrderUpdateStore @Inject internal constructor(
WooResult(result.error)
} else {
ordersDaoDecorator.deleteOrder(site.localId(), orderId)
orderSqlUtils.deleteOrderSummaryById(site, orderId)
WooResult(Unit)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.CoreOrderStatus
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderDto.Billing
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderDto.Shipping
import org.wordpress.android.fluxc.network.rest.wpcom.wc.order.OrderRestClient
import org.wordpress.android.fluxc.persistence.OrderSqlUtils
import org.wordpress.android.fluxc.persistence.SiteSqlUtils
import org.wordpress.android.fluxc.persistence.dao.OrdersDaoDecorator
import org.wordpress.android.fluxc.store.WCOrderStore.OnOrderChanged
Expand All @@ -45,6 +46,7 @@ class OrderUpdateStoreTest {
private val siteSqlUtils: SiteSqlUtils = mock {
on { getSiteWithLocalId(any()) } doReturn site
}
private val orderSqlUtils: OrderSqlUtils = mock()
private val ordersDaoDecorator: OrdersDaoDecorator = mock {
onBlocking { getOrder(TEST_REMOTE_ORDER_ID, TEST_LOCAL_SITE_ID) } doReturn initialOrder
}
Expand All @@ -56,9 +58,10 @@ class OrderUpdateStoreTest {
TestCoroutineScope().coroutineContext,
mock()
),
orderRestClient,
ordersDaoDecorator,
siteSqlUtils
wcOrderRestClient = orderRestClient,
ordersDaoDecorator = ordersDaoDecorator,
siteSqlUtils = siteSqlUtils,
orderSqlUtils = orderSqlUtils
)
}

Expand Down Expand Up @@ -518,6 +521,7 @@ class OrderUpdateStoreTest {
)

verify(ordersDaoDecorator).deleteOrder(site.localId(), TEST_REMOTE_ORDER_ID)
verify(orderSqlUtils).deleteOrderSummaryById(site, TEST_REMOTE_ORDER_ID)
}

private companion object {
Expand Down
Loading