Skip to content
Snippets Groups Projects
Commit 3e099f57 authored by Sandro Lutz's avatar Sandro Lutz Committed by scmoritz
Browse files

Add event signup (without additional fields)

parent a6ff33d2
No related branches found
No related tags found
No related merge requests found
import { apiUrl } from './config';
import { getToken } from './auth';
import { getToken, getUserId, isLoggedIn } from './auth';
import { log } from './log';
const m = require('mithril');
......@@ -19,6 +20,61 @@ export function getCurrent() {
return this.current;
}
export function getCurrentSignup() {
return this.currentSignup;
}
export function checkCurrentSignup() {
const queryString = m.buildQueryString({
where: JSON.stringify({
user: getUserId(),
event: this.getCurrent()._id,
}),
});
return m.request({
method: 'GET',
url: `${apiUrl}/eventsignups?${queryString}`,
headers: getToken() ? {
Authorization: `Token ${getToken()}`,
} : {},
}).then((result) => {
[this.currentSignup] = result._items;
log(this.currentSignup);
});
}
export function signupCurrent(email = '') {
if (isLoggedIn()) {
log(`UserId: ${getUserId()}`);
m.request({
method: 'POST',
url: `${apiUrl}/eventsignups`,
data: {
event: this.current._id,
user: getUserId(),
},
headers: getToken() ? {
Authorization: `Token ${getToken()}`,
} : {},
}).then(() => { this.checkCurrentSignup(); });
} else if (this.current.allow_email_signup) {
if (email.length > 0) {
m.request({
method: 'POST',
url: `${apiUrl}/eventsignups`,
data: {
event: this.current._id,
email,
},
headers: getToken() ? {
Authorization: `Token ${getToken()}`,
} : {},
}).then(() => { this.checkCurrentSignup(); });
}
}
}
export function load(query = {}) {
querySaved = query;
......@@ -32,9 +88,9 @@ export function load(query = {}) {
return m.request({
method: 'GET',
url: `${apiUrl}/events?${queryString}`,
headers: {
headers: getToken() ? {
Authorization: `Token ${getToken()}`,
},
} : {},
}).then((result) => {
this.list = result._items.map((event) => {
const newEvent = Object.assign({}, event);
......
import * as events from '../models/event';
import { isLoggedIn } from '../models/auth';
const m = require('mithril');
let signupEmail = '';
class EventSignupForm {
static oninit() {
if (isLoggedIn()) {
events.checkCurrentSignup();
}
}
static view() {
if (typeof events.getCurrent() === 'undefined') {
return m('div');
}
if (isLoggedIn()) {
if (typeof events.getCurrentSignup() === 'undefined') {
return m('button', { onclick() { events.signupCurrent(); } }, 'signup');
}
} else if (events.getCurrent().allow_email_signup) {
return m('div', [
m('input', {
type: 'text',
placeholder: 'Email',
oninput: m.withAttr('value', (value) => { signupEmail = value; }),
value: signupEmail,
}),
m('button', { onclick() { events.signupCurrent(signupEmail); } }, 'signup'),
]);
}
return m('div');
}
}
export default class EventDetails {
static oninit(vnode) {
events.loadCurrent(vnode.attrs.eventId);
......@@ -17,6 +50,7 @@ export default class EventDetails {
m('span', events.getCurrent().signup_count),
m('span', events.getCurrent().spots),
m('p', events.getCurrent().description_de),
m(EventSignupForm),
]);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment