contrib/opportunity: do not force capitalize names
[nit.git] / contrib / opportunity / src / opportunity_model.nit
index 901077a..ef7654d 100644 (file)
@@ -154,25 +154,25 @@ class People
        # NOTE: If `self` does not exist in the Database, no answers will be fetched
        fun load_answers(db: OpportunityDB, meetup: Meetup) do
                self.answers = new HashMap[Answer, Int]
-               var req = db.select("answers.id, answers.name, part_answers.value FROM part_answers, answers WHERE part_answers.id_part={id} AND answers.id=part_answers.id_ans AND answers.meetup_id={meetup.id.to_sql_string} GROUP BY answers.id;")
+               var req = db.select("answers.id, answers.name, part_answers.value FROM part_answers, answers WHERE part_answers.id_part={id} AND answers.id=part_answers.id_ans AND answers.meetup_id={meetup.id.html_escape.to_sql_string} GROUP BY answers.id;")
                for i in req do
                        var ans = new Answer.from_db(i[0].to_i, i[1].to_s)
                        answers[ans] = i[2].to_i
                end
        end
 
-       redef fun to_s do return "{surname.capitalized} {name.capitalized}"
+       redef fun to_s do return "{surname} {name}"
 
        redef fun commit(db) do
                if id == -1 then
-                       if not db.execute("INSERT INTO people (name,surname) VALUES ({name.to_sql_string}, {surname.to_sql_string});") then
+                       if not db.execute("INSERT INTO people (name,surname) VALUES ({name.html_escape.to_sql_string}, {surname.html_escape.to_sql_string});") then
                                print "Error while adding people {self}"
                                print db.error or else "Unknown error"
                                return false
                        end
                        id = db.last_insert_rowid
                else
-                       if not db.execute("UPDATE people SET name={name.to_sql_string}, surname={surname.to_sql_string} WHERE ID={id};") then
+                       if not db.execute("UPDATE people SET name={name.html_escape.to_sql_string}, surname={surname.html_escape.to_sql_string} WHERE ID={id};") then
                                print "Error while updating people {self}"
                                print db.error or else "Unknown error"
                                return false
@@ -248,7 +248,7 @@ class Meetup
                if id == "" then
                        var time = get_time
                        var tmpid = (name + date + place + time.to_s).sha1_to_s
-                       if not db.execute("INSERT INTO meetups (id, name, date, place, answer_mode) VALUES({tmpid.to_sql_string}, {name.to_sql_string}, {date.to_sql_string}, {place.to_sql_string}, {answer_mode});") then
+                       if not db.execute("INSERT INTO meetups (id, name, date, place, answer_mode) VALUES({tmpid.to_sql_string}, {name.html_escape.to_sql_string}, {date.html_escape.to_sql_string}, {place.html_escape.to_sql_string}, {answer_mode});") then
                                print "Error recording entry Meetup {self}"
                                print db.error or else "Null error"
                                return false
@@ -256,7 +256,7 @@ class Meetup
                        id = tmpid
                        return true
                else
-                       return db.execute("UPDATE meetups SET name={name.to_sql_string}, date={date.to_sql_string}, place={place.to_sql_string}, answer_mode={answer_mode} WHERE ID={id.to_sql_string};")
+                       return db.execute("UPDATE meetups SET name={name.html_escape.to_sql_string}, date={date.html_escape.to_sql_string}, place={place.html_escape.to_sql_string}, answer_mode={answer_mode} WHERE ID={id.to_sql_string};")
                end
        end
 
@@ -300,6 +300,33 @@ class Answer
                abort
        end
 
+       # Counts the number of positive or maybe answers
+       fun count(db: OpportunityDB): Int do
+               if id == -1 then return -1
+               var count = 0
+               var res = db.select("part_answers.value FROM part_answers WHERE part_answers.id_ans={id};")
+               if meetup == null then meetup = load_meetup(db)
+               for i in res do
+                       if meetup.answer_mode == 0 then
+                               count += i[0].to_i
+                       else
+                               if i[0].to_i == 2 then count += 1
+                       end
+               end
+               return count
+       end
+
+       # Counts the score for this particular answer
+       fun score(db: OpportunityDB): Int do
+               if id == -1 then return -1
+               var score = 0
+               var res = db.select("part_answers.value FROM part_answers WHERE part_answers.id_ans={id};")
+               for i in res do
+                       score += i[0].to_i
+               end
+               return score
+       end
+
        redef fun commit(db) do
                var m = meetup
                if m == null then return false
@@ -310,14 +337,14 @@ class Answer
                        end
                end
                if id == -1 then
-                       if not db.execute("INSERT INTO answers (name, meetup_id) VALUES({name.to_sql_string}, {m.id.to_sql_string});") then
+                       if not db.execute("INSERT INTO answers (name, meetup_id) VALUES({name.html_escape.to_sql_string}, {m.id.to_sql_string});") then
                                print "Cannot create {self} in database"
                                print db.error or else "Unknown error"
                                return false
                        end
                        id = db.last_insert_rowid
                else
-                       if not db.execute("UPDATE answers SET name=({name.to_sql_string}) WHERE meetup_id={m.id.to_sql_string};") then
+                       if not db.execute("UPDATE answers SET name=({name.html_escape.to_sql_string}) WHERE meetup_id={m.id.to_sql_string};") then
                                print "Error updating {self} in database"
                                print db.error or else "Unknown error"
                                return false