{{ 'labels.text.Back' | translate }} {{ ticketId }}
@if (isLoading) {
} @else if (!complaint) {

{{ 'labels.text.Complaint not found' | translate }}

{{ 'labels.text.Back to List' | translate }}
} @else {
{{ 'labels.menus.Complaint Information' | translate }}

{{ 'labels.text.Complainant Details' | translate }}

{{ 'labels.text.Name' | translate }} {{ complaint.complainantName }}
{{ 'labels.text.Mobile' | translate }} {{ complaint.complainantMobile }}
{{ 'labels.text.Email' | translate }} {{ complaint.complainantEmail || '-' }}
{{ 'labels.text.Address' | translate }} {{ complaint.complainantAddress || '-' }}

{{ 'labels.text.Fraud Details' | translate }}

{{ 'labels.text.Fraud Amount' | translate }} {{ formatCurrency(complaint.fraudAmount) }}
{{ 'labels.text.Fraud Type' | translate }} {{ complaint.fraudType }}
{{ 'labels.text.Description' | translate }} {{ complaint.fraudDescription }}

{{ 'labels.text.Suspect Account Details' | translate }}

{{ 'labels.text.Account Number' | translate }} {{ complaint.suspectAccountNumber }}
{{ 'labels.text.Account Name' | translate }} {{ complaint.suspectAccountName }}
{{ 'labels.text.Bank IFSC' | translate }} {{ complaint.suspectBankIfsc }}
{{ 'labels.text.Bank Name' | translate }} {{ complaint.suspectBankName }}

{{ 'labels.text.Source & Acknowledgement' | translate }}

{{ 'labels.text.Source Portal' | translate }} {{ complaint.sourcePortal }}
{{ 'labels.text.Ack. Number' | translate }} {{ complaint.acknowledgementNumber }}
{{ 'labels.text.Assigned Officer' | translate }} {{ complaint.assignedOfficer || ('labels.text.Unassigned' | translate) }}
{{ 'labels.text.Created' | translate }} {{ formatDate(complaint.createdAt) }}
{{ 'labels.text.Last Updated' | translate }} {{ formatDate(complaint.updatedAt) }}
@if (complaint.fundsHeld > 0 || complaint.availableBalance > 0) {

{{ 'labels.text.Fund Details' | translate }}

{{ 'labels.text.Available Balance' | translate }} {{ formatCurrency(complaint.availableBalance) }}
{{ 'labels.text.Funds Held' | translate }} {{ formatCurrency(complaint.fundsHeld) }}
} @if (complaint.nextHopAccountNumber) {

{{ 'labels.text.Escalation Info' | translate }}

{{ 'labels.text.Next Hop Account' | translate }} {{ complaint.nextHopAccountNumber }}
{{ 'labels.text.Next Hop IFSC' | translate }} {{ complaint.nextHopBankIfsc }}
}
{{ 'labels.text.Take Action' | translate }} @if (isTerminal) {

{{ 'labels.text.No further actions can be taken' | translate }}

} @else {
{{ 'labels.text.Current Status' | translate }}:
{{ 'labels.text.Select Action' | translate }} @for (opt of actionOptions; track opt.value) { {{ opt.label }} } @if (actionForm.get('action')?.hasError('required') && actionForm.get('action')?.touched) { {{ 'labels.text.Action is required' | translate }} } @if (showBalanceFields) { {{ 'labels.text.Available Balance (INR)' | translate }} @if ( actionForm.get('availableBalance')?.hasError('required') && actionForm.get('availableBalance')?.touched ) { {{ 'labels.text.Available balance is required' | translate }} } {{ 'labels.text.Funds Held (INR)' | translate }} @if (actionForm.get('fundsHeld')?.hasError('required') && actionForm.get('fundsHeld')?.touched) { {{ 'labels.text.Funds held is required' | translate }} } } @if (showNextHopFields) { {{ 'labels.text.Next Hop Account Number' | translate }} @if ( actionForm.get('nextHopAccountNumber')?.hasError('required') && actionForm.get('nextHopAccountNumber')?.touched ) { {{ 'labels.text.Account number is required' | translate }} } {{ 'labels.text.Next Hop Bank IFSC' | translate }} @if ( actionForm.get('nextHopBankIfsc')?.hasError('required') && actionForm.get('nextHopBankIfsc')?.touched ) { {{ 'labels.text.IFSC code is required' | translate }} } @if ( actionForm.get('nextHopBankIfsc')?.hasError('pattern') && actionForm.get('nextHopBankIfsc')?.touched ) { {{ 'labels.text.Invalid IFSC format' | translate }} } } {{ 'labels.text.Action Note' | translate }} @if (actionForm.get('actionNote')?.hasError('required') && actionForm.get('actionNote')?.touched) { {{ 'labels.text.Action note is required' | translate }} }
}
{{ 'labels.text.Audit Timeline' | translate }} @if (timeline.length === 0) {

{{ 'labels.text.No timeline events yet' | translate }}

} @else {
@for (event of timeline; track event.id) {
{{ event.eventType.replace('_', ' ') }} {{ formatDate(event.timestamp) }}

{{ event.eventDescription }}

{{ event.actor }} ({{ event.actorRole }})
}
}
}