Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: Moved createNewGroup & syncGroupPayload to group module #2175

Merged
merged 1 commit into from
Aug 5, 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
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
Loading