about summary refs log tree commit diff
path: root/users/grfn/bbbg/src/bbbg/handlers/signup_form.clj
blob: 8c4958f1035a915f287777fea6ba85a902cac9d7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
(ns bbbg.handlers.signup-form
  (:require
   [bbbg.db :as db]
   [bbbg.db.event :as db.event]
   [bbbg.event :as event]
   [bbbg.handlers.core :refer [page-response]]
   [compojure.core :refer [GET context]]
   [java-time :refer [local-date]]
   [ring.util.response :refer [redirect]]))

(defn no-events-page []
  [:div.no-events
   [:p
    "There are no events for today"]
   [:p
    [:a {:href (str "/events/new?date=" (str (local-date)))} "Create Event"]
    [:a {:href "/events"} "All Events"]]])

(defn signup-page [event]
  [:div.signup-page
   [:form#signup-form
    {:method "POST"
     :action "/event_attendees"
     :disabled "disabled"}
    [:input#event-id {:type "hidden" :name "event_id" :value (::event/id event)}]
    [:input#attendee-id {:type "hidden" :name "attendee_id"}]
    [:label "Name"
     [:input#name-autocomplete
      {:type "search"
       :name "name"
       :spellcheck "false"
       :autocorrect "off"
       :autocomplete "off"
       :autocapitalize "off"
       :maxlength "2048"}]]
    [:input {:type "submit"
             :value "Sign In"
             :disabled "disabled"}]]])

(defn event-not-found []
  [:div.event-not-found
   [:p "Event not found"]
   [:p [:a {:href (str "/events/new")} "Create a new event"]]])

;;;

(defn signup-form-routes [{:keys [db]}]
  (context "/signup-forms" []
   (GET "/" []
     (if-let [event (db/fetch db (db.event/today))]
       (redirect (str "/signup-forms/" (::event/id event)))
       (page-response (no-events-page))))

   (GET "/:event-id" [event-id]
     (if-let [event (db/get db :event event-id)]
       (page-response (signup-page event))
       (event-not-found)))))