X-Git-Url: http://nitlanguage.org diff --git a/contrib/opportunity/src/opportunity_controller.nit b/contrib/opportunity/src/opportunity_controller.nit index 032b7d3..26a4ef6 100644 --- a/contrib/opportunity/src/opportunity_controller.nit +++ b/contrib/opportunity/src/opportunity_controller.nit @@ -16,7 +16,6 @@ module opportunity_controller import nitcorn -import sha1 import templates import opportunity_model @@ -46,34 +45,70 @@ class OpportunityWelcome var get = request.get_args var rq = url.split("/") if rq.has("meetup_create") then + var ansset = new HashSet[String] + var ans_tmp = "answer_" + var cnt = 1 + loop + var anss = request.string_arg(ans_tmp + cnt.to_s) + cnt += 1 + if anss == null then break + if ansset.has(anss) then continue + ansset.add anss + end + var mname = request.string_arg("meetup_name") var mdate = request.string_arg("meetup_date") var mplace = request.string_arg("meetup_place") - if mname == null or mdate == null or mplace == null then return bad_req + 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, mmode) + meetpage.ans = ansset + meetpage.meet = meet + meetpage.error = "'Meetup name' is a mandatory fields." + rsp.body = meetpage.write_to_string + return rsp + + end var db = new OpportunityDB.open(db_path) - var meet = new Meetup(mname, mdate, mplace) - if meet == null then + var meet = new Meetup(mname, mdate, mplace, mmode) + if ansset.is_empty then db.close - return bad_req + var rsp = new HttpResponse(200) + var meetpage = new MeetupCreationPage + meetpage.meet = meet + meetpage.error = "You need to input at least one answer." + rsp.body = meetpage.write_to_string + return rsp end - meet.commit(db) - var ans_tmp = "answer_" - var cnt = 1 - loop - var anss = request.string_arg(ans_tmp + cnt.to_s) - if anss == null then break - var ans = new Answer(anss) + if not meet.commit(db) then + db.close + var rsp = new HttpResponse(200) + var meetpage = new MeetupCreationPage + meetpage.meet = meet + meetpage.ans = ansset + meetpage.error = """

Could not create Meetup.

+

Hmm, that's embarassing, the database indicates that your meetup already exists.

+

If this is not a duplicated submission, please contact the mainainers of the website, you might have found a bug !

""" + rsp.body = meetpage.write_to_string + return rsp + end + for v in ansset do + var ans = new Answer(v) ans.meetup = meet ans.commit(db) - cnt += 1 end db.close var rsp = new HttpResponse(200) - if meet.id == "" then - rsp.body = (new MeetupCreationPage).write_to_string - else - rsp.body = (new MeetupConfirmation(meet)).write_to_string - end + rsp.body = (new MeetupConfirmation(meet)).write_to_string return rsp end if rq.has("new_meetup") then @@ -100,7 +135,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) @@ -145,7 +179,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) @@ -163,15 +197,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 @@ -189,7 +222,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