import { AvropResponse } from './api/avrop.response.model';
import { PaginationMeta } from './pagination-meta.model';

export interface AvropCompact {
  id: string; // id
  sokandeId: number; // sokandeId
  fullName: string; // deltagare
  tjanst: string; // tjansteNamn
  startDate: Date; // startdatumAvrop
  endDate: Date; // slutdatumAvrop
  tolkbehov: string; // tolkbehov
  sprakstod: string; // sprakstod
  utforandeAdress: string; // adress
  trackCode: string; // sparkod
  trackName: string; // sparNamn
}

export interface Avrop extends AvropCompact {
  genomforandeReferens: number; // genomforandeReferens
  participationFrequency: number; // deltagandeGrad
  utforandeVerksamhet: string; // utforandeverksamhet
}

export interface AvropCompactData {
  data: AvropCompact[];
  meta: PaginationMeta;
}

export function mapAvropResponseToAvrop(data: AvropResponse): Avrop {
  const {
    id,
    sokandeId,
    deltagare,
    tjansteNamn,
    startdatumAvrop,
    slutdatumAvrop,
    tolkbehov,
    sprakstod,
    adress,
    sparkod,
    sparNamn,
    genomforandeReferens,
    deltagandeGrad,
    utforandeverksamhet,
  } = data;

  return {
    id,
    sokandeId,
    fullName: deltagare,
    tjanst: tjansteNamn,
    startDate: new Date(startdatumAvrop),
    endDate: new Date(slutdatumAvrop),
    tolkbehov: tolkbehov,
    sprakstod: sprakstod,
    utforandeAdress: adress,
    trackCode: sparkod,
    trackName: sparNamn,
    genomforandeReferens,
    participationFrequency: deltagandeGrad,
    utforandeVerksamhet: utforandeverksamhet,
  };
}
