/** * 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 }); }); } }