PageRenderTime 49ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/app/controllers/Application.scala

https://github.com/a564941464/play_amz_list
Scala | 253 lines | 190 code | 53 blank | 10 comment | 12 complexity | 730ee9b0928d783d4e02959a7fbfe2bd MD5 | raw file
  1. package controllers
  2. import play.api._
  3. import play.api.mvc._
  4. import play.api.libs.iteratee.Enumerator
  5. import play.api.mvc.Codec
  6. import play.api.data._
  7. import play.api.data.Forms._
  8. import play.api.mvc._
  9. import com.mongodb.casbah.Imports._
  10. import java.util.Calendar
  11. import java.text._
  12. object Application extends Controller {
  13. implicit val myCustomCharset = Codec.javaSupported("utf-8")
  14. def login_act = Action { request=>
  15. val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
  16. var login_name = post_map.getOrElse("login_name", List(""))(0)
  17. var password = post_map.getOrElse("password", List(""))(0)
  18. val query = MongoDBObject("login_name" -> login_name, "password" -> password)
  19. val user_some = DB.colls("User").findOne(query)
  20. if(user_some != None){
  21. val user = user_some.get
  22. //println(user("_id"))
  23. Redirect("/index.html").withSession( request.session + ("user_id" -> user("_id").toString))
  24. }else{
  25. Redirect("/")
  26. }
  27. }
  28. def login = Action { request=>
  29. Ok(views.html.login());
  30. }
  31. def index = Action { request=>
  32. val user_id = request.session.get("user_id").get
  33. val query_user = MongoDBObject("_id" -> user_id)
  34. val user = DB.colls("User").findOne(query_user).get
  35. Ok(views.html.index("Your new application is ready.", user))
  36. }
  37. def category(cagetory_name: String) = Action {request =>
  38. val user_id = request.session.get("user_id").get
  39. //print(user_id)
  40. val query_user = MongoDBObject("_id" -> user_id)
  41. val user = DB.colls("User").findOne(query_user).get
  42. var product_list = List[com.mongodb.casbah.Imports.DBObject]();
  43. if(user.get("is_super") == "true"){
  44. product_list = DB.colls(cagetory_name).find().sort(MongoDBObject("update_time" -> -1)).toList
  45. }else{
  46. val query_product = MongoDBObject("user_id" -> user_id)
  47. product_list = DB.colls(cagetory_name).find(query_product).sort(MongoDBObject("update_time" -> -1)).toList
  48. }
  49. Ok(views.html.category(cagetory_name, product_list, user))
  50. }
  51. def add_product(category_name: String) = Action { request=>
  52. val user_id = request.session.get("user_id").get
  53. val query_user = MongoDBObject("_id" -> user_id)
  54. val user = DB.colls("User").findOne(query_user).get
  55. Ok(views.html.add_product(get_CategoryMap(category_name).metaData, category_name, user))
  56. }
  57. def add_product_act(category_name: String) = Action { request =>
  58. val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
  59. var one:Map[String, String] = Map("_id"->(new (java.util.Date).getTime+""))
  60. val key_list_ext = get_CategoryMap(category_name).key_list_ext
  61. for(key<-key_list_ext){
  62. var value = post_map.getOrElse(key, List(""))(0)
  63. if(key=="product_description"){
  64. val rr = """\n|(\r\n)""".r
  65. value = rr.replaceAllIn(value.trim(), "<br/>")
  66. }
  67. one += (key->value)
  68. }
  69. val user_id = request.session.get("user_id").get
  70. one += ("user_id"-> user_id)
  71. val now = Calendar.getInstance().getTime()
  72. val timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  73. val nowAsString = timeformat.format(now)
  74. one += ("crt_time"-> nowAsString)
  75. one += ("update_time"-> nowAsString)
  76. val query_user = MongoDBObject("_id" -> user_id)
  77. val user = DB.colls("User").findOne(query_user).get
  78. one += ("user_display_name"-> user.get("display_name").toString);
  79. //println(request.session.get("user_id").toString)
  80. DB.colls(category_name).insert(one)
  81. Redirect(routes.Application.category(category_name))
  82. }
  83. def download_amazon_upload_file(category_name: String) = Action { implicit request =>
  84. val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
  85. var product_ids = post_map.get("product_ids").get
  86. var results = DB.colls(category_name).find(MongoDBObject("_id"->Map("$in"->product_ids)))
  87. var file_content = get_CategoryMap(category_name).headline
  88. var key_list = get_CategoryMap(category_name).key_list
  89. for(p<-results){
  90. for(key<-key_list){
  91. file_content += p.getOrElse(key, "") + "\t"
  92. }
  93. file_content += "\n"
  94. }
  95. var date = Calendar.getInstance().getTime();
  96. val formater = new SimpleDateFormat("yyyyMMddHHmmss")
  97. val date_str = formater.format(date);
  98. SimpleResult(
  99. header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain", CONTENT_DISPOSITION-> ("attachment;filename= " + date_str+ ".txt"))),
  100. body = Enumerator(file_content.getBytes())
  101. )
  102. }
  103. def edit_product(product_id: String, category_name: String) = Action { request=>
  104. val query = MongoDBObject("_id" -> product_id)
  105. var product = DB.colls(category_name).findOne(query).get
  106. val rr = """<br/>""".r
  107. product("product_description") = rr.replaceAllIn(product("product_description").toString, "\r\n")
  108. val user_id = request.session.get("user_id").get
  109. val query_user = MongoDBObject("_id" -> user_id)
  110. val user = DB.colls("User").findOne(query_user).get
  111. Ok(views.html.edit_product(get_CategoryMap(category_name).metaData, category_name, product, user))
  112. }
  113. def copy_add_product(product_id: String, category_name: String) = Action { request=>
  114. val query = MongoDBObject("_id" -> product_id)
  115. var product = DB.colls(category_name).findOne(query).get
  116. val rr = """<br/>""".r
  117. product("product_description") = rr.replaceAllIn(product("product_description").toString, "\r\n")
  118. val user_id = request.session.get("user_id").get
  119. val query_user = MongoDBObject("_id" -> user_id)
  120. val user = DB.colls("User").findOne(query_user).get
  121. Ok(views.html.copy_add_product(get_CategoryMap(category_name).metaData, category_name, product, user))
  122. }
  123. def edit_product_act(product_id: String, category_name: String) = Action { request =>
  124. val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
  125. val query = MongoDBObject("_id" -> product_id)
  126. var update = MongoDBObject()
  127. val key_list_ext = get_CategoryMap(category_name).key_list_ext
  128. for(key<-key_list_ext){
  129. var value = post_map.getOrElse(key, List(""))(0)
  130. if(key=="product_description"){
  131. val rr = """\n|(\r\n)""".r
  132. value = rr.replaceAllIn(value.trim(), "<br/>")
  133. }
  134. update = update ++ (key->value)
  135. }
  136. val now = Calendar.getInstance().getTime()
  137. val timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
  138. val nowAsString = timeformat.format(now)
  139. update += ("update_time"-> nowAsString)
  140. val product = DB.colls(category_name).findOne(query).get
  141. update += ("user_id"-> product.get("user_id"))
  142. //println(update)
  143. DB.colls(category_name).update(query, update)
  144. Redirect(routes.Application.category(category_name))
  145. }
  146. def del_product_act(product_id: String, category_name: String) = Action{ implicit request =>
  147. val query = MongoDBObject("_id" -> product_id)
  148. val result = DB.colls(category_name).remove(query)
  149. Ok("""{"status":200, "msg":"success"}""")
  150. }
  151. def get_CategoryMap(category_name:String):Category = {
  152. if(CategoryMap.map.getOrElse(category_name, None) != None){
  153. CategoryMap.map(category_name)
  154. }else{
  155. CategoryMap2.map(category_name)
  156. }
  157. }
  158. def hello(name: String) = Action {
  159. Ok("Hello " + name)
  160. }
  161. def helloBob = Action {
  162. Redirect(routes.Application.hello("Bob"))
  163. }
  164. // def r_index = Action {
  165. // Result(
  166. // header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain")),
  167. // body = Enumerator("Hello world!".getBytes())
  168. // )
  169. // }
  170. def redirect_index = Action {
  171. Redirect("/test")
  172. }
  173. def todo(name:String) = TODO
  174. def xmlResult = Action {
  175. var a = Ok(<message>Hello World!</message>).as("text/html")
  176. a
  177. }
  178. def xmlResult2 = Action {
  179. val result = Ok("Hello World2!").withHeaders(CACHE_CONTROL -> "max-age=3600", ETAG -> "xx")
  180. result
  181. }
  182. def xmlResult3 = Action {
  183. val result = Ok("Hello world3").withCookies(Cookie("theme", "blue"))
  184. val result2 = result.discardingCookies(DiscardingCookie("theme"))
  185. val result3 = result.withCookies(Cookie("theme", "blue")).discardingCookies(DiscardingCookie("skin"))
  186. result
  187. }
  188. def xmlResult4 = Action {request=>
  189. val result = Ok("Hello world3").withCookies(Cookie("theme", "blue"))
  190. Ok("Welcome!").withSession( "connected" -> "user@gmail.com")
  191. Ok("Hello World!").withSession( request.session + ("saidHello" -> "yes"))
  192. Ok("Theme reset!").withSession( request.session - "theme")
  193. result
  194. }
  195. def session_r = Action { request =>
  196. request.session.get("connected").map { user => Ok("Hello " + user)}.getOrElse { Unauthorized("Oops, you are not connected")
  197. Ok("Bye").withNewSession
  198. }
  199. }
  200. }