diff --git a/HackMerced/2017F/src/app/src/actions/actions.js b/HackMerced/2017F/src/app/src/actions/actions.js index e774c21..11758ed 100644 --- a/HackMerced/2017F/src/app/src/actions/actions.js +++ b/HackMerced/2017F/src/app/src/actions/actions.js @@ -24,11 +24,12 @@ */ -import { SET_AUTH, UPDATE_LOGIN_FORM, UPDATE_USER_DATA, UPDATE_SIGNUP_FORM, UPDATE_SIGNUP_ERRORS, UPDATE_LOGIN_ERRORS, SET_AUTH_AS_FALSE, SET_USER_NAME_AS_FALSE, SET_USER_NAME, SET_USER_ID_AS_FALSE, SET_USER_ID, UPDATE_APPLY_STEP_ONE, UPDATE_APPLY_STEP_TWO, UPDATE_APPLY_STEP_THREE, UPDATE_APPLY_STEP_FOUR, SET_CURRENT_APPLY_STEP, UPDATE_USER_UPDATING_STATUS, UPDATE_APPLY_ERRORS, UPDATE_MOBILE_MENU_STATUS, UPDATE_SUBMITTED_VIEW,UPDATE_FORGOT_PASSWORD_FORM,UPDATE_VOLUNTEER_FORM } from '../constants'; +import { SET_AUTH, UPDATE_LOGIN_FORM, UPDATE_USER_DATA, UPDATE_SIGNUP_FORM, UPDATE_SIGNUP_ERRORS, UPDATE_LOGIN_ERRORS, UPDATE_VOLUNTEER_ERRORS, SET_AUTH_AS_FALSE, SET_USER_NAME_AS_FALSE, SET_USER_NAME, SET_USER_ID_AS_FALSE, SET_USER_ID, UPDATE_APPLY_STEP_ONE, UPDATE_APPLY_STEP_TWO, UPDATE_APPLY_STEP_THREE, UPDATE_APPLY_STEP_FOUR, SET_CURRENT_APPLY_STEP, UPDATE_USER_UPDATING_STATUS, UPDATE_APPLY_ERRORS, UPDATE_MOBILE_MENU_STATUS, UPDATE_SUBMITTED_VIEW,UPDATE_FORGOT_PASSWORD_FORM,UPDATE_VOLUNTEER_FORM } from '../constants'; import { auth } from '../util'; import { browserHistory } from 'react-router'; import { notMercedOptions } from '../constants' +import { parseError } from '../util' function mapUserDetailsToApplication(dispatch, details){ let stepOne = { @@ -186,6 +187,41 @@ export function logout() { } } +/** + * + * @param user + * @returns {function(*)} + */ +export function signUpVolunteer(user) { + return (dispatch) => { + auth.submitVolunteerApplication(user) + .then(() => { + dispatch(updateVolunteerForm({ + name: "", + email: "", + age: "", + friday_availability: "", + saturday_availability: "", + sunday_availability: "", + dietary_restrictions: "", + shirt_size: "" + })); + + forwardTo('/'); + }) + .catch(({ validation }) => { + let errorSet = {}; + if(validation.errors){ + validation.errors.forEach((error) => { + errorSet[error.key] = parseError(error.key, error.message); + }) + } + + dispatch(updateVolunteerErrors(errorSet)); + }); + } +} + export function signup(user) { return (dispatch) => { @@ -216,6 +252,8 @@ export function signup(user) { } } + + export function updateApplyStep(index, data){ const applyStepMap = [ updateApplyStepOne(data), @@ -268,6 +306,11 @@ export function updateSignupErrors(newState) { return { type: UPDATE_SIGNUP_ERRORS, newState }; } + +export function updateVolunteerErrors(newState) { + return { type: UPDATE_VOLUNTEER_ERRORS, newState }; +} + export function updateApplyErrors(newState) { return { type: UPDATE_APPLY_ERRORS, newState }; } diff --git a/HackMerced/2017F/src/app/src/components/application/layout.js b/HackMerced/2017F/src/app/src/components/application/layout.js index f2a4800..dae343d 100644 --- a/HackMerced/2017F/src/app/src/components/application/layout.js +++ b/HackMerced/2017F/src/app/src/components/application/layout.js @@ -1,5 +1,4 @@ import React, { Component } from 'react'; -import { TextInputBlock } from '../partials'; import { updateApplyStep, update, updateApplyErrors } from '../../actions'; import { StepOne, StepTwo, StepThree, StepFour } from './'; import { notMercedOptions } from '../../constants'; @@ -9,7 +8,6 @@ let timeChecker; export class ApplicationLayout extends Component { - render() { return (