module opportunity_controller
import nitcorn
-import sha1
import templates
import opportunity_model
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 = """<p>Could not create Meetup.</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
+ 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
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)
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)
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
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