/app/controllers/Application.scala
Scala | 253 lines | 190 code | 53 blank | 10 comment | 12 complexity | 730ee9b0928d783d4e02959a7fbfe2bd MD5 | raw file
- package controllers
- import play.api._
- import play.api.mvc._
- import play.api.libs.iteratee.Enumerator
- import play.api.mvc.Codec
- import play.api.data._
- import play.api.data.Forms._
- import play.api.mvc._
- import com.mongodb.casbah.Imports._
- import java.util.Calendar
- import java.text._
- object Application extends Controller {
- implicit val myCustomCharset = Codec.javaSupported("utf-8")
-
- def login_act = Action { request=>
- val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
-
- var login_name = post_map.getOrElse("login_name", List(""))(0)
- var password = post_map.getOrElse("password", List(""))(0)
-
- val query = MongoDBObject("login_name" -> login_name, "password" -> password)
-
- val user_some = DB.colls("User").findOne(query)
-
- if(user_some != None){
- val user = user_some.get
- //println(user("_id"))
- Redirect("/index.html").withSession( request.session + ("user_id" -> user("_id").toString))
- }else{
- Redirect("/")
- }
-
- }
- def login = Action { request=>
- Ok(views.html.login());
- }
-
- def index = Action { request=>
- val user_id = request.session.get("user_id").get
- val query_user = MongoDBObject("_id" -> user_id)
- val user = DB.colls("User").findOne(query_user).get
-
-
- Ok(views.html.index("Your new application is ready.", user))
- }
-
- def category(cagetory_name: String) = Action {request =>
- val user_id = request.session.get("user_id").get
- //print(user_id)
- val query_user = MongoDBObject("_id" -> user_id)
- val user = DB.colls("User").findOne(query_user).get
- var product_list = List[com.mongodb.casbah.Imports.DBObject]();
- if(user.get("is_super") == "true"){
- product_list = DB.colls(cagetory_name).find().sort(MongoDBObject("update_time" -> -1)).toList
- }else{
- val query_product = MongoDBObject("user_id" -> user_id)
- product_list = DB.colls(cagetory_name).find(query_product).sort(MongoDBObject("update_time" -> -1)).toList
- }
-
- Ok(views.html.category(cagetory_name, product_list, user))
- }
-
- def add_product(category_name: String) = Action { request=>
-
- val user_id = request.session.get("user_id").get
- val query_user = MongoDBObject("_id" -> user_id)
- val user = DB.colls("User").findOne(query_user).get
-
- Ok(views.html.add_product(get_CategoryMap(category_name).metaData, category_name, user))
- }
-
- def add_product_act(category_name: String) = Action { request =>
- val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
-
- var one:Map[String, String] = Map("_id"->(new (java.util.Date).getTime+""))
- val key_list_ext = get_CategoryMap(category_name).key_list_ext
- for(key<-key_list_ext){
- var value = post_map.getOrElse(key, List(""))(0)
- if(key=="product_description"){
- val rr = """\n|(\r\n)""".r
- value = rr.replaceAllIn(value.trim(), "<br/>")
- }
- one += (key->value)
- }
- val user_id = request.session.get("user_id").get
- one += ("user_id"-> user_id)
-
- val now = Calendar.getInstance().getTime()
- val timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- val nowAsString = timeformat.format(now)
-
- one += ("crt_time"-> nowAsString)
- one += ("update_time"-> nowAsString)
-
- val query_user = MongoDBObject("_id" -> user_id)
- val user = DB.colls("User").findOne(query_user).get
- one += ("user_display_name"-> user.get("display_name").toString);
-
- //println(request.session.get("user_id").toString)
- DB.colls(category_name).insert(one)
- Redirect(routes.Application.category(category_name))
- }
-
- def download_amazon_upload_file(category_name: String) = Action { implicit request =>
- val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
- var product_ids = post_map.get("product_ids").get
-
- var results = DB.colls(category_name).find(MongoDBObject("_id"->Map("$in"->product_ids)))
- var file_content = get_CategoryMap(category_name).headline
- var key_list = get_CategoryMap(category_name).key_list
- for(p<-results){
- for(key<-key_list){
- file_content += p.getOrElse(key, "") + "\t"
- }
- file_content += "\n"
- }
- var date = Calendar.getInstance().getTime();
- val formater = new SimpleDateFormat("yyyyMMddHHmmss")
- val date_str = formater.format(date);
- SimpleResult(
- header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain", CONTENT_DISPOSITION-> ("attachment;filename= " + date_str+ ".txt"))),
- body = Enumerator(file_content.getBytes())
- )
- }
-
- def edit_product(product_id: String, category_name: String) = Action { request=>
- val query = MongoDBObject("_id" -> product_id)
- var product = DB.colls(category_name).findOne(query).get
-
- val rr = """<br/>""".r
- product("product_description") = rr.replaceAllIn(product("product_description").toString, "\r\n")
-
- val user_id = request.session.get("user_id").get
- val query_user = MongoDBObject("_id" -> user_id)
- val user = DB.colls("User").findOne(query_user).get
-
- Ok(views.html.edit_product(get_CategoryMap(category_name).metaData, category_name, product, user))
- }
-
- def copy_add_product(product_id: String, category_name: String) = Action { request=>
- val query = MongoDBObject("_id" -> product_id)
- var product = DB.colls(category_name).findOne(query).get
-
- val rr = """<br/>""".r
- product("product_description") = rr.replaceAllIn(product("product_description").toString, "\r\n")
-
- val user_id = request.session.get("user_id").get
- val query_user = MongoDBObject("_id" -> user_id)
- val user = DB.colls("User").findOne(query_user).get
-
- Ok(views.html.copy_add_product(get_CategoryMap(category_name).metaData, category_name, product, user))
- }
-
- def edit_product_act(product_id: String, category_name: String) = Action { request =>
- val post_map = request.body.asFormUrlEncoded.get // Map[String, List]
-
- val query = MongoDBObject("_id" -> product_id)
- var update = MongoDBObject()
-
- val key_list_ext = get_CategoryMap(category_name).key_list_ext
- for(key<-key_list_ext){
- var value = post_map.getOrElse(key, List(""))(0)
- if(key=="product_description"){
- val rr = """\n|(\r\n)""".r
- value = rr.replaceAllIn(value.trim(), "<br/>")
- }
- update = update ++ (key->value)
- }
-
- val now = Calendar.getInstance().getTime()
- val timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
- val nowAsString = timeformat.format(now)
-
- update += ("update_time"-> nowAsString)
-
- val product = DB.colls(category_name).findOne(query).get
- update += ("user_id"-> product.get("user_id"))
-
- //println(update)
- DB.colls(category_name).update(query, update)
- Redirect(routes.Application.category(category_name))
- }
-
- def del_product_act(product_id: String, category_name: String) = Action{ implicit request =>
- val query = MongoDBObject("_id" -> product_id)
- val result = DB.colls(category_name).remove(query)
-
- Ok("""{"status":200, "msg":"success"}""")
- }
-
- def get_CategoryMap(category_name:String):Category = {
- if(CategoryMap.map.getOrElse(category_name, None) != None){
- CategoryMap.map(category_name)
- }else{
- CategoryMap2.map(category_name)
- }
- }
-
- def hello(name: String) = Action {
- Ok("Hello " + name)
- }
-
-
- def helloBob = Action {
- Redirect(routes.Application.hello("Bob"))
- }
- // def r_index = Action {
- // Result(
- // header = ResponseHeader(200, Map(CONTENT_TYPE -> "text/plain")),
- // body = Enumerator("Hello world!".getBytes())
- // )
- // }
- def redirect_index = Action {
- Redirect("/test")
- }
-
- def todo(name:String) = TODO
-
- def xmlResult = Action {
- var a = Ok(<message>Hello World!</message>).as("text/html")
- a
- }
- def xmlResult2 = Action {
- val result = Ok("Hello World2!").withHeaders(CACHE_CONTROL -> "max-age=3600", ETAG -> "xx")
- result
- }
- def xmlResult3 = Action {
- val result = Ok("Hello world3").withCookies(Cookie("theme", "blue"))
- val result2 = result.discardingCookies(DiscardingCookie("theme"))
- val result3 = result.withCookies(Cookie("theme", "blue")).discardingCookies(DiscardingCookie("skin"))
- result
- }
-
- def xmlResult4 = Action {request=>
- val result = Ok("Hello world3").withCookies(Cookie("theme", "blue"))
- Ok("Welcome!").withSession( "connected" -> "user@gmail.com")
- Ok("Hello World!").withSession( request.session + ("saidHello" -> "yes"))
- Ok("Theme reset!").withSession( request.session - "theme")
- result
- }
- def session_r = Action { request =>
- request.session.get("connected").map { user => Ok("Hello " + user)}.getOrElse { Unauthorized("Oops, you are not connected")
- Ok("Bye").withNewSession
- }
- }
- }