From 42eee4fffcb47a74216e81fa28355a5274c080eb Mon Sep 17 00:00:00 2001 From: Aarni Halinen Date: Wed, 17 Jun 2020 00:24:19 +0300 Subject: [PATCH] Admin event select signup form --- src/models/Signup.ts | 34 +++++++++---- src/pages/EventCreatePage/EventCreatePage.tsx | 49 ++++++++++++++++--- 2 files changed, 66 insertions(+), 17 deletions(-) diff --git a/src/models/Signup.ts b/src/models/Signup.ts index 03eef2f..100af16 100644 --- a/src/models/Signup.ts +++ b/src/models/Signup.ts @@ -9,6 +9,20 @@ export interface Signup { list_name: string; } +export async function getSignup(id: number): Promise { + try { + const resp = await axios.get(`${url}${id}`, { + headers: { + "Authorization": getAuthHeader() + }, + }); + return resp.data; + } catch (err) { + console.error(err); + throw err; + } +} + export async function createSignup(data: Signup): Promise { try { const resp = await axios.post(url, data); @@ -19,12 +33,14 @@ export async function createSignup(data: Signup): Promise { } } -// export async function updateSignup(data: Signup): Promise { -// try { -// const resp = await axios.post(url, data); -// return resp.data; -// } catch (err) { -// console.error(err); -// throw err; -// } -// } +export async function updateSignup(data: Signup): Promise { + try { + const { id } = data; + if (!id) throw new Error("SignupId required!"); + const resp = await axios.put(`${url}${id}`, data); + return resp.data; + } catch (err) { + console.error(err); + throw err; + } +} diff --git a/src/pages/EventCreatePage/EventCreatePage.tsx b/src/pages/EventCreatePage/EventCreatePage.tsx index 0604b08..d944cb8 100644 --- a/src/pages/EventCreatePage/EventCreatePage.tsx +++ b/src/pages/EventCreatePage/EventCreatePage.tsx @@ -4,6 +4,7 @@ import "./EventCreatePage.scss"; import { isAuthenticated } from "../../auth"; import Form from "react-jsonschema-form"; import { Tag, getTags } from "../../models/Tag"; +import { SignupForm, getForms } from "../../models/SignupForm"; import { createEvent, getEvent, updateEvent, Event } from "../../models/Event"; import DatetimeWidget from "../../components/DatetimeWidget"; import SectionDividerWidget from "../../components/SectionDividerWidget"; @@ -27,6 +28,7 @@ export interface EventCreatePageProps { } export interface EventCreatePageState { tags: Tag[]; + signupForm: SignupForm[]; error?: string; statusMessage?: string; formData: any; @@ -37,10 +39,12 @@ class EventCreatePage extends React.Component { - const getTagsPromise = getTags(); try { - const tags = await getTagsPromise; + const tags = await getTags(); this.setState({ tags, }); - return getTagsPromise; + return tags; } catch (err) { this.setState({ error: String(err), }); + throw err; + } + } + + fetchSignupForms = async () => { + try { + const signupForm = await getForms(); + this.setState({ + signupForm + }) + return signupForm; + } catch (err) { + this.setState({ + error: String(err), + }); + throw err; } } onSubmit = async (data) => { console.log("submitted, data:"); - console.log(data); + console.log(data.formData); const { history } = this.props; try { const payload = data.formData; - payload.signup_id = []; + payload.signup_id = payload.signupForm; payload.tag_id = payload.tags; if (payload.id === undefined) { const resp = await createEvent(payload); resp.tags = resp.tag_id as any; + resp.signupForm = resp.signup_id as any; this.setState({ formData: resp, statusMessage: "Event created successfully", @@ -97,6 +118,7 @@ class EventCreatePage extends React.Component { - const { tags, error } = this.state; + const { tags, signupForm, error } = this.state; const formData = this.state.formData as Event; @@ -173,6 +195,17 @@ class EventCreatePage extends React.Component form.id), + enumNames: signupForm.map(form => form.title), + }, + uniqueItems: true, + default: [], + }, finnish_section_divider: { title: "Finnish", type: "string", @@ -263,11 +296,11 @@ class EventCreatePage extends React.Component

{title}

{statusMessage &&
{statusMessage}
} -