From 5521534f2e9068efe9343b6226cfa9d743c577b9 Mon Sep 17 00:00:00 2001
From: Sandro Lutz <sandro.lutz@temparus.ch>
Date: Sat, 17 Feb 2018 21:35:46 +0100
Subject: [PATCH] Add joboffers model

---
 src/models/joboffers.js | 65 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 src/models/joboffers.js

diff --git a/src/models/joboffers.js b/src/models/joboffers.js
new file mode 100644
index 00000000..fe80bdc8
--- /dev/null
+++ b/src/models/joboffers.js
@@ -0,0 +1,65 @@
+import m from 'mithril';
+import { apiUrl } from './config';
+import { getToken } from './auth';
+
+const lang = 'de';
+const date = `${new Date().toISOString().split('.')[0]}Z`;
+
+let querySaved = {};
+
+
+export function getList() {
+  if (typeof this.list === 'undefined') {
+    return [];
+  }
+  return this.list;
+}
+
+export function getSelectedOffer() {
+  return this.selectedOffer;
+}
+
+export function load(query = {}) {
+  querySaved = query;
+
+  // Parse query such that the backend understands it
+  const parsedQuery = {};
+  Object.keys(query).forEach((key) => {
+    parsedQuery[key] = (key === 'sort') ? query[key] : JSON.stringify(query[key]);
+  });
+  const queryString = m.buildQueryString(parsedQuery);
+
+  return m.request({
+    method: 'GET',
+    url: `${apiUrl}/joboffers?${queryString}`,
+    headers: {
+      Authorization: `Token ${getToken()}`,
+    },
+  }).then((result) => {
+    this.list = result._items.map((event) => {
+      const newOffer = Object.assign({}, event);
+      newOffer.title = newOffer[`title_${lang}`];
+      newOffer.description = newOffer[`description_${lang}`];
+      return newOffer;
+    });
+  });
+}
+
+export function selectOffer(offerId) {
+  this.selectedOffer = this.getList().find(item => item._id === offerId);
+  if (typeof this.selectedOffer === 'undefined') {
+    this.load({
+      where: {
+        time_end: { $gte: date },
+        show_website: true,
+      },
+      sort: ['time_end'],
+    }).then(() => {
+      this.selectedOffer = this.getList().find(item => item._id === offerId);
+    });
+  }
+}
+
+export function reload() {
+  return load(querySaved);
+}
-- 
GitLab