4 } from '~/app/shared/models/service.interface';
5 import { Component, EventEmitter, Input, Output } from '@angular/core';
6 import { ICON_TYPE } from '~/app/shared/enum/icons.enum';
7 import { CdDatePipe } from '~/app/shared/pipes/cd-date.pipe';
10 selector: 'cd-service-certificate-details',
11 templateUrl: './service-certificate-details.component.html',
12 styleUrls: ['./service-certificate-details.component.scss'],
13 providers: [CdDatePipe],
16 export class ServiceCertificateDetailsComponent {
17 @Input() certificate: CephServiceCertificate;
18 @Input() serviceName?: string;
19 @Input() serviceType?: string;
21 @Output() editService = new EventEmitter<{ serviceName?: string; serviceType?: string }>();
23 readonly statusIconMap: Record<string, keyof typeof ICON_TYPE> = {
26 expiring_soon: 'warning',
31 constructor(private cdDatePipe: CdDatePipe) {}
33 formatCertificateStatus(cert: CephServiceCertificate): string {
34 if (!cert || !cert.requires_certificate || !cert.status) {
38 const formattedDate = this.formatDate(cert.expiry_date);
39 switch (cert.status) {
40 case CephCertificateStatus.valid:
41 return formattedDate ? `Valid - ${formattedDate}` : 'Valid';
42 case CephCertificateStatus.expiringSoon:
43 return formattedDate ? `Expiring soon - ${formattedDate}` : 'Expiring soon';
44 case CephCertificateStatus.expired:
45 return formattedDate ? `Expired - ${formattedDate}` : 'Expired';
46 case CephCertificateStatus.notConfigured:
47 return 'Not configured';
49 return formattedDate ? `${cert.status} - ${formattedDate}` : cert.status;
53 formatDate(dateValue: string | Date | null | undefined): string | null {
57 return this.cdDatePipe.transform(dateValue, 'DD MMM y');
61 this.editService.emit({ serviceName: this.serviceName, serviceType: this.serviceType });