import { Component, computed, input, output } from '@angular/core';
import { formatDatumNl } from '@shared/kernel/datum';
import { ButtonComponent } from '@shared/ui/atoms/button/button.component';
import { AlertComponent } from '@shared/ui/atoms/alert/alert.component';
import { Aanvraag } from '@registratie/domain/aanvraag';
import { TYPE_LABELS } from '@registratie/domain/aanvraag-view';
import { blockActions } from '@registratie/domain/block-actions';
/** Organism: a resumable Concept ("lopende aanvraag") on the dashboard, rendered as
a CIBG "melding" (warning) with its actions — verwijderen as a link, aanvraag
openen as a button. Which actions show is driven by the pure `blockActions(status)`;
the block only renders. Submitted/resolved aanvragen are NOT rendered here — they
render as CIBG "aanvragen" rows (see application-link + aanvraag-view). */
@Component({
selector: 'app-aanvraag-block',
imports: [ButtonComponent, AlertComponent],
styles: [
`
.actions {
display: flex;
align-items: center;
gap: var(--rhc-space-max-md);
margin-block-start: var(--rhc-space-max-sm);
}
`,
],
template: `
@if (aanvraag().status.tag === 'Concept') {
}
`,
})
export class AanvraagBlockComponent {
aanvraag = input.required();
resume = output();
cancel = output();
protected typeLabel = computed(() => TYPE_LABELS[this.aanvraag().type]);
protected actions = computed(() => blockActions(this.aanvraag().status));
// ponytail: display-only deadline derived as createdAt + 30 dagen; move to a
// server-sent `completeBefore` on the DTO when the expiry rule becomes real.
private deadline = computed(() => {
const d = new Date(this.aanvraag().createdAt);
d.setDate(d.getDate() + 30);
return d.toISOString();
});
/** The melding body for a Concept: wizard not finished + complete-before date. */
protected conceptText = computed(() => {
const s = this.aanvraag().status;
if (s.tag !== 'Concept') return '';
return $localize`:@@aanvraagBlock.conceptMelding:Deze aanvraag is nog niet volledig afgerond — u bent gebleven bij stap ${s.stepIndex + 1}:stap: van ${s.stepCount}:totaal:. Rond de aanvraag af vóór ${formatDatumNl(this.deadline())}:datum:.`;
});
}