@@ -5,6 +5,8 @@ import play.api.data._, Forms._, validation.Constraints._
55
66import org .json4s ._ , ext .JodaTimeSerializers
77import com .github .tototoshi .play2 .json4s .native ._
8+
9+ import scala .concurrent .Future
810import scala .concurrent .ExecutionContext .Implicits .global
911
1012import models ._
@@ -13,17 +15,13 @@ object Programmers extends Controller with Json4s {
1315
1416 implicit val formats = DefaultFormats ++ JodaTimeSerializers .all
1517
16- def all = Action {
17- Async {
18- Programmer .findAll.map(programmers => Ok (Extraction .decompose(programmers)))
19- }
18+ def all = Action .async {
19+ Programmer .findAll.map(programmers => Ok (Extraction .decompose(programmers)))
2020 }
2121
22- def show (id : Long ) = Action {
23- Async {
24- Programmer .find(id).map { programmerOpt =>
25- programmerOpt map { programmer => Ok (Extraction .decompose(programmer)) } getOrElse NotFound
26- }
22+ def show (id : Long ) = Action .async {
23+ Programmer .find(id).map { programmerOpt =>
24+ programmerOpt map { programmer => Ok (Extraction .decompose(programmer)) } getOrElse NotFound
2725 }
2826 }
2927
@@ -36,82 +34,68 @@ object Programmers extends Controller with Json4s {
3634 )(ProgrammerForm .apply)(ProgrammerForm .unapply)
3735 )
3836
39- def create = Action { implicit req =>
37+ def create = Action .async { implicit req =>
4038 programmerForm.bindFromRequest.fold(
41- formWithErrors => BadRequest (" invalid parameters" ),
42- form => {
43- Async {
44- Programmer .create(name = form.name, companyId = form.companyId).map { programmer =>
45- Created .withHeaders(LOCATION -> s " /programmers/ ${programmer.id}" )
46- }
47- }
39+ formWithErrors => Future .successful(BadRequest (" invalid parameters" )),
40+ form => Programmer .create(name = form.name, companyId = form.companyId).map { programmer =>
41+ Created .withHeaders(LOCATION -> s " /programmers/ ${programmer.id}" )
4842 }
4943 )
5044 }
5145
52- def addSkill (programmerId : Long , skillId : Long ) = Action {
53- Async {
54- Programmer .find(programmerId).map { programmerOpt =>
55- programmerOpt map { programmer =>
56- try {
57- Skill .find(skillId).map { skillOpt =>
58- skillOpt map { skill => programmer.addSkill(skill) }
59- }
60- Ok
61- } catch { case e : Exception => Conflict }
62- } getOrElse NotFound
63- }
64- }
65- }
66-
67- def deleteSkill (programmerId : Long , skillId : Long ) = Action {
68- Async {
69- Programmer .find(programmerId).map { programmerOpt =>
70- programmerOpt map { programmer =>
46+ def addSkill (programmerId : Long , skillId : Long ) = Action .async {
47+ Programmer .find(programmerId).map { programmerOpt =>
48+ programmerOpt map { programmer =>
49+ try {
7150 Skill .find(skillId).map { skillOpt =>
7251 skillOpt map { skill => programmer.addSkill(skill) }
7352 }
7453 Ok
75- } getOrElse NotFound
76- }
54+ } catch { case e : Exception => Conflict }
55+ } getOrElse NotFound
7756 }
7857 }
7958
80- def joinCompany (programmerId : Long , companyId : Long ) = Action {
81- Async {
82- for {
83- companyOpt <- Company .find(companyId)
84- programmerOpt <- Programmer .find(programmerId)
85- } yield {
86- companyOpt map { company =>
87- programmerOpt.map { programmer =>
88- programmer.copy(companyId = Some (company.id)).save()
89- Ok
90- } getOrElse BadRequest (" Programmer not found!" )
91- } getOrElse BadRequest (" Company not found!" )
92- }
59+ def deleteSkill (programmerId : Long , skillId : Long ) = Action .async {
60+ Programmer .find(programmerId).map { programmerOpt =>
61+ programmerOpt map { programmer =>
62+ Skill .find(skillId).map { skillOpt =>
63+ skillOpt map { skill => programmer.addSkill(skill) }
64+ }
65+ Ok
66+ } getOrElse NotFound
9367 }
9468 }
9569
96- def leaveCompany (programmerId : Long ) = Action {
97- Async {
98- Programmer .find(programmerId).map { programmerOpt =>
99- programmerOpt map { programmer =>
100- programmer.copy(companyId = None ).save()
70+ def joinCompany (programmerId : Long , companyId : Long ) = Action .async {
71+ for {
72+ companyOpt <- Company .find(companyId)
73+ programmerOpt <- Programmer .find(programmerId)
74+ } yield {
75+ companyOpt map { company =>
76+ programmerOpt.map { programmer =>
77+ programmer.copy(companyId = Some (company.id)).save()
10178 Ok
10279 } getOrElse BadRequest (" Programmer not found!" )
103- }
80+ } getOrElse BadRequest ( " Company not found! " )
10481 }
10582 }
10683
107- def delete (id : Long ) = Action {
108- Async {
109- Programmer .find(id).map { programmerOpt =>
110- programmerOpt map { programmer =>
111- programmer.destroy()
112- NoContent
113- } getOrElse NotFound
114- }
84+ def leaveCompany (programmerId : Long ) = Action .async {
85+ Programmer .find(programmerId).map { programmerOpt =>
86+ programmerOpt map { programmer =>
87+ programmer.copy(companyId = None ).save()
88+ Ok
89+ } getOrElse BadRequest (" Programmer not found!" )
90+ }
91+ }
92+
93+ def delete (id : Long ) = Action .async {
94+ Programmer .find(id).map { programmerOpt =>
95+ programmerOpt map { programmer =>
96+ programmer.destroy()
97+ NoContent
98+ } getOrElse NotFound
11599 }
116100 }
117101
0 commit comments