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

refactor: refactor generate collection sheet to compose #2174

Merged
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
5 changes: 5 additions & 0 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 @@ -13,6 +13,7 @@ import com.mifos.core.data.repository.ClientIdentifiersRepository
import com.mifos.core.data.repository.CreateNewCenterRepository
import com.mifos.core.data.repository.DataTableDataRepository
import com.mifos.core.data.repository.DocumentListRepository
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.data.repository.GroupDetailsRepository
import com.mifos.core.data.repository.GroupListRepository
import com.mifos.core.data.repository.GroupLoanAccountRepository
Expand Down Expand Up @@ -40,6 +41,7 @@ import com.mifos.core.data.repository_imp.ClientIdentifiersRepositoryImp
import com.mifos.core.data.repository_imp.CreateNewCenterRepositoryImp
import com.mifos.core.data.repository_imp.DataTableDataRepositoryImp
import com.mifos.core.data.repository_imp.DocumentListRepositoryImp
import com.mifos.core.data.repository_imp.GenerateCollectionSheetRepositoryImp
import com.mifos.core.data.repository_imp.GroupDetailsRepositoryImp
import com.mifos.core.data.repository_imp.GroupListRepositoryImp
import com.mifos.core.data.repository_imp.GroupLoanAccountRepositoryImp
Expand Down Expand Up @@ -146,4 +148,7 @@ abstract class DataModule {

@Binds
internal abstract fun provideSearchRepository(repository: SearchRepositoryImp): SearchRepository

@Binds
internal abstract fun bindGenerateCollectionSheetRepository(impl: GenerateCollectionSheetRepositoryImp): GenerateCollectionSheetRepository
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mifos.mifosxdroid.online.generatecollectionsheet
package com.mifos.core.data.repository

import com.mifos.core.network.GenericResponse
import com.mifos.core.objects.collectionsheet.CenterDetail
Expand All @@ -9,39 +9,38 @@ import com.mifos.core.objects.collectionsheet.ProductiveCollectionSheetPayload
import com.mifos.core.objects.group.Center
import com.mifos.core.objects.group.CenterWithAssociations
import com.mifos.core.objects.group.Group
import rx.Observable

/**
* Created by Aditya Gupta on 12/08/23.
*/
interface GenerateCollectionSheetRepository {

fun getCentersInOffice(id: Int, params: Map<String, String>): Observable<List<Center>>
suspend fun getCentersInOffice(id: Int, params: Map<String, String>): List<Center>

fun getGroupsByOffice(
suspend fun getGroupsByOffice(
office: Int,
params: Map<String, String>
): Observable<List<Group>>
): List<Group>

fun fetchGroupsAssociatedWithCenter(centerId: Int): Observable<CenterWithAssociations>
suspend fun fetchGroupsAssociatedWithCenter(centerId: Int): CenterWithAssociations

fun fetchCenterDetails(
suspend fun fetchCenterDetails(
format: String?, locale: String?, meetingDate: String?, officeId: Int, staffId: Int
): Observable<List<CenterDetail>>
): List<CenterDetail>

fun fetchProductiveCollectionSheet(
suspend fun fetchProductiveCollectionSheet(
centerId: Int, payload: CollectionSheetRequestPayload?
): Observable<CollectionSheetResponse>
): CollectionSheetResponse

fun fetchCollectionSheet(
suspend fun fetchCollectionSheet(
groupId: Int, payload: CollectionSheetRequestPayload?
): Observable<CollectionSheetResponse>
): CollectionSheetResponse

fun submitProductiveSheet(
suspend fun submitProductiveSheet(
centerId: Int, payload: ProductiveCollectionSheetPayload?
): Observable<GenericResponse>
): GenericResponse

fun submitCollectionSheet(
suspend fun submitCollectionSheet(
groupId: Int, payload: CollectionSheetPayload?
): Observable<GenericResponse>
): GenericResponse
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.mifos.mifosxdroid.online.generatecollectionsheet
package com.mifos.core.data.repository_imp

import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.network.DataManager
import com.mifos.core.network.GenericResponse
import com.mifos.core.network.datamanager.DataManagerCollectionSheet
Expand All @@ -11,7 +12,6 @@ import com.mifos.core.objects.collectionsheet.ProductiveCollectionSheetPayload
import com.mifos.core.objects.group.Center
import com.mifos.core.objects.group.CenterWithAssociations
import com.mifos.core.objects.group.Group
import rx.Observable
import javax.inject.Inject

/**
Expand All @@ -22,31 +22,31 @@ class GenerateCollectionSheetRepositoryImp @Inject constructor(
private val collectionDataManager: DataManagerCollectionSheet
) : GenerateCollectionSheetRepository {

override fun getCentersInOffice(
override suspend fun getCentersInOffice(
id: Int,
params: Map<String, String>
): Observable<List<Center>> {
): List<Center> {
return dataManager.getCentersInOffice(id, params)
}

override fun getGroupsByOffice(
override suspend fun getGroupsByOffice(
office: Int,
params: Map<String, String>
): Observable<List<Group>> {
): List<Group> {
return dataManager.getGroupsByOffice(office, params)
}

override fun fetchGroupsAssociatedWithCenter(centerId: Int): Observable<CenterWithAssociations> {
override suspend fun fetchGroupsAssociatedWithCenter(centerId: Int): CenterWithAssociations {
return collectionDataManager.fetchGroupsAssociatedWithCenter(centerId)
}

override fun fetchCenterDetails(
override suspend fun fetchCenterDetails(
format: String?,
locale: String?,
meetingDate: String?,
officeId: Int,
staffId: Int
): Observable<List<CenterDetail>> {
): List<CenterDetail> {
return collectionDataManager.fetchCenterDetails(
format,
locale,
Expand All @@ -56,31 +56,31 @@ class GenerateCollectionSheetRepositoryImp @Inject constructor(
)
}

override fun fetchProductiveCollectionSheet(
override suspend fun fetchProductiveCollectionSheet(
centerId: Int,
payload: CollectionSheetRequestPayload?
): Observable<CollectionSheetResponse> {
): CollectionSheetResponse {
return collectionDataManager.fetchProductiveCollectionSheet(centerId, payload)
}

override fun fetchCollectionSheet(
override suspend fun fetchCollectionSheet(
groupId: Int,
payload: CollectionSheetRequestPayload?
): Observable<CollectionSheetResponse> {
): CollectionSheetResponse {
return collectionDataManager.fetchCollectionSheet(groupId, payload)
}

override fun submitProductiveSheet(
override suspend fun submitProductiveSheet(
centerId: Int,
payload: ProductiveCollectionSheetPayload?
): Observable<GenericResponse> {
): GenericResponse {
return collectionDataManager.submitProductiveSheet(centerId, payload)
}

override fun submitCollectionSheet(
override suspend fun submitCollectionSheet(
groupId: Int,
payload: CollectionSheetPayload?
): Observable<GenericResponse> {
): GenericResponse {
return collectionDataManager.submitCollectionSheet(groupId, payload)
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.objects.collectionsheet.CenterDetail
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class FetchCenterDetailsUseCase @Inject constructor(
private val repository: GenerateCollectionSheetRepository
) {

suspend operator fun invoke(
format: String?,
locale: String?,
meetingDate: String?,
officeId: Int,
staffId: Int
): Flow<Resource<List<CenterDetail>>> = flow {
try {
emit(Resource.Loading())
val response =
repository.fetchCenterDetails(format, locale, meetingDate, officeId, staffId)
emit(Resource.Success(response))

} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}

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

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.objects.collectionsheet.CollectionSheetRequestPayload
import com.mifos.core.objects.collectionsheet.CollectionSheetResponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class FetchCollectionSheetUseCase @Inject constructor(private val repository: GenerateCollectionSheetRepository) {

suspend operator fun invoke(
groupId: Int,
payload: CollectionSheetRequestPayload?
): Flow<Resource<CollectionSheetResponse>> = flow {
try {
emit(Resource.Loading())
val response = repository.fetchCollectionSheet(groupId, payload)
emit(Resource.Success(response))

} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}

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

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.objects.group.CenterWithAssociations
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class FetchGroupsAssociatedWithCenterUseCase @Inject constructor(
private val repository: GenerateCollectionSheetRepository
) {

suspend operator fun invoke(centerId: Int): Flow<Resource<CenterWithAssociations>> = flow {

try {
emit(Resource.Loading())
val response = repository.fetchGroupsAssociatedWithCenter(centerId)
emit(Resource.Success(response))

} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.objects.collectionsheet.CollectionSheetRequestPayload
import com.mifos.core.objects.collectionsheet.CollectionSheetResponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class FetchProductiveCollectionSheetUseCase @Inject constructor(
private val repository: GenerateCollectionSheetRepository
) {

suspend operator fun invoke(
centerId: Int,
payload: CollectionSheetRequestPayload?
): Flow<Resource<CollectionSheetResponse>> = flow {
try {
emit(Resource.Loading())
val response = repository.fetchProductiveCollectionSheet(centerId, payload)
emit(Resource.Success(response))

} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}

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

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.objects.group.Center
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class GetCentersInOfficeUseCase @Inject constructor(
private val repository: GenerateCollectionSheetRepository
) {

suspend operator fun invoke(
id: Int,
params: Map<String, String>
): Flow<Resource<List<Center>>> = flow {
try {
emit(Resource.Loading())
val centers = repository.getCentersInOffice(id, params)
emit(Resource.Success(centers))

} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.objects.group.Group
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class GetGroupsByOfficeUseCase @Inject constructor(
private val repository: GenerateCollectionSheetRepository
) {

suspend operator fun invoke(
officeId: Int,
params: Map<String, String>
): Flow<Resource<List<Group>>> = flow {
try {
emit(Resource.Loading())
val response = repository.getGroupsByOffice(officeId, params)
emit(Resource.Success(response))
} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.mifos.core.domain.use_cases

import com.mifos.core.common.utils.Resource
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.network.GenericResponse
import com.mifos.core.objects.collectionsheet.CollectionSheetPayload
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
import javax.inject.Inject

class SubmitCollectionSheetUseCase @Inject constructor(private val repository: GenerateCollectionSheetRepository) {

suspend operator fun invoke(
groupId: Int,
payload: CollectionSheetPayload?
): Flow<Resource<GenericResponse>> = flow {
try {
emit(Resource.Loading())
val response = repository.submitCollectionSheet(groupId, payload)
emit(Resource.Success(response))

} catch (exception: Exception) {
emit(Resource.Error(exception.message.toString()))
}
}
}
Loading
Loading