import { Component, Input, OnInit } from '@angular/core';
import { ContextComponent } from '@iqser/common-ui/lib/utils';
import { type DossierTemplate, type DossierTemplateStats } from '@red/domain';
import { DossierTemplatesService } from '@services/dossier-templates/dossier-templates.service';
import { DossierTemplateStatsService } from '@services/entity-services/dossier-template-stats.service';
import { dossierTemplateStatusTranslations } from '@translations/dossier-template-status-translations';
import { AsyncPipe, NgIf } from '@angular/common';
import { MatIcon } from '@angular/material/icon';
import { TranslateModule } from '@ngx-translate/core';
import { InitialsAvatarComponent } from '@common-ui/users';
import { DatePipe } from '@shared/pipes/date.pipe';

interface Context {
    readonly dossierTemplate: DossierTemplate;
    readonly stats: DossierTemplateStats;
}

@Component({
    selector: 'redaction-dossier-template-details',
    templateUrl: './dossier-template-details.component.html',
    styleUrls: ['./dossier-template-details.component.scss'],
    standalone: true,
    imports: [NgIf, AsyncPipe, MatIcon, TranslateModule, DatePipe, InitialsAvatarComponent],
})
export class DossierTemplateDetailsComponent extends ContextComponent<Context> implements OnInit {
    readonly translations = dossierTemplateStatusTranslations;

    @Input({ required: true }) dossierTemplateId: string;

    constructor(
        private readonly _dossierTemplatesService: DossierTemplatesService,
        private readonly _dossierTemplateStatsService: DossierTemplateStatsService,
    ) {
        super();
    }

    ngOnInit() {
        super._initContext({
            dossierTemplate: this._dossierTemplatesService.getEntityChanged$(this.dossierTemplateId),
            stats: this._dossierTemplateStatsService.watch$(this.dossierTemplateId),
        });
    }
}
