import { Input, Component, Inject } from 'ng-metadata/core';
import * as moment from "moment";
import './expiration-status-view.component.css';

type expirationInfo = {
  className: string;
  icon: string;
};

/**
 * A component that displays expiration status.
 */
@Component({
  selector: 'expiration-status-view',
  templateUrl: '/static/js/directives/ui/expiration-status-view/expiration-status-view.component.html',
})
export class ExpirationStatusViewComponent {
  @Input('<') public expirationDate: Date;

  private getExpirationInfo(expirationDate): expirationInfo|null {
    if (!expirationDate) {
      return null;
    }

    const expiration = moment(expirationDate);
    if (moment().isAfter(expiration)) {
      return {'className': 'expired', 'icon': 'fa-warning'};
    }

    if (moment().add(1, 'week').isAfter(expiration)) {
      return {'className': 'critical', 'icon': 'fa-warning'};
    }

    if (moment().add(1, 'month').isAfter(expiration)) {
      return {'className': 'warning', 'icon': 'fa-warning'};
    }

    return {'className': 'info', 'icon': 'fa-clock-o'};
  }
}