diff --git a/src/api/reminder.js b/src/api/reminder.js
index 6245e2ad..40ecb1a8 100644
--- a/src/api/reminder.js
+++ b/src/api/reminder.js
@@ -1,68 +1,134 @@
-import Vue from 'vue';
-export function createReminder(id) {
+import _ from 'lodash'
+import Vue from 'vue'
+import {
+ getList,
+ patchReplace
+} from './common'
+
+export function createReminder(subscriberId) {
return new Promise((resolve, reject) => {
- var data = {
- subscriber_id: id,
+ Vue.http.post('api/reminders/', {
+ subscriber_id: subscriberId,
time: '00:00',
recur: 'never',
active: false
- };
- Vue.http.post('api/reminders/', data).then((result) => {
- var reminderID = result.headers.get('Location').split('/')[3];
- resolve(reminderID);
+ }).then((result) => {
+ let parts = result.headers.get('Location').split('/');
+ resolve(_.last(parts));
}).catch((err) => {
reject(err);
});
});
}
-export function getReminder(id) {
+export function getFirstReminder(subscriberId) {
return new Promise((resolve, reject) => {
- Vue.http.get('api/reminders/', {
+ getList({
+ path: 'api/reminders/',
+ root: '_embedded.ngcp:reminders',
params: {
- supplier_id: id
+ page: 1,
+ rows: 1,
+ subscriber_id: subscriberId
}
- }).then((result) => {
- resolve(JSON.parse(result.body));
- }).catch((err) => {
+ }).then((reminders)=>{
+ resolve(_.get(reminders, 'items.0', null));
+ }).catch((err)=>{
reject(err);
});
});
}
-export function enableReminder(id) {
- return patchReminder(id, '/active', true);
+export function getReminder(subscriberId) {
+ return new Promise((resolve, reject)=>{
+ Promise.resolve().then(()=>{
+ return getFirstReminder(subscriberId);
+ }).then((reminder)=>{
+ if(reminder === null) {
+ return createAndGetReminder(subscriberId);
+ }
+ else {
+ return Promise.resolve(reminder);
+ }
+ }).then((reminder)=>{
+ resolve(reminder);
+ }).catch((err)=>{
+ reject(err);
+ });
+ });
}
-export function disableReminder(id) {
- return patchReminder(id, '/active', false);
+export function createAndGetReminder(subscriberId) {
+ return new Promise((resolve, reject)=>{
+ Promise.resolve().then(()=>{
+ return createReminder(subscriberId);
+ }).then(()=>{
+ return getFirstReminder(subscriberId);
+ }).then((reminder)=>{
+ resolve(reminder);
+ }).catch((err)=>{
+ reject(err);
+ });
+ });
}
-export function setTime(id, time) {
- return patchReminder(id, '/time', time);
+export function setReminderActive(reminderId, active) {
+ return patchReplace({
+ path: 'api/reminders/' + reminderId,
+ fieldPath: 'active',
+ value: active
+ });
}
-export function setRecurrence(id, recurrence) {
- return patchReminder(id, '/recur', recurrence);
+export function setReminderTime(reminderId, time) {
+ return patchReplace({
+ path: 'api/reminders/' + reminderId,
+ fieldPath: 'time',
+ value: time
+ });
}
-function patchReminder(id, field, value) {
- return new Promise((resolve, reject) => {
- var data = [{
- "op": "replace",
- "path": field,
- "value": value
- }];
- var patchHeaders = {
- headers: {
- 'Content-Type': 'application/json-patch+json'
- }
- };
- Vue.http.patch('api/reminders/' + id, data, patchHeaders).then(() => {
- resolve();
- }).catch((err) => {
- reject(err);
- });
+export function setReminderRecurrence(reminderId, reccurence) {
+ return patchReplace({
+ path: 'api/reminders/' + reminderId,
+ fieldPath: 'recur',
+ value: reccurence
});
}
+
+// export function enableReminder(id) {
+// return patchReminder(id, '/active', true);
+// }
+//
+// export function disableReminder(id) {
+// return patchReminder(id, '/active', false);
+// }
+//
+// export function setTime(id, time) {
+// return patchReminder(id, '/time', time);
+// }
+//
+// export function setRecurrence(id, recurrence) {
+// return patchReminder(id, '/recur', recurrence);
+// }
+//
+// function patchReminder(id, field, value) {
+// return new Promise((resolve, reject) => {
+// var data = [{
+// "op": "replace",
+// "path": field,
+// "value": value
+// }];
+// var patchHeaders = {
+// headers: {
+// 'Content-Type': 'application/json-patch+json'
+// }
+// };
+// Vue.http.patch('api/reminders/' + id, data, patchHeaders).then(() => {
+// resolve();
+// }).catch((err) => {
+// reject(err);
+// });
+// });
+// }
diff --git a/src/components/pages/Reminder.vue b/src/components/pages/Reminder.vue
index 45b4d1c4..cf9206da 100644
--- a/src/components/pages/Reminder.vue
+++ b/src/components/pages/Reminder.vue
@@ -1,117 +1,166 @@
-
-
-
+
+
+
-
-
+
+
-
-
+
+