Skip to content

Commit 394edcd

Browse files
authored
Nps creating (#166)
* feat(nps): repository * feat(nps): di * feat(sdk): nps review method * fix(nps): remove suspend modifier
1 parent 6d8fa0d commit 394edcd

4 files changed

Lines changed: 81 additions & 0 deletions

File tree

personalization-sdk/src/main/kotlin/com/personalization/SDK.kt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.personalization.di.DaggerSdkComponent
2121
import com.personalization.features.notification.data.mapper.toNotificationData
2222
import com.personalization.features.notification.presentation.helpers.NotificationHelper
2323
import com.personalization.handlers.notifications.NotificationHandler
24+
import com.personalization.sdk.domain.repositories.NPSRepository
2425
import com.personalization.sdk.domain.usecases.network.AddTaskToQueueUseCase
2526
import com.personalization.sdk.domain.usecases.network.InitNetworkUseCase
2627
import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase
@@ -111,6 +112,9 @@ open class SDK {
111112
@Inject
112113
lateinit var notificationHelper: NotificationHelper
113114

115+
@Inject
116+
lateinit var NPSRepository: NPSRepository
117+
114118
/**
115119
* @param shopId Shop key
116120
*/
@@ -404,6 +408,22 @@ open class SDK {
404408
}
405409
}
406410

411+
fun review(
412+
rate: Int,
413+
channel: String,
414+
category: String,
415+
orderId: String? = null,
416+
comment: String? = null,
417+
listener: OnApiCallbackListener? = null
418+
) = NPSRepository.review(
419+
rate = rate,
420+
channel = channel,
421+
category = category,
422+
orderId = orderId,
423+
comment = comment,
424+
listener = listener
425+
)
426+
407427
/**
408428
* Request a dynamic block of recommendations
409429
*

personalization-sdk/src/main/kotlin/com/personalization/sdk/data/di/RepositoriesModule.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ package com.personalization.sdk.data.di
33
import com.personalization.sdk.data.repositories.advertising.AdvertisingRepositoryImpl
44
import com.personalization.sdk.data.repositories.network.NetworkRepositoryImpl
55
import com.personalization.sdk.data.repositories.notification.NotificationRepositoryImpl
6+
import com.personalization.sdk.data.repositories.nps.NPSRepositoryImpl
67
import com.personalization.sdk.data.repositories.preferences.PreferencesRepositoryImpl
78
import com.personalization.sdk.data.repositories.recommendation.RecommendationRepositoryImpl
89
import com.personalization.sdk.data.repositories.userSettings.UserSettingsRepositoryImpl
910
import com.personalization.sdk.domain.repositories.AdvertisingRepository
11+
import com.personalization.sdk.domain.repositories.NPSRepository
1012
import com.personalization.sdk.domain.repositories.NetworkRepository
1113
import com.personalization.sdk.domain.repositories.NotificationRepository
1214
import com.personalization.sdk.domain.repositories.PreferencesRepository
@@ -39,4 +41,7 @@ abstract class RepositoriesModule {
3941
@Binds
4042
abstract fun bindAdvertisingRepository(impl: AdvertisingRepositoryImpl): AdvertisingRepository
4143

44+
@Binds
45+
abstract fun bindNPSRepository(impl: NPSRepositoryImpl): NPSRepository
46+
4247
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.personalization.sdk.data.repositories.nps
2+
3+
import com.personalization.api.OnApiCallbackListener
4+
import com.personalization.sdk.domain.repositories.NPSRepository
5+
import com.personalization.sdk.domain.usecases.network.SendNetworkMethodUseCase
6+
import org.json.JSONObject
7+
import javax.inject.Inject
8+
9+
private const val METHOD_CREATE = "nps/create"
10+
private const val KEY_RATE = "rate"
11+
private const val KEY_CHANNEL = "channel"
12+
private const val KEY_CATEGORY = "category"
13+
private const val KEY_ORDER_ID = "order_id"
14+
private const val KEY_COMMENT = "comment"
15+
16+
class NPSRepositoryImpl @Inject constructor(
17+
private val sendNetworkMethodUseCase: SendNetworkMethodUseCase
18+
) : NPSRepository {
19+
20+
override fun review(
21+
rate: Int,
22+
channel: String,
23+
category: String,
24+
orderId: String?,
25+
comment: String?,
26+
listener: OnApiCallbackListener?
27+
) {
28+
val params = JSONObject().apply {
29+
put(KEY_RATE, rate)
30+
put(KEY_CHANNEL, channel)
31+
put(KEY_CATEGORY, category)
32+
orderId?.let { put(KEY_ORDER_ID, it) }
33+
comment?.let { put(KEY_COMMENT, it) }
34+
}
35+
36+
sendNetworkMethodUseCase.postAsync(
37+
method = METHOD_CREATE,
38+
params = params,
39+
listener = listener
40+
)
41+
}
42+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.personalization.sdk.domain.repositories
2+
3+
import com.personalization.api.OnApiCallbackListener
4+
5+
interface NPSRepository {
6+
fun review(
7+
rate: Int,
8+
channel: String,
9+
category: String,
10+
orderId: String?,
11+
comment: String?,
12+
listener: OnApiCallbackListener? = null
13+
)
14+
}

0 commit comments

Comments
 (0)