import { modalNotifier } from "./evts.js";

const demoarticles = {
  "0e15747bc12f43108fcfe6379a7614b1": {
    Anstellungsart: "unknown",
    Alter: "13. Februar 2023",
    Titel: "Sozialarbeiter*in Intake + Springer*in, 60–80 %",
    Firma: "Stadt Zürich Soziale Dienste",
    id: "0e15747bc12f43108fcfe6379a7614b1",
    siId: "43667",
    href: "/sd/de/index/ueber_das_departement/arbeiten_sd/offene_stellen_sd/job-detailseite.43667.html",
    lnk: "https://www.stadt-zuerich.ch/sd/de/index/ueber_das_departement/arbeiten_sd/offene_stellen_sd/job-detailseite.43667.html",
    content: {
      Ort: " \n                        Für das Intake im Sozialzentrum Helvetiaplatz",
      Antritt: "1. April 2023",
      Beschreibung:
        "Ihre Aufgaben\n\nSie klären umfassend die Anliegen der Klientinnen und Klienten ab.Sie bieten kurzfristige finanzielle Unterstützung mit dem Ziel der beruflichen und sozialen Integration.Sie sind zuständig für die Triage, Vernetzung und Koordination und leiten Sofortmassnahmen in den Bereichen Sozialhilfe und Krisenintervention ein.Sie arbeiten mit Quartierteams, Fachstellen, Behörden und Sozialversicherungen zusammen.Sie werden von Sachbearbeitenden administrativ unterstützt, können auf das Wissen von internen Fachstellen zurückgreifen und arbeiten eng mit Ihren Kolleginnen und Kollegen im Team zusammen.\n\n\nSie bringen mit\n\n\nWir bieten Ihnen\n\n\nInteressiert?\n\n",
      Anmelden:
        "https://career2.successfactors.eu/career?company=STZH&career_ns=job_application&career_job_req_id=35956&jobPipeline=eGovSTZH_%2Fsd%2Fde%2Findex%2Fueber_das_departement%2Farbeiten_sd%2Foffene_stellen_sd",
      Kontaktperson: "none",
    },
  },
  d3fe59f9f882ee789ee139c733ed1d2b: {
    Anstellungsart: "unknown",
    Alter: "13. Februar 2023",
    Titel:
      "Fachhochschulpraktikant*in Soziale Arbeit im Schreibdienst, 60–80 %",
    Firma: "Stadt Zürich Soziale Dienste",
    id: "d3fe59f9f882ee789ee139c733ed1d2b",
    siId: "43632",
    href: "/sd/de/index/ueber_das_departement/arbeiten_sd/offene_stellen_sd/job-detailseite.43632.html",
    lnk: "https://www.stadt-zuerich.ch/sd/de/index/ueber_das_departement/arbeiten_sd/offene_stellen_sd/job-detailseite.43632.html",
    content: {
      Ort: " \n                        Für ein Erstpraktikum",
      Antritt: "15. August 2023",
      Beschreibung:
        "Ihre Aufgaben\n\nAls Teil des Schreibdienst Teams arbeiten Sie im Rahmen des Schreibbüros am Empfang, übernehmen den Telefondienst und bei Bedarf Kurzberatungen.Sie unterstützen die Klient*innen beim Verfassen von Bewerbungsunterlagen, einfacher Korrespondenz und Ausfüllen von Formularen und anderen Schriftstücke. Sie bieten Hilfe beim Verstehen von amtlichen und anderen Dokumenten.Sie bieten lösungsorientierte Kurzberatungen mit Schwerpunkt Wohnungssuche an.Sie erhalten Einblick in die Freiwilligenbetreuung und arbeiten mit bei niederschwelligen Informations- und Bildungsveranstaltungen.Sie nehmen an Arbeitssitzungen, Teamsitzungen und Supervision teil.\n\n\nSie bringen mit\n\n\nWir bieten Ihnen\n\n\nInteressiert?\n\n",
      Anmelden:
        "https://career2.successfactors.eu/career?company=STZH&career_ns=job_application&career_job_req_id=35922&jobPipeline=eGovSTZH_%2Fsd%2Fde%2Findex%2Fueber_das_departement%2Farbeiten_sd%2Foffene_stellen_sd",
      Kontaktperson: "none",
    },
  },
};

const articleSelection = ["Alter", "Anstellungsart", "Titel", "Firma", "lnk"];

export default function parseArticles(articles) {
  modalNotifier('!done');
  //articles = demoarticles;

  let outputElement = document.getElementById("output");
  outputElement.innerHTML = "";
  let divWrapper = document.createElement("div");
  divWrapper.classList.add("w3-responsive", "w3-row");

  let articleArray = [];
  for (let id in articles) {
    articleArray.push(articles[id]);
  }

  articleArray = articleSort(articleArray, 'byDate');
  articleArray = articleSort(articleArray, 'byPrio');

  for (let article of articleArray) {

    if (article['Titel'] == 'ERROR') {
      modalNotifier('<i class="fa fa-exclamation-triangle" style="font-size: 1.3em"></i> <b> Error: </b> ' + article['msg'] + '<br>' + article['href']);
      console.log(article['data']);
      continue;
    }

    let div = document.createElement("div");
    div.classList.add("w3-half", "w3-container", "w3-padding");
    let card = document.createElement("div");
    card.classList.add("w3-card-4");

    if (article['prio'] == 'important') {
      card.classList.add("w3-leftbar", "w3-border-green");
    } else if (article['prio'] == 'pinned') {
      card.classList.add("w3-leftbar", "w3-border-red");
    } else {
      card.classList.add("w3-leftbar");
    }

    let header = document.createElement("header");
    header.classList.add("w3-container");
    let title = document.createElement("h4");
    title.innerText = article['Titel'];

    if (article['prio'] == 'pinned') {
      title.innerText = "📌 "+article['Titel'];
    }
    if (article['prio'] == 'important') {
      title.innerText = "🔊 "+article['Titel'];
    }
    
    header.appendChild(title);

    let content = document.createElement("div");
    content.classList.add("w3-container");
    content.innerText = article['Firma'];

    let footer = document.createElement("footer");
    footer.classList.add("w3-container");
    let p = document.createElement('p');
    p.innerText = `${article['Alter']} | ${article['Anstellungsart']}`;
    footer.appendChild(p);


    card.appendChild(header);
    card.appendChild(content);
    card.appendChild(footer);

    let a = document.createElement("a");
    a.setAttribute("href", article['lnk']);
    a.target = "_blank";
    a.appendChild(card)
    div.appendChild(a);

    divWrapper.appendChild(div);

  }
  outputElement.appendChild(divWrapper);
}

function articleSort(articles, mode = 'byDate') {
  let sortArray = [];
  switch(mode) {
    case 'byDate':
      for (let id in articles) {
        let timeStamp = articles[id]['Alter'];
        sortArray.push({[timeStamp]: articles[id]})
      }
      sortArray.sort((a,b) => Date.parse(b) - Date.parse(a));
      let dateSortArray = [];
      for (let sortId in sortArray) {
        let objName = Object.keys(sortArray[sortId])[0]
        dateSortArray.push(sortArray[sortId][objName]);
      }
      articles = dateSortArray;
      break;  
    case 'byPrio':
      sortArray = [];
      let sortArray2 = [];
      let sortArray3 = [];
      for (let id in articles) {
        if (articles[id]['prio'] == 'pinned') {
          sortArray.push(articles[id])
        } else if (articles[id]['prio'] == 'important') {
          sortArray3.push(articles[id])
        } else {
          sortArray2.push(articles[id]);       
        }
      }
      let sortArrayPrio = sortArray.concat(sortArray3);
      articles = sortArrayPrio.concat(sortArray2);
      break;
    case 'byPlace':
      break;
    case 'byKind':
      break;
  }
  return articles
}