import { Pipe, PipeTransform, inject } from '@angular/core'
import { processEmailTemplate } from '@core/utils'
import { DefaultService } from '@api-client/angular'
import { format } from 'date-fns'
import { Observable, map, shareReplay } from 'rxjs'

@Pipe({ name: 'emailTemplateDataParser' })
export class EmailTemplateDataParserPipe implements PipeTransform {
	private readonly _apiService = inject(DefaultService)

	transform(template: string): Observable<string> {
		return this._apiService.settingsControllerFind().pipe(
			shareReplay(),
			map((setting) =>
				processEmailTemplate(template, {
					restaurantName: setting.customerApp?.displayName,
					restaurantCoverUrl: setting.customerApp?.bannerUrl,
					restaurantAddress: setting.restaurant.address,
					reservationPersons: 4,
					reservationDate: format(new Date(), 'dd MMM'),
					reservationTime: format(new Date(), 'ccc . HH:mm'),
				}),
			),
		)
	}
}
