import { PaginationMeta } from './pagination-meta.model';

const GENOMFORANDEHANDELSE_EFFECT_MAP = {
  Inrapporteringsdatum_GP: 'Inskickad datum',
  Inrapporteringsdatum_SR: 'Inskickad datum',
  Inrapporteringsdatum_PR: 'Inskickad datum',
  Inrapporteringsdatum_IR: 'Inskickad datum',
  Godkannandedatum_GP: 'Godkänd datum',
  Godkannandedatum_PR: 'Godkänd datum',
  Godkannandedatum_SR: 'Godkänd datum',
  Avvisatdatum_GP: 'Ej godkänd datum',
  Avvisatdatum_PR: 'Ej godkänd datum',
  Avvisatdatum_SR: 'Ej godkänd datum',
  Granskning_startad_SR: 'Granskning startad datum',
  Handlaggning_startad: 'Handläggning startad',
  Andringsbeslutdatum: 'Ändringsbeslut datum',
  Slut_avropsperiod: 'Nytt slutdatum',
  Hanteraddatum_IR: 'Hanterad datum',
};

export interface DeltagareHandelse {
  description: string;
  receivedDate: Date;
  isAvbrott: boolean;
  effectDate: Date;
  effectDescription: string;
  motivation: string;
}

export interface DeltagareHandelseData {
  data: DeltagareHandelse[];
  meta: PaginationMeta;
}

export interface DeltagareHandelseMotivation {
  title: string;
  motivation: string;
}

interface DeltagareHandelseApiResponse {
  description: string;
  receivedDate: Date;
  isAvbrott: boolean;
  tidpunkt: Date;
  tidpunktDescription: string;
  motivation: string;
}

export interface DeltagareHandelserApiResponse {
  data: DeltagareHandelseApiResponse[];
  meta: PaginationMeta;
}

export function mapDeltagareHandelseApiResponse(
  deltagareHandelseApiResponse: DeltagareHandelseApiResponse
): DeltagareHandelse {
  const { description, receivedDate, isAvbrott, motivation } = deltagareHandelseApiResponse;
  const effectDate = deltagareHandelseApiResponse.tidpunkt;
  const effectDescription =
    (GENOMFORANDEHANDELSE_EFFECT_MAP[deltagareHandelseApiResponse.tidpunktDescription] as string) ??
    deltagareHandelseApiResponse.tidpunktDescription ??
    '';
  return { description, receivedDate, isAvbrott, effectDate, effectDescription, motivation };
}
