Skip to content

Commit ba50846

Browse files
committed
ECWID-135161 Added mass update method for product reviews
1 parent 562a44c commit ba50846

8 files changed

Lines changed: 79 additions & 0 deletions

File tree

src/main/kotlin/com/ecwid/apiclient/v3/ApiClient.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,4 +304,5 @@ interface ProductReviewsApiClient {
304304
fun getProductReviewDetails(request: ProductReviewDetailsRequest): FetchedProductReview
305305
fun updateProductReviewStatus(request: ProductReviewUpdateStatusRequest): ProductReviewUpdateStatusResult
306306
fun deleteProductReview(request: ProductReviewDeleteRequest): ProductReviewDeleteResult
307+
fun massUpdateProductReview(request: ProductReviewMassUpdateRequest): ProductReviewMassUpdateResult
307308
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.ecwid.apiclient.v3.dto.productreview.enums
2+
3+
enum class ProductReviewSelectMode {
4+
SELECTED,
5+
ALL_FILTERED,
6+
ALL,
7+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.ecwid.apiclient.v3.dto.productreview.request
2+
3+
import com.ecwid.apiclient.v3.dto.common.ApiRequestDTO
4+
import com.ecwid.apiclient.v3.dto.productreview.enums.ProductReviewSelectMode
5+
import com.ecwid.apiclient.v3.dto.productreview.enums.ProductReviewStatus
6+
import java.time.Instant
7+
8+
data class ProductReviewMassUpdate(
9+
val reviewIds: List<Long>? = null,
10+
val selectMode: ProductReviewSelectMode? = null,
11+
val delete: Boolean = false,
12+
val newStatus: ProductReviewStatus? = null,
13+
val filters: Filters? = null,
14+
) : ApiRequestDTO {
15+
16+
data class Filters(
17+
val productId: String? = null,
18+
val status: ProductReviewStatus? = null,
19+
val rating: Int? = null,
20+
val createdFrom: Instant? = null,
21+
val createdTo: Instant? = null,
22+
)
23+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.ecwid.apiclient.v3.dto.productreview.request
2+
3+
import com.ecwid.apiclient.v3.dto.ApiRequest
4+
import com.ecwid.apiclient.v3.httptransport.HttpBody
5+
import com.ecwid.apiclient.v3.impl.RequestInfo
6+
7+
data class ProductReviewMassUpdateRequest(
8+
val updateInfo: ProductReviewMassUpdate = ProductReviewMassUpdate(),
9+
) : ApiRequest {
10+
override fun toRequestInfo() = RequestInfo.createPutRequest(
11+
pathSegments = listOf(
12+
"reviews",
13+
"mass_update",
14+
),
15+
params = mapOf(),
16+
httpBody = HttpBody.JsonBody(
17+
obj = updateInfo
18+
)
19+
)
20+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.ecwid.apiclient.v3.dto.productreview.result
2+
3+
import com.ecwid.apiclient.v3.dto.common.ApiResultDTO
4+
5+
data class ProductReviewMassUpdateResult(
6+
val updateCount: Int = 0
7+
) : ApiResultDTO

src/main/kotlin/com/ecwid/apiclient/v3/impl/ProductReviewsApiClientImpl.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,7 @@ class ProductReviewsApiClientImpl(
2222

2323
override fun deleteProductReview(request: ProductReviewDeleteRequest) =
2424
apiClientHelper.makeObjectResultRequest<ProductReviewDeleteResult>(request)
25+
26+
override fun massUpdateProductReview(request: ProductReviewMassUpdateRequest) =
27+
apiClientHelper.makeObjectResultRequest<ProductReviewMassUpdateResult>(request)
2528
}

src/test/kotlin/com/ecwid/apiclient/v3/rule/NullablePropertyRules.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ val nullablePropertyRules: List<NullablePropertyRule<*, *>> = listOf(
159159
fetchedSlugInfoClassesNullablePropertyRules,
160160
slugInfoRequestNullablePropertyRules,
161161
fetchedProductReviewNullablePropertyRules,
162+
productReviewsMassUpdateRequestNullablePropertyRules,
162163
productReviewsSearchRequestNullablePropertyRules,
163164
).flatten()
164165

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.ecwid.apiclient.v3.rule.nullablepropertyrules
2+
3+
import com.ecwid.apiclient.v3.dto.productreview.request.ProductReviewMassUpdate
4+
import com.ecwid.apiclient.v3.rule.NullablePropertyRule
5+
import com.ecwid.apiclient.v3.rule.NullablePropertyRule.AllowNullable
6+
7+
val productReviewsMassUpdateRequestNullablePropertyRules: List<NullablePropertyRule<*, *>> = listOf(
8+
AllowNullable(ProductReviewMassUpdate.Filters::createdFrom),
9+
AllowNullable(ProductReviewMassUpdate.Filters::createdTo),
10+
AllowNullable(ProductReviewMassUpdate.Filters::productId),
11+
AllowNullable(ProductReviewMassUpdate.Filters::rating),
12+
AllowNullable(ProductReviewMassUpdate.Filters::status),
13+
AllowNullable(ProductReviewMassUpdate::filters),
14+
AllowNullable(ProductReviewMassUpdate::newStatus),
15+
AllowNullable(ProductReviewMassUpdate::reviewIds),
16+
AllowNullable(ProductReviewMassUpdate::selectMode),
17+
)

0 commit comments

Comments
 (0)