Skip to content

Commit ca4c28d

Browse files
committed
feat(loan): implement assign loan officer screen
1 parent e85b158 commit ca4c28d

76 files changed

Lines changed: 936 additions & 104 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

core/data/src/commonMain/kotlin/com/mifos/core/data/di/RepositoryModule.kt

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -40,18 +40,6 @@ import com.mifos.core.data.repository.GroupListRepository
4040
import com.mifos.core.data.repository.GroupLoanAccountRepository
4141
import com.mifos.core.data.repository.GroupsListRepository
4242
import com.mifos.core.data.repository.IndividualCollectionSheetDetailsRepository
43-
import com.mifos.core.data.repository.LoanAccountApprovalRepository
44-
import com.mifos.core.data.repository.LoanAccountDisbursementRepository
45-
import com.mifos.core.data.repository.LoanAccountRepository
46-
import com.mifos.core.data.repository.LoanAccountSummaryRepository
47-
import com.mifos.core.data.repository.LoanChargeFormRepository
48-
import com.mifos.core.data.repository.LoanChargeOffRepository
49-
import com.mifos.core.data.repository.LoanChargeRepository
50-
import com.mifos.core.data.repository.LoanCreateGuarantorRepository
51-
import com.mifos.core.data.repository.LoanRepaymentRepository
52-
import com.mifos.core.data.repository.LoanRepaymentScheduleRepository
53-
import com.mifos.core.data.repository.LoanReschedulesRepository
54-
import com.mifos.core.data.repository.LoanTransactionsRepository
5543
import com.mifos.core.data.repository.LoginRepository
5644
import com.mifos.core.data.repository.NewIndividualCollectionSheetRepository
5745
import com.mifos.core.data.repository.NoteRepository
@@ -82,6 +70,19 @@ import com.mifos.core.data.repository.SyncGroupsDialogRepository
8270
import com.mifos.core.data.repository.SyncLoanRepaymentTransactionRepository
8371
import com.mifos.core.data.repository.SyncSavingsAccountTransactionRepository
8472
import com.mifos.core.data.repository.UserVerificationRepository
73+
import com.mifos.core.data.repository.loan.LoanAccountApprovalRepository
74+
import com.mifos.core.data.repository.loan.LoanAccountDisbursementRepository
75+
import com.mifos.core.data.repository.loan.LoanAccountRepository
76+
import com.mifos.core.data.repository.loan.LoanAccountSummaryRepository
77+
import com.mifos.core.data.repository.loan.LoanChargeFormRepository
78+
import com.mifos.core.data.repository.loan.LoanChargeOffRepository
79+
import com.mifos.core.data.repository.loan.LoanChargeRepository
80+
import com.mifos.core.data.repository.loan.LoanCreateGuarantorRepository
81+
import com.mifos.core.data.repository.loan.LoanOfficerRepository
82+
import com.mifos.core.data.repository.loan.LoanRepaymentRepository
83+
import com.mifos.core.data.repository.loan.LoanRepaymentScheduleRepository
84+
import com.mifos.core.data.repository.loan.LoanReschedulesRepository
85+
import com.mifos.core.data.repository.loan.LoanTransactionsRepository
8586
import com.mifos.core.data.repositoryImp.ActivateRepositoryImp
8687
import com.mifos.core.data.repositoryImp.AmountTransferRepositoryImp
8788
import com.mifos.core.data.repositoryImp.AppLockRepositoryImpl
@@ -111,18 +112,6 @@ import com.mifos.core.data.repositoryImp.GroupListRepositoryImp
111112
import com.mifos.core.data.repositoryImp.GroupLoanAccountRepositoryImp
112113
import com.mifos.core.data.repositoryImp.GroupsListRepositoryImpl
113114
import com.mifos.core.data.repositoryImp.IndividualCollectionSheetDetailsRepositoryImp
114-
import com.mifos.core.data.repositoryImp.LoanAccountApprovalRepositoryImp
115-
import com.mifos.core.data.repositoryImp.LoanAccountDisbursementRepositoryImp
116-
import com.mifos.core.data.repositoryImp.LoanAccountRepositoryImp
117-
import com.mifos.core.data.repositoryImp.LoanAccountSummaryRepositoryImp
118-
import com.mifos.core.data.repositoryImp.LoanChargeFormRepositoryImp
119-
import com.mifos.core.data.repositoryImp.LoanChargeOffRepositoryImpl
120-
import com.mifos.core.data.repositoryImp.LoanChargeRepositoryImp
121-
import com.mifos.core.data.repositoryImp.LoanCreateGuarantorRepositoryImp
122-
import com.mifos.core.data.repositoryImp.LoanRepaymentRepositoryImp
123-
import com.mifos.core.data.repositoryImp.LoanRepaymentScheduleRepositoryImp
124-
import com.mifos.core.data.repositoryImp.LoanReschedulesRepositoryImpl
125-
import com.mifos.core.data.repositoryImp.LoanTransactionsRepositoryImp
126115
import com.mifos.core.data.repositoryImp.LoginRepositoryImp
127116
import com.mifos.core.data.repositoryImp.NewIndividualCollectionSheetRepositoryImp
128117
import com.mifos.core.data.repositoryImp.NoteRepositoryImp
@@ -154,6 +143,19 @@ import com.mifos.core.data.repositoryImp.SyncGroupsDialogRepositoryImp
154143
import com.mifos.core.data.repositoryImp.SyncLoanRepaymentTransactionRepositoryImp
155144
import com.mifos.core.data.repositoryImp.SyncSavingsAccountTransactionRepositoryImp
156145
import com.mifos.core.data.repositoryImp.UserVerificationRepositoryImpl
146+
import com.mifos.core.data.repositoryImp.loan.LoanAccountApprovalRepositoryImp
147+
import com.mifos.core.data.repositoryImp.loan.LoanAccountDisbursementRepositoryImp
148+
import com.mifos.core.data.repositoryImp.loan.LoanAccountRepositoryImp
149+
import com.mifos.core.data.repositoryImp.loan.LoanAccountSummaryRepositoryImp
150+
import com.mifos.core.data.repositoryImp.loan.LoanChargeFormRepositoryImp
151+
import com.mifos.core.data.repositoryImp.loan.LoanChargeOffRepositoryImpl
152+
import com.mifos.core.data.repositoryImp.loan.LoanChargeRepositoryImp
153+
import com.mifos.core.data.repositoryImp.loan.LoanCreateGuarantorRepositoryImp
154+
import com.mifos.core.data.repositoryImp.loan.LoanOfficerRepositoryImpl
155+
import com.mifos.core.data.repositoryImp.loan.LoanRepaymentRepositoryImp
156+
import com.mifos.core.data.repositoryImp.loan.LoanRepaymentScheduleRepositoryImp
157+
import com.mifos.core.data.repositoryImp.loan.LoanReschedulesRepositoryImpl
158+
import com.mifos.core.data.repositoryImp.loan.LoanTransactionsRepositoryImp
157159
import com.mifos.core.data.util.NetworkMonitor
158160
import kotlinx.coroutines.CoroutineDispatcher
159161
import org.koin.core.module.dsl.singleOf
@@ -203,6 +205,7 @@ val RepositoryModule = module {
203205
singleOf(::LoanReschedulesRepositoryImpl) bind LoanReschedulesRepository::class
204206
singleOf(::LoanChargeOffRepositoryImpl) bind LoanChargeOffRepository::class
205207
singleOf(::LoanCreateGuarantorRepositoryImp) bind LoanCreateGuarantorRepository::class
208+
singleOf(::LoanOfficerRepositoryImpl) bind LoanOfficerRepository::class
206209

207210
// Account Transfer
208211
singleOf(::AmountTransferRepositoryImp) bind AmountTransferRepository::class

core/data/src/commonMain/kotlin/com/mifos/core/data/mappers/loan/ChargeOffReasonOptionMapper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
package com.mifos.core.data.mappers.loan
1111

1212
import com.mifos.core.model.objects.account.loan.ChargeOffReasonOption
13-
import com.mifos.core.network.dto.loans.ChargeOffReasonOptionDto
13+
import com.mifos.core.network.dto.loans.template.ChargeOffReasonOptionDto
1414

1515
fun ChargeOffReasonOptionDto.toModel(): ChargeOffReasonOption = ChargeOffReasonOption(
1616
id = id,

core/data/src/commonMain/kotlin/com/mifos/core/data/mappers/loan/GuarantorMapper.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ import com.mifos.core.model.objects.account.loan.guarantor.GuarantorRelationship
1616
import com.mifos.core.model.objects.account.loan.guarantor.GuarantorTemplate
1717
import com.mifos.core.model.objects.account.loan.guarantor.GuarantorType
1818
import com.mifos.core.network.dto.loans.CreateGuarantorResponseDto
19-
import com.mifos.core.network.dto.loans.GuarantorAccountTemplateDto
20-
import com.mifos.core.network.dto.loans.GuarantorRelationshipOptionDto
2119
import com.mifos.core.network.dto.loans.GuarantorRequestDto
22-
import com.mifos.core.network.dto.loans.GuarantorTemplateDto
23-
import com.mifos.core.network.dto.loans.GuarantorTypeDto
20+
import com.mifos.core.network.dto.loans.template.GuarantorAccountTemplateDto
21+
import com.mifos.core.network.dto.loans.template.GuarantorRelationshipOptionDto
22+
import com.mifos.core.network.dto.loans.template.GuarantorTemplateDto
23+
import com.mifos.core.network.dto.loans.template.GuarantorTypeDto
2424

2525
fun GuarantorTemplateDto.toDomain(): GuarantorTemplate =
2626
GuarantorTemplate(
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
/*
2+
* Copyright 2026 Mifos Initiative
3+
*
4+
* This Source Code Form is subject to the terms of the Mozilla Public
5+
* License, v. 2.0. If a copy of the MPL was not distributed with this
6+
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
7+
*
8+
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
9+
*/
10+
package com.mifos.core.data.mappers.loan
11+
12+
import com.mifos.core.model.objects.account.loan.assignLoanOfficer.AssignLoanOfficerInput
13+
import com.mifos.core.model.objects.account.loan.assignLoanOfficer.AssignLoanOfficerResponse
14+
import com.mifos.core.model.objects.template.loan.LoanOfficerOption
15+
import com.mifos.core.network.dto.loans.assignLoanOfficer.AssignLoanOfficerRequestDto
16+
import com.mifos.core.network.dto.loans.assignLoanOfficer.AssignLoanOfficerResponseDto
17+
import com.mifos.core.network.dto.loans.template.LoanOfficerOptionDto
18+
import com.mifos.core.network.dto.loans.template.LoanOfficerOptionsTemplateDto
19+
20+
// Unwrap the DTO directly into a List for the Domain
21+
fun LoanOfficerOptionsTemplateDto.toDomain(): List<LoanOfficerOption> =
22+
this.loanOfficerOptions.map { it.toDomain() }
23+
24+
fun LoanOfficerOptionDto.toDomain(): LoanOfficerOption =
25+
LoanOfficerOption(
26+
id = id,
27+
firstname = firstname,
28+
lastname = lastname,
29+
displayName = displayName,
30+
mobileNo = mobileNo,
31+
officeId = officeId,
32+
officeName = officeName,
33+
isLoanOfficer = isLoanOfficer,
34+
isActive = isActive,
35+
)
36+
37+
fun AssignLoanOfficerInput.toDto(): AssignLoanOfficerRequestDto =
38+
AssignLoanOfficerRequestDto(
39+
assignmentDate = assignmentDate,
40+
dateFormat = dateFormat,
41+
locale = locale,
42+
fromLoanOfficerId = fromLoanOfficerId,
43+
toLoanOfficerId = toLoanOfficerId,
44+
)
45+
46+
fun AssignLoanOfficerResponseDto.toDomain(): AssignLoanOfficerResponse =
47+
AssignLoanOfficerResponse(
48+
officeId = officeId,
49+
clientId = clientId,
50+
loanId = loanId,
51+
resourceId = resourceId,
52+
)

core/data/src/commonMain/kotlin/com/mifos/core/data/repository/LoanAccountApprovalRepository.kt renamed to core/data/src/commonMain/kotlin/com/mifos/core/data/repository/loan/LoanAccountApprovalRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/*
2-
* Copyright 2024 Mifos Initiative
2+
* Copyright 2026 Mifos Initiative
33
*
44
* This Source Code Form is subject to the terms of the Mozilla Public
55
* License, v. 2.0. If a copy of the MPL was not distributed with this
66
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
77
*
88
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
99
*/
10-
package com.mifos.core.data.repository
10+
package com.mifos.core.data.repository.loan
1111

1212
import com.mifos.core.common.utils.DataState
1313
import com.mifos.core.model.objects.account.loan.LoanApproval

core/data/src/commonMain/kotlin/com/mifos/core/data/repository/LoanAccountDisbursementRepository.kt renamed to core/data/src/commonMain/kotlin/com/mifos/core/data/repository/loan/LoanAccountDisbursementRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
99
*/
10-
package com.mifos.core.data.repository
10+
package com.mifos.core.data.repository.loan
1111

1212
import com.mifos.core.common.utils.DataState
1313
import com.mifos.core.model.objects.account.loan.LoanDisbursement

core/data/src/commonMain/kotlin/com/mifos/core/data/repository/LoanAccountRepository.kt renamed to core/data/src/commonMain/kotlin/com/mifos/core/data/repository/loan/LoanAccountRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
99
*/
10-
package com.mifos.core.data.repository
10+
package com.mifos.core.data.repository.loan
1111

1212
import com.mifos.core.common.utils.DataState
1313
import com.mifos.core.model.objects.account.loan.RepaymentSchedule

core/data/src/commonMain/kotlin/com/mifos/core/data/repository/LoanAccountSummaryRepository.kt renamed to core/data/src/commonMain/kotlin/com/mifos/core/data/repository/loan/LoanAccountSummaryRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
99
*/
10-
package com.mifos.core.data.repository
10+
package com.mifos.core.data.repository.loan
1111

1212
import com.mifos.core.common.utils.DataState
1313
import com.mifos.room.entities.accounts.loans.LoanWithAssociationsEntity

core/data/src/commonMain/kotlin/com/mifos/core/data/repository/LoanChargeFormRepository.kt renamed to core/data/src/commonMain/kotlin/com/mifos/core/data/repository/loan/LoanChargeFormRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
99
*/
10-
package com.mifos.core.data.repository
10+
package com.mifos.core.data.repository.loan
1111

1212
import com.mifos.core.model.objects.clients.ChargeCreationResponse
1313
import com.mifos.core.model.objects.payloads.ChargesPayload

core/data/src/commonMain/kotlin/com/mifos/core/data/repository/LoanChargeOffRepository.kt renamed to core/data/src/commonMain/kotlin/com/mifos/core/data/repository/loan/LoanChargeOffRepository.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* See https://github.com/openMF/mifos-x-field-officer-app/blob/master/LICENSE.md
99
*/
10-
package com.mifos.core.data.repository
10+
package com.mifos.core.data.repository.loan
1111

1212
import com.mifos.core.common.utils.DataState
1313
import com.mifos.core.model.objects.account.loan.ChargeOffReasonOption

0 commit comments

Comments
 (0)