Skip to content

Commit

Permalink
moved createNewGroup & syncGroupPayload to group module (#2175)
Browse files Browse the repository at this point in the history
b

moved createNewGroup & syncGroupPayload to group module
  • Loading branch information
itsPronay committed Aug 5, 2024
1 parent c9fc705 commit 0e8e54c
Show file tree
Hide file tree
Showing 38 changed files with 673 additions and 343 deletions.
11 changes: 8 additions & 3 deletions core/data/src/main/java/com/mifos/core/data/di/DataModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.mifos.core.data.repository.ClientChargeRepository
import com.mifos.core.data.repository.ClientIdentifierDialogRepository
import com.mifos.core.data.repository.ClientIdentifiersRepository
import com.mifos.core.data.repository.CreateNewCenterRepository
import com.mifos.core.data.repository.CreateNewGroupRepository
import com.mifos.core.data.repository.DataTableDataRepository
import com.mifos.core.data.repository.DataTableRowDialogRepository
import com.mifos.core.data.repository.DocumentListRepository
Expand All @@ -30,6 +31,7 @@ import com.mifos.core.data.repository.ReportCategoryRepository
import com.mifos.core.data.repository.ReportDetailRepository
import com.mifos.core.data.repository.SearchRepository
import com.mifos.core.data.repository.SignatureRepository
import com.mifos.core.data.repository.SyncGroupPayloadsRepository
import com.mifos.core.data.repository_imp.ActivateRepositoryImp
import com.mifos.core.data.repository_imp.CenterDetailsRepositoryImp
import com.mifos.core.data.repository_imp.CenterListRepositoryImp
Expand All @@ -40,6 +42,7 @@ import com.mifos.core.data.repository_imp.ClientChargeRepositoryImp
import com.mifos.core.data.repository_imp.ClientIdentifierDialogRepositoryImp
import com.mifos.core.data.repository_imp.ClientIdentifiersRepositoryImp
import com.mifos.core.data.repository_imp.CreateNewCenterRepositoryImp
import com.mifos.core.data.repository_imp.CreateNewGroupRepositoryImp
import com.mifos.core.data.repository_imp.DataTableDataRepositoryImp
import com.mifos.core.data.repository_imp.DataTableRowDialogRepositoryImp
import com.mifos.core.data.repository_imp.DocumentListRepositoryImp
Expand All @@ -59,6 +62,7 @@ import com.mifos.core.data.repository_imp.ReportCategoryRepositoryImp
import com.mifos.core.data.repository_imp.ReportDetailRepositoryImp
import com.mifos.core.data.repository_imp.SearchRepositoryImp
import com.mifos.core.data.repository_imp.SignatureRepositoryImp
import com.mifos.core.data.repository_imp.SyncGroupPayloadsRepositoryImp
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
Expand All @@ -75,9 +79,7 @@ abstract class DataModule {
abstract fun bindNewIndividualCollectionSheetRepository(impl: NewIndividualCollectionSheetRepositoryImp): NewIndividualCollectionSheetRepository

@Binds
internal abstract fun provideGroupListRepository(
groupsListRepositoryImpl: GroupsListRepositoryImpl
): GroupsListRepository
internal abstract fun provideGroupListRepository(groupsListRepositoryImpl: GroupsListRepositoryImpl): GroupsListRepository

@Binds
internal abstract fun provideGroupDetailsRepository(impl: GroupDetailsRepositoryImp): GroupDetailsRepository
Expand Down Expand Up @@ -106,6 +108,9 @@ abstract class DataModule {
@Binds
internal abstract fun bindClientIdentifiersRepository(impl: ClientIdentifiersRepositoryImp): ClientIdentifiersRepository

@Binds
internal abstract fun bindCreateNewGroupRepository(impl: CreateNewGroupRepositoryImp): CreateNewGroupRepository

@Binds
internal abstract fun bindPinpointRepository(impl: PinPointClientRepositoryImp): PinPointClientRepository

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mifos.mifosxdroid.online.createnewgroup
package com.mifos.core.data.repository

import com.mifos.core.datastore.PrefManager
import com.mifos.core.objects.group.GroupPayload
import com.mifos.core.objects.organisation.Office
import com.mifos.core.objects.response.SaveResponse
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mifos.mifosxdroid.offline.syncgrouppayloads
package com.mifos.core.data.repository

import com.mifos.core.objects.group.GroupPayload
import com.mifos.core.objects.response.SaveResponse
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mifos.mifosxdroid.online.createnewgroup
package com.mifos.core.data.repository_imp

import com.mifos.core.data.repository.CreateNewGroupRepository
import com.mifos.core.network.datamanager.DataManagerGroups
import com.mifos.core.network.datamanager.DataManagerOffices
import com.mifos.core.objects.group.GroupPayload
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mifos.mifosxdroid.offline.syncgrouppayloads
package com.mifos.core.data.repository_imp

import com.mifos.core.data.repository.SyncGroupPayloadsRepository
import com.mifos.core.network.datamanager.DataManagerGroups
import com.mifos.core.objects.group.GroupPayload
import com.mifos.core.objects.response.SaveResponse
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.SyncGroupPayloadsRepository
import com.mifos.core.objects.group.GroupPayload
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import rx.Subscriber
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Inject

/**
* Created by Pronay Sarker on 02/08/2024 (12:04 AM)
*/
class AllDatabaseGroupPayloadUseCase @Inject constructor(private val repository: SyncGroupPayloadsRepository) {

suspend operator fun invoke(): Flow<Resource<List<GroupPayload>>> =
callbackFlow {
try {
trySend(Resource.Loading())

repository.allDatabaseGroupPayload()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(object : Subscriber<List<GroupPayload>>() {
override fun onCompleted() {}

override fun onError(e: Throwable) {
trySend(Resource.Error(e.message.toString()))
}

override fun onNext(groupPayloads: List<GroupPayload> ) {
trySend(Resource.Success(groupPayloads))
}
})

awaitClose { channel.close() }
} catch (e: Exception) {
trySend(Resource.Error(e.message.toString()))
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.CreateNewGroupRepository
import com.mifos.core.objects.group.GroupPayload
import com.mifos.core.objects.response.SaveResponse
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import rx.Subscriber
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Inject

class CreateGroupUseCase @Inject constructor(private val repository: CreateNewGroupRepository) {

suspend operator fun invoke(groupPayload : GroupPayload): Flow<Resource<SaveResponse>> = callbackFlow {
try {
trySend(Resource.Loading())

repository.createGroup(groupPayload)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(object : Subscriber<SaveResponse>() {
override fun onCompleted() {}

override fun onError(e: Throwable) {
trySend(Resource.Error(e.message.toString()))
}

override fun onNext(group: SaveResponse) {
trySend(Resource.Success(group))
}
})

awaitClose { channel.close() }
} catch (e: Exception) {
trySend(Resource.Error(e.message.toString()))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.CreateNewGroupRepository
import com.mifos.core.objects.group.GroupPayload
import com.mifos.core.objects.response.SaveResponse
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import rx.Subscriber
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Inject

/**
* Created by Pronay Sarker on 01/08/2024 (9:18 AM)
*/
class CreateNewGroupUseCase @Inject constructor(private val repository: CreateNewGroupRepository) {

suspend operator fun invoke(groupPayload: GroupPayload): Flow<Resource<SaveResponse>> = callbackFlow {
try {
trySend(Resource.Loading())

repository.createGroup(groupPayload)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(object : Subscriber<SaveResponse>() {
override fun onCompleted() {
}

override fun onError(e: Throwable) {
trySend(Resource.Error(e.message.toString()))
}

override fun onNext(saveResponse: SaveResponse) {
trySend(Resource.Success(saveResponse))
}
})

awaitClose { channel.close() }
}
catch (e: Exception){
trySend(Resource.Error(e.message.toString()))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.CenterPayload
import com.mifos.core.data.repository.CreateNewCenterRepository
import com.mifos.core.data.repository.SyncGroupPayloadsRepository
import com.mifos.core.domain.R
import com.mifos.core.objects.group.GroupPayload
import com.mifos.core.objects.response.SaveResponse
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import rx.Subscriber
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Inject

/**
* Created by Pronay Sarker on 01/08/2024 (9:13 PM)
*/
class DeleteAndUpdateGroupPayloadUseCase @Inject constructor(private val repository: SyncGroupPayloadsRepository) {

suspend operator fun invoke(id: Int): Flow<Resource<List<GroupPayload>>> =
callbackFlow {
try {
trySend(Resource.Loading())

repository.deleteAndUpdateGroupPayloads(id)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(object : Subscriber<List<GroupPayload>>() {
override fun onCompleted() {}

override fun onError(e: Throwable) {
trySend(Resource.Error(e.message.toString()))
}

override fun onNext(groupPayloads: List<GroupPayload>) {
trySend(Resource.Success(groupPayloads))
}
})

awaitClose { channel.close() }
} catch (e: Exception) {
trySend(Resource.Error(e.message.toString()))
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.CreateNewGroupRepository
import com.mifos.core.data.repository.GroupListRepository
import com.mifos.core.objects.organisation.Office
import com.mifos.core.objects.zipmodels.GroupAndGroupAccounts
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.flow
import rx.Observable
import rx.Subscriber
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Inject

/**
* Created by Pronay Sarker on 01/08/2024 (8:23 AM)
*/

class GetGroupOfficesUseCase @Inject constructor(private val repository: CreateNewGroupRepository) {

suspend operator fun invoke(): Flow<Resource<List<Office>>> = callbackFlow {
try {
trySend(Resource.Loading())

repository.offices()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(object : Subscriber<List<Office>>() {
override fun onCompleted() { }

override fun onError(e: Throwable) {
trySend(Resource.Error(e.message.toString()))
}

override fun onNext(offices: List<Office>) {
trySend(Resource.Success(offices))
}
})

awaitClose { channel.close() }
} catch (e: Exception) {
trySend(Resource.Error(e.message.toString()))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.SyncGroupPayloadsRepository
import com.mifos.core.objects.group.GroupPayload
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import rx.Subscriber
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Inject

/**
* Created by Pronay Sarker on 01/08/2024 (10:26 PM)
*/
class UpdateGroupPayloadUseCase @Inject constructor(private val repository: SyncGroupPayloadsRepository) {

suspend operator fun invoke(groupPayload : GroupPayload): Flow<Resource<GroupPayload>> =
callbackFlow {
try {
trySend(Resource.Loading())

repository.updateGroupPayload(groupPayload)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(object : Subscriber<GroupPayload>() {
override fun onCompleted() {}

override fun onError(e: Throwable) {
trySend(Resource.Error(e.message.toString()))
}

override fun onNext(groupPayload: GroupPayload) {
trySend(Resource.Success(groupPayload))
}
})

awaitClose { channel.close() }
} catch (e: Exception) {
trySend(Resource.Error(e.message.toString()))
}
}

}
2 changes: 2 additions & 0 deletions core/domain/src/main/res/values/string.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,6 @@

<string name="core_domain_error_tenant_blank">Server tenant cannot be blank</string>
<string name="core_domain_error_tenant_invalid">Server tenant must only contain alphanumeric characters</string>


</resources>
1 change: 1 addition & 0 deletions feature/groups/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ plugins {
alias(libs.plugins.mifos.android.library.jacoco)
}


android {
namespace = "com.mifos.feature.groups"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mifos.feature.groupsList
package com.mifos.feature.groups

import androidx.activity.ComponentActivity
import androidx.compose.foundation.lazy.LazyListState
Expand Down Expand Up @@ -35,8 +35,7 @@ import com.mifos.core.domain.use_cases.GroupsListPagingDataSource
import com.mifos.core.objects.group.Group
import com.mifos.core.testing.repository.TestGroupsListRepository
import com.mifos.core.testing.repository.sampleGroups
import com.mifos.feature.groups.R
import com.mifos.feature.groupsList.group_list.GroupsListScreen
import com.mifos.feature.groups.group_list.GroupsListScreen
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.runBlocking
Expand Down
Loading

0 comments on commit 0e8e54c

Please sign in to comment.