import { OrsaksKoderAvvikelse } from '@msfa-enums/orsaks-koder-avvikelse.enum';
import { AvvikelseReasonResponse } from './api/avvikelse-reason.response.model';

export interface AvvikelseReason {
  name: string;
  id: number;
  position?: number;
}

export function mapResponseToAvvikelseReason(data: AvvikelseReasonResponse): AvvikelseReason {
  const { name, id } = data;

  return {
    name,
    id,
  };
}

export function sortAvvikelseReasons(reasons: AvvikelseReason[]): AvvikelseReason[] {

  for (const reason of reasons) {
    switch (reason.id) {
      case OrsaksKoderAvvikelse.TACKAT_NEJ_TILL_INSATS_ELLER_AKTIVITET:
        reason.position = 3
        break;
      case OrsaksKoderAvvikelse.TACKAT_NEJ_TILL_ERBJUDET_ARBETE:
        reason.position = 2;
        break;
      case OrsaksKoderAvvikelse.KAN_INTE_TILLGODOGÖRA_SIG_PROGRAMMET:
        reason.position = 1;
        break;
      case OrsaksKoderAvvikelse.MISSKÖTT_SIG_ELLER_STÖRT_VERKSAMHETEN:
        reason.position = 5;
        break;
      case OrsaksKoderAvvikelse.SER_TILL_ATT_ERBJUDET_ARBETE_INTE_KOMMER_TILL_STÅND:
        reason.position = 4;
        break;
      default:
        break;
    }
  }

  return reasons.sort((reasonA, reasonB) => reasonA.position - reasonB.position);
}
