Merge: contrib/opportunity: prevent null receiver error
[nit.git] / contrib / opportunity / src / opportunity_controller.nit
index 73e1d2e..868dd9e 100644 (file)
@@ -60,13 +60,18 @@ class OpportunityWelcome
                        var mname = request.string_arg("meetup_name")
                        var mdate = request.string_arg("meetup_date")
                        var mplace = request.string_arg("meetup_place")
+                       var mmodestr = request.string_arg("meetup_mode")
+                       var mmode = 0
                        if mdate == null then mdate = ""
                        if mplace == null then mplace = ""
+                       if mmodestr != null then
+                               mmode = 1
+                       end
                        if mname == null then
                                mname = ""
                                var rsp = new HttpResponse(200)
                                var meetpage = new MeetupCreationPage
-                               var meet = new Meetup(mname, mdate, mplace)
+                               var meet = new Meetup(mname, mdate, mplace, mmode)
                                meetpage.ans = ansset
                                meetpage.meet = meet
                                meetpage.error = "'Meetup name' is a mandatory fields."
@@ -75,7 +80,7 @@ class OpportunityWelcome
 
                        end
                        var db = new OpportunityDB.open(db_path)
-                       var meet = new Meetup(mname, mdate, mplace)
+                       var meet = new Meetup(mname, mdate, mplace, mmode)
                        if ansset.is_empty then
                                db.close
                                var rsp = new HttpResponse(200)
@@ -87,14 +92,13 @@ class OpportunityWelcome
                        end
                        if not meet.commit(db) then
                                db.close
-                               var meetid = (mname + mdate + mplace).sha1_to_s
                                var rsp = new HttpResponse(200)
                                var meetpage = new MeetupCreationPage
                                meetpage.meet = meet
                                meetpage.ans = ansset
                                meetpage.error = """<p>Could not create Meetup.</p>
-                               <p>Hmm, that's embarassing, there already seems to be a Meetup like yours <a href="/?meetup_id={{{meetid}}}">here</a>.</p>
-                               <p>If this is not yours, please contact the mainainers of the website, you might have found a bug !</p>"""
+                               <p>Hmm, that's embarassing, the database indicates that your meetup already exists.</p>
+                               <p>If this is not a duplicated submission, please contact the mainainers of the website, you might have found a bug !</p>"""
                                rsp.body = meetpage.write_to_string
                                return rsp
                        end
@@ -132,7 +136,6 @@ class OpportunityRESTAction
 
        redef fun answer(request, uri) do
                print "Received REST request from {uri}"
-               var get = request.get_args
                var req = uri.split("/")
                if req.has("people") then
                        return (new OpportunityPeopleREST).answer(request, uri)
@@ -177,7 +180,7 @@ class OpportunityAnswerREST
        redef fun answer(request, uri) do
                var persid = request.int_arg("pers_id")
                var ansid = request.int_arg("answer_id")
-               var ans = request.bool_arg("answer")
+               var ans = request.int_arg("answer")
                if persid == null or ansid == null or ans == null then return bad_req
                var db = new OpportunityDB.open(db_path)
                db.change_answer(ansid, persid, ans)
@@ -195,15 +198,14 @@ class OpportunityMeetupREST
                if args.has("new_pers") then
                        var name = request.string_arg("persname")
                        var m_id = request.string_arg("meetup_id")
-                       var ans = request.string_arg("answers").split("&")
-                       if name == null or m_id == null then return bad_req
-                       print ans
-                       var ansmap = new HashMap[Int, Bool]
+                       var ans_str = request.string_arg("answers")
+                       if name == null or m_id == null or ans_str == null then return bad_req
+                       var ans = ans_str.split("&")
+                       var ansmap = new HashMap[Int, Int]
                        for i in ans do
                                var mp = i.split("=")
-                               var b = false
-                               if mp.last == "true" then b = true
                                var id = mp.first.split("_").last
+                               var b = mp.last.to_i
                                if not id.is_numeric then continue
                                ansmap[id.to_i] = b
                        end
@@ -221,7 +223,7 @@ class OpportunityMeetupREST
                        var p = new People(rname, rsurname)
                        for i in m.answers(db) do
                                if not ansmap.has_key(i.id) then
-                                       p.answers[i] = false
+                                       p.answers[i] = 0
                                else
                                        p.answers[i] = ansmap[i.id]
                                end