Skip to content
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
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import com.mifos.core.data.repository.CheckerInboxTasksRepository
import com.mifos.core.data.repository.ClientChargeRepository
import com.mifos.core.data.repository.ClientDetailsEditRepository
import com.mifos.core.data.repository.ClientDetailsRepository
import com.mifos.core.data.repository.ClientIdentifierDialogRepository
import com.mifos.core.data.repository.ClientIdentifiersRepository
import com.mifos.core.data.repository.ClientListRepository
import com.mifos.core.data.repository.CreateNewCenterRepository
Expand All @@ -29,7 +28,7 @@ import com.mifos.core.data.repository.DataTableDataRepository
import com.mifos.core.data.repository.DataTableListRepository
import com.mifos.core.data.repository.DataTableRepository
import com.mifos.core.data.repository.DataTableRowDialogRepository
import com.mifos.core.data.repository.DocumentDialogRepository
import com.mifos.core.data.repository.DocumentCreateUpdateRepository
import com.mifos.core.data.repository.DocumentListRepository
import com.mifos.core.data.repository.GenerateCollectionSheetRepository
import com.mifos.core.data.repository.GroupDetailsRepository
Expand Down Expand Up @@ -81,7 +80,6 @@ import com.mifos.core.data.repositoryImp.CheckerInboxTasksRepositoryImp
import com.mifos.core.data.repositoryImp.ClientChargeRepositoryImp
import com.mifos.core.data.repositoryImp.ClientDetailsEditRepositoryImpl
import com.mifos.core.data.repositoryImp.ClientDetailsRepositoryImp
import com.mifos.core.data.repositoryImp.ClientIdentifierDialogRepositoryImp
import com.mifos.core.data.repositoryImp.ClientIdentifiersRepositoryImp
import com.mifos.core.data.repositoryImp.ClientListRepositoryImp
import com.mifos.core.data.repositoryImp.CreateNewCenterRepositoryImp
Expand All @@ -91,7 +89,7 @@ import com.mifos.core.data.repositoryImp.DataTableDataRepositoryImp
import com.mifos.core.data.repositoryImp.DataTableListRepositoryImp
import com.mifos.core.data.repositoryImp.DataTableRepositoryImp
import com.mifos.core.data.repositoryImp.DataTableRowDialogRepositoryImp
import com.mifos.core.data.repositoryImp.DocumentDialogRepositoryImp
import com.mifos.core.data.repositoryImp.DocumentCreateUpdateRepositoryImp
import com.mifos.core.data.repositoryImp.DocumentListRepositoryImp
import com.mifos.core.data.repositoryImp.GenerateCollectionSheetRepositoryImp
import com.mifos.core.data.repositoryImp.GroupDetailsRepositoryImp
Expand Down Expand Up @@ -151,7 +149,6 @@ val RepositoryModule = module {
singleOf(::ClientDetailsRepositoryImp) bind ClientDetailsRepository::class
singleOf(::ClientListRepositoryImp) bind ClientListRepository::class
singleOf(::ClientChargeRepositoryImp) bind ClientChargeRepository::class
singleOf(::ClientIdentifierDialogRepositoryImp) bind ClientIdentifierDialogRepository::class
singleOf(::ClientIdentifiersRepositoryImp) bind ClientIdentifiersRepository::class
singleOf(::CreateNewClientRepositoryImp) bind CreateNewClientRepository::class
singleOf(::ClientDetailsEditRepositoryImpl) bind ClientDetailsEditRepository::class
Expand Down Expand Up @@ -207,7 +204,7 @@ val RepositoryModule = module {
singleOf(::DataTableListRepositoryImp) bind DataTableListRepository::class
singleOf(::DataTableRepositoryImp) bind DataTableRepository::class
singleOf(::DataTableRowDialogRepositoryImp) bind DataTableRowDialogRepository::class
singleOf(::DocumentDialogRepositoryImp) bind DocumentDialogRepository::class
singleOf(::DocumentCreateUpdateRepositoryImp) bind DocumentCreateUpdateRepository::class
singleOf(::DocumentListRepositoryImp) bind DocumentListRepository::class
singleOf(::IndividualCollectionSheetDetailsRepositoryImp) bind IndividualCollectionSheetDetailsRepository::class
singleOf(::NewIndividualCollectionSheetRepositoryImp) bind NewIndividualCollectionSheetRepository::class
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,33 @@ package com.mifos.core.data.repository

import com.mifos.core.common.utils.DataState
import com.mifos.core.model.objects.noncoreobjects.Identifier
import com.mifos.core.network.model.DeleteClientsClientIdIdentifiersIdentifierIdResponse
import com.mifos.core.model.objects.noncoreobjects.IdentifierPayload
import com.mifos.core.model.objects.noncoreobjects.IdentifierTemplate
import com.mifos.core.network.GenericResponse
import io.ktor.client.statement.HttpResponse
import kotlinx.coroutines.flow.Flow

/**
* Created by Aditya Gupta on 08/08/23.
* Created by Arin Yadav on 12/09/2025.
*/
interface ClientIdentifiersRepository {

fun getClientIdentifiers(clientId: Int): Flow<DataState<List<Identifier>>>
fun getClientListIdentifiers(clientId: Long): Flow<DataState<List<Identifier>>>

suspend fun deleteClientIdentifier(
clientId: Int,
identifierId: Int,
): DeleteClientsClientIdIdentifiersIdentifierIdResponse
fun getClientIdentifiers(clientId: Long, identifierId: Long): Flow<DataState<Identifier>>

fun getClientIdentifierTemplate(clientId: Long): Flow<DataState<IdentifierTemplate>>

suspend fun deleteClientIdentifier(clientId: Long, identifierId: Long): GenericResponse

suspend fun createClientIdentifier(
clientId: Long,
identifierPayload: IdentifierPayload,
): HttpResponse

suspend fun updateClientIdentifier(
clientId: Long,
identifierId: Long,
identifierPayload: IdentifierPayload,
): GenericResponse
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import kotlinx.coroutines.flow.Flow
/**
* Created by Aditya Gupta on 16/08/23.
*/
interface DocumentDialogRepository {
interface DocumentCreateUpdateRepository {

suspend fun createDocument(
entityType: String,
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,48 @@ import com.mifos.core.common.utils.DataState
import com.mifos.core.common.utils.asDataStateFlow
import com.mifos.core.data.repository.ClientIdentifiersRepository
import com.mifos.core.model.objects.noncoreobjects.Identifier
import com.mifos.core.network.datamanager.DataManagerClient
import com.mifos.core.network.model.DeleteClientsClientIdIdentifiersIdentifierIdResponse
import com.mifos.core.model.objects.noncoreobjects.IdentifierPayload
import com.mifos.core.model.objects.noncoreobjects.IdentifierTemplate
import com.mifos.core.network.GenericResponse
import com.mifos.core.network.datamanager.DataManagerIdentifiers
import io.ktor.client.statement.HttpResponse
import kotlinx.coroutines.flow.Flow

/**
* Created by Aditya Gupta on 08/08/23.
* Created by Arin Yadav on 12/09/2025.
*/
class ClientIdentifiersRepositoryImp(
private val dataManagerClient: DataManagerClient,
private val dataManagerIdentifiers: DataManagerIdentifiers,
) : ClientIdentifiersRepository {

override fun getClientIdentifiers(clientId: Int): Flow<DataState<List<Identifier>>> {
return dataManagerClient.getClientIdentifiers(clientId).asDataStateFlow()
override fun getClientListIdentifiers(clientId: Long): Flow<DataState<List<Identifier>>> {
return dataManagerIdentifiers.getClientListIdentifiers(clientId).asDataStateFlow()
}

override suspend fun deleteClientIdentifier(
clientId: Int,
identifierId: Int,
): DeleteClientsClientIdIdentifiersIdentifierIdResponse {
return dataManagerClient.deleteClientIdentifier(clientId, identifierId)
override fun getClientIdentifiers(clientId: Long, identifierId: Long): Flow<DataState<Identifier>> {
return dataManagerIdentifiers.getClientIdentifiers(clientId, identifierId).asDataStateFlow()
}

override fun getClientIdentifierTemplate(clientId: Long): Flow<DataState<IdentifierTemplate>> {
return dataManagerIdentifiers.getClientIdentifierTemplate(clientId).asDataStateFlow()
}

override suspend fun deleteClientIdentifier(clientId: Long, identifierId: Long): GenericResponse {
return dataManagerIdentifiers.deleteClientIdentifier(clientId, identifierId)
}

override suspend fun createClientIdentifier(
clientId: Long,
identifierPayload: IdentifierPayload,
): HttpResponse {
return dataManagerIdentifiers.createClientIdentifier(clientId, identifierPayload)
}

override suspend fun updateClientIdentifier(
clientId: Long,
identifierId: Long,
identifierPayload: IdentifierPayload,
): GenericResponse {
return dataManagerIdentifiers.updateClientIdentifier(clientId, identifierId, identifierPayload)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ package com.mifos.core.data.repositoryImp

import com.mifos.core.common.utils.DataState
import com.mifos.core.common.utils.asDataStateFlow
import com.mifos.core.data.repository.DocumentDialogRepository
import com.mifos.core.data.repository.DocumentCreateUpdateRepository
import com.mifos.core.network.GenericResponse
import com.mifos.core.network.datamanager.DataManagerDocument
import io.ktor.client.request.forms.MultiPartFormDataContent
Expand All @@ -21,9 +21,9 @@ import kotlinx.coroutines.flow.flow
/**
* Created by Aditya Gupta on 16/08/23.
*/
class DocumentDialogRepositoryImp(
class DocumentCreateUpdateRepositoryImp(
private val dataManagerDocument: DataManagerDocument,
) : DocumentDialogRepository {
) : DocumentCreateUpdateRepository {

override suspend fun createDocument(
entityType: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,13 @@ suspend fun extractErrorMessage(response: HttpResponse): String {
val errorResponse = json.decodeFromString<MifosError>(responseText)
errorResponse.errors.firstOrNull()?.defaultUserMessage
?: errorResponse.defaultUserMessage
?: "Unknown error"
?: Error.MSG_NOT_FOUND
} catch (e: Exception) {
"Failed to parse error response"
Error.FAILED_TO_PARSE_ERROR_RESPONSE
}
}

data object Error {
const val MSG_NOT_FOUND = "Message Not Found"
const val FAILED_TO_PARSE_ERROR_RESPONSE = "Failed to parse error response"
}
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,14 @@ fun MifosTextButton(
modifier = modifier.height(48.dp),
enabled = enabled,
colors = ButtonDefaults.textButtonColors(
contentColor = AppColors.customWhite,
containerColor = MaterialTheme.colorScheme.primary,
contentColor = MaterialTheme.colorScheme.onPrimary,
disabledContainerColor = MaterialTheme.colorScheme.onSurface.copy(
alpha = .12f,
),
disabledContentColor = MaterialTheme.colorScheme.onSurface.copy(
.5f,
),
),
content = content,
shape = DesignToken.shapes.medium,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ import com.mifos.core.domain.useCases.GetCentersInOfficeUseCase
import com.mifos.core.domain.useCases.GetCheckerInboxBadgesUseCase
import com.mifos.core.domain.useCases.GetCheckerTasksUseCase
import com.mifos.core.domain.useCases.GetClientDetailsUseCase
import com.mifos.core.domain.useCases.GetClientIdentifierTemplateUseCase
import com.mifos.core.domain.useCases.GetClientPinpointLocationsUseCase
import com.mifos.core.domain.useCases.GetClientSavingsAccountTemplateByProductUseCase
import com.mifos.core.domain.useCases.GetClientTemplateUseCase
Expand Down Expand Up @@ -78,6 +77,7 @@ import com.mifos.core.domain.useCases.SaveIndividualCollectionSheetUseCase
import com.mifos.core.domain.useCases.ServerConfigValidatorUseCase
import com.mifos.core.domain.useCases.SubmitCollectionSheetUseCase
import com.mifos.core.domain.useCases.SubmitProductiveSheetUseCase
import com.mifos.core.domain.useCases.UpdateClientIdentifierUseCase
import com.mifos.core.domain.useCases.UpdateClientPinpointUseCase
import com.mifos.core.domain.useCases.UpdateNoteUseCase
import com.mifos.core.domain.useCases.UpdateSignatureUseCase
Expand Down Expand Up @@ -125,7 +125,7 @@ val UseCaseModule = module {
factoryOf(::GetCheckerInboxBadgesUseCase)
factoryOf(::GetCheckerTasksUseCase)
factoryOf(::GetClientDetailsUseCase)
factoryOf(::GetClientIdentifierTemplateUseCase)
factoryOf(::UpdateClientIdentifierUseCase)
factoryOf(::GetClientPinpointLocationsUseCase)
factoryOf(::GetClientSavingsAccountTemplateByProductUseCase)
factoryOf(::GetDataTableInfoUseCase)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,20 +11,19 @@ package com.mifos.core.domain.useCases

import com.mifos.core.common.utils.DataState
import com.mifos.core.common.utils.asDataStateFlow
import com.mifos.core.data.repository.ClientIdentifierDialogRepository
import com.mifos.core.model.objects.noncoreobjects.IdentifierCreationResponse
import com.mifos.core.data.repository.ClientIdentifiersRepository
import com.mifos.core.model.objects.noncoreobjects.IdentifierPayload
import io.ktor.client.statement.HttpResponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow

class CreateClientIdentifierUseCase(
private val repository: ClientIdentifierDialogRepository,
private val repository: ClientIdentifiersRepository,
) {

operator fun invoke(
clientId: Int,
clientId: Long,
identifierPayload: IdentifierPayload,
): Flow<DataState<IdentifierCreationResponse>> = flow {
): Flow<DataState<HttpResponse>> = flow {
emit(repository.createClientIdentifier(clientId, identifierPayload))
}.asDataStateFlow()
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ package com.mifos.core.domain.useCases
import com.mifos.core.common.utils.DataState
import com.mifos.core.common.utils.asDataStateFlow
import com.mifos.core.data.repository.ClientIdentifiersRepository
import com.mifos.core.network.model.DeleteClientsClientIdIdentifiersIdentifierIdResponse
import com.mifos.core.network.GenericResponse
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow

Expand All @@ -21,9 +21,9 @@ class DeleteIdentifierUseCase(
) {

operator fun invoke(
clientId: Int,
identifierId: Int,
): Flow<DataState<DeleteClientsClientIdIdentifiersIdentifierIdResponse>> = flow {
clientId: Long,
identifierId: Long,
): Flow<DataState<GenericResponse>> = flow {
emit(repository.deleteClientIdentifier(clientId = clientId, identifierId = identifierId))
}.asDataStateFlow()
}

This file was deleted.

Loading