import { Injectable } from '@angular/core';
import { NgbDateParserFormatter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
import { UtilitiesService } from '../utilities/utilities.service';

@Injectable({
  providedIn: 'root'
})
export class CustomNgbDateFormatterService extends NgbDateParserFormatter{

  constructor(private utilities: UtilitiesService) {
    super();
  }

  override parse(value: string): NgbDateStruct | null {
    return null;
  }

  override format(date: NgbDateStruct | null): string {
    let formattedDate = ''
    if (date === null) {
      return formattedDate;
    }
    let month = (("0"+date?.month+"").slice(-2));
    let day = (("0"+date?.day+"").slice(-2));
    switch(this.utilities.dateFormat) {
      case 'mm/yyyy':
        formattedDate = month+'/'+date?.year;
        break;
      case 'MM-yyyy':
        let monthName = new Date(date?.year, (date?.month - 1), date?.day).toLocaleString('en-US', {month: 'long'});
        formattedDate = monthName+' '+date?.year;
        break;
      case 'mm-yyyy':
        formattedDate = month+'-'+date?.year;
        break;
      case 'mm/dd/yyyy':
        formattedDate = month+'/'+day+'/'+date?.year;
        break;
      default: //mm-dd-yyyy format
        formattedDate = month+'-'+day+'-'+date?.year;
        break;
    }
    return formattedDate;
  }
}