Skip to content

Commit

Permalink
refactor: refactor generate collection sheet to compose (#2174)
Browse files Browse the repository at this point in the history
  • Loading branch information
Aditya-gupta99 authored Jul 30, 2024
1 parent dad94b7 commit 87a470e
Show file tree
Hide file tree
Showing 24 changed files with 1,574 additions and 1,226 deletions.
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 @@ -14,6 +14,7 @@ import com.mifos.core.data.repository.CreateNewCenterRepository
import com.mifos.core.data.repository.DataTableDataRepository
import com.mifos.core.data.repository.DataTableRowDialogRepository
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 @@ -42,6 +43,7 @@ import com.mifos.core.data.repository_imp.CreateNewCenterRepositoryImp
import com.mifos.core.data.repository_imp.DataTableDataRepositoryImp
import com.mifos.core.data.repository_imp.DataTableRowDialogRepositoryImp
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 @@ -151,4 +153,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

0 comments on commit 87a470e

Please sign in to comment.