/backend/sosmessage-admin/app/controllers/Moderation.scala

https://github.com/troger/sosmessagedecarte · Scala · 69 lines · 57 code · 12 blank · 0 comment · 0 complexity · 945e8f10b90a5cf1854b855dc2135bd0 MD5 · raw file

  1. package controllers
  2. import play.api._
  3. import play.api.mvc._
  4. import play.api.data._
  5. import com.mongodb.casbah.commons.MongoDBObject
  6. import com.mongodb.casbah.MongoConnection
  7. import org.bson.types.ObjectId
  8. import com.mongodb.casbah.Imports._
  9. object Moderation extends Controller {
  10. val DataBaseName = "sosmessage"
  11. val MessagesCollectionName = "messages"
  12. val CategoriesCollectionName = "categories"
  13. val mongo = MongoConnection()
  14. val messagesCollection = mongo(DataBaseName)(MessagesCollectionName)
  15. val categoriesCollection = mongo(DataBaseName)(CategoriesCollectionName)
  16. def index(state: String = "waiting") = Action { implicit request =>
  17. val messageOrder = MongoDBObject("createdAt" -> -1)
  18. val q = MongoDBObject("state" -> state)
  19. val messages = messagesCollection.find(q).sort(messageOrder).foldLeft(List[DBObject]())((l, a) =>
  20. a :: l
  21. ).reverse
  22. Ok(views.html.moderation.index(state, messages))
  23. }
  24. def approve(messageId: String, selectedTab: String) = Action { implicit request =>
  25. val oid = new ObjectId(messageId)
  26. var o = messagesCollection.findOne(MongoDBObject("_id" -> oid)).get
  27. o += ("state" -> "approved")
  28. messagesCollection.save(o)
  29. Redirect(routes.Moderation.index(selectedTab)).flashing("actionDone" -> "messageApproved")
  30. }
  31. def reject(messageId: String, selectedTab: String) = Action { implicit request =>
  32. val oid = new ObjectId(messageId)
  33. var o = messagesCollection.findOne(MongoDBObject("_id" -> oid)).get
  34. o += ("state" -> "rejected")
  35. messagesCollection.save(o)
  36. Redirect(routes.Moderation.index(selectedTab)).flashing("actionDone" -> "messageRejected")
  37. }
  38. def delete(messageId: String, selectedTab: String) = Action { implicit request =>
  39. val oid = new ObjectId(messageId)
  40. val o = MongoDBObject("_id" -> oid)
  41. messagesCollection.remove(o)
  42. Redirect(routes.Moderation.index(selectedTab)).flashing("actionDone" -> "messageDeleted")
  43. }
  44. def deleteAll(state: String) = Action { implicit request =>
  45. val o = MongoDBObject("state" -> state)
  46. messagesCollection.remove(o)
  47. Redirect(routes.Moderation.index("waiting")).flashing("actionDone" -> (state + "MessagesDeleted"))
  48. }
  49. def approveAll(state: String) = Action { implicit request =>
  50. messagesCollection.update(MongoDBObject("state" -> state), $set ("state" -> "approved"), false, true)
  51. Redirect(routes.Moderation.index("waiting")).flashing("actionDone" -> (state + "MessagesApproved"))
  52. }
  53. def rejectAll(state: String) = Action { implicit request =>
  54. messagesCollection.update(MongoDBObject("state" -> state), $set ("state" -> "rejected"), false, true)
  55. Redirect(routes.Moderation.index("waiting")).flashing("actionDone" -> (state + "MessagesRejected"))
  56. }
  57. }