Add new feature modules (RBI feeds, CKYC, KYC tab, Form60, Superset analytics, passbook), update client family members, dashboard, login page, sidenav, images, translations, environment config, and fix RBI feeds API auth by using relative URLs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
111 lines
3.5 KiB
TypeScript
111 lines
3.5 KiB
TypeScript
/**
|
|
* Copyright since 2025 Mifos Initiative
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
/** Angular Imports */
|
|
import { Component, OnInit, inject } from '@angular/core';
|
|
import { UntypedFormGroup, UntypedFormBuilder, Validators, ReactiveFormsModule } from '@angular/forms';
|
|
import { Router, ActivatedRoute, RouterLink } from '@angular/router';
|
|
|
|
/** Custom Services */
|
|
import { ClientsService } from '../../../clients.service';
|
|
import { SettingsService } from 'app/settings/settings.service';
|
|
import { Dates } from 'app/core/utils/dates';
|
|
import { MatCheckbox } from '@angular/material/checkbox';
|
|
import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
|
|
|
|
/**
|
|
* Edit Family Member Component
|
|
*/
|
|
@Component({
|
|
selector: 'mifosx-edit-family-member',
|
|
templateUrl: './edit-family-member.component.html',
|
|
styleUrls: ['./edit-family-member.component.scss'],
|
|
imports: [
|
|
...STANDALONE_SHARED_IMPORTS,
|
|
MatCheckbox
|
|
]
|
|
})
|
|
export class EditFamilyMemberComponent implements OnInit {
|
|
private formBuilder = inject(UntypedFormBuilder);
|
|
private dateUtils = inject(Dates);
|
|
private router = inject(Router);
|
|
private route = inject(ActivatedRoute);
|
|
private clientsService = inject(ClientsService);
|
|
private settingsService = inject(SettingsService);
|
|
|
|
/** Maximum Due Date allowed. */
|
|
maxDate = new Date();
|
|
/** Edit family member form. */
|
|
editFamilyMemberForm: UntypedFormGroup;
|
|
/** Family member template options. */
|
|
addFamilyMemberTemplate: any;
|
|
/** Family Members Details */
|
|
familyMemberDetails: any;
|
|
|
|
constructor() {
|
|
this.route.data.subscribe((data: { clientTemplate: any; editFamilyMember: any }) => {
|
|
this.addFamilyMemberTemplate = data.clientTemplate.familyMemberOptions;
|
|
this.familyMemberDetails = data.editFamilyMember;
|
|
});
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.maxDate = this.settingsService.businessDate;
|
|
this.createEditFamilyMemberForm(this.familyMemberDetails);
|
|
}
|
|
|
|
createEditFamilyMemberForm(familyMember: any) {
|
|
this.editFamilyMemberForm = this.formBuilder.group({
|
|
nominationType: [familyMember.nominationType || 'DA1'],
|
|
firstName: [
|
|
familyMember.firstName,
|
|
Validators.required
|
|
],
|
|
relationshipId: [
|
|
familyMember.relationshipId,
|
|
Validators.required
|
|
],
|
|
dateOfBirth: [
|
|
familyMember.dateOfBirth ? this.dateUtils.formatDate(familyMember.dateOfBirth, 'yyyy-MM-dd') : null
|
|
],
|
|
percentageShare: [familyMember.percentageShare ?? 100],
|
|
isDependent: [familyMember.isDependent || false],
|
|
guardianName: [familyMember.guardianName || ''],
|
|
guardianRelationship: [familyMember.guardianRelationship || ''],
|
|
remarks: [familyMember.remarks || '']
|
|
});
|
|
}
|
|
|
|
submit() {
|
|
const formValue = { ...this.editFamilyMemberForm.value };
|
|
|
|
const locale = this.settingsService.language.code;
|
|
const dateFormat = this.settingsService.dateFormat;
|
|
|
|
if (formValue.dateOfBirth) {
|
|
if (formValue.dateOfBirth instanceof Date) {
|
|
formValue.dateOfBirth = this.dateUtils.formatDate(formValue.dateOfBirth, dateFormat);
|
|
}
|
|
} else {
|
|
delete formValue.dateOfBirth;
|
|
}
|
|
|
|
const data = {
|
|
...formValue,
|
|
dateFormat,
|
|
locale
|
|
};
|
|
|
|
this.clientsService
|
|
.editFamilyMember(this.familyMemberDetails.clientId, this.familyMemberDetails.id, data)
|
|
.subscribe((res) => {
|
|
this.router.navigate(['../../'], { relativeTo: this.route });
|
|
});
|
|
}
|
|
}
|