OSDN Git Service

The Modification the DesignChange modules
[open-pdm-light/PartList.git] / PartsList / PartsList / app / controllers / DesignChangeController.scala
1 package controllers
2 import play.api._
3 import play.api.i18n._
4 import play.api.mvc._
5 import play.api.data._
6 import play.api.data.Forms._
7 import models._
8 import forms._
9 import beans._
10 import org.squeryl._
11 import org.squeryl.PrimitiveTypeMode._
12 import org.squeryl.annotations.Column
13 import scala.collection.mutable.ArrayBuffer
14
15 object DesignChangeController extends Controller{
16    val Home = Redirect(routes.DesignChangeController.list(0,""))
17
18    val designChangeRegistForm = Form(
19       mapping(
20           "dcNo" -> nonEmptyText,
21           "dcDescription" -> nonEmptyText
22        )(DesignChangeForm.apply)(DesignChangeForm.unapply)
23   )
24   
25   def create = Action { implicit request =>
26     Ok(views.html.createDesignChangeForm(designChangeRegistForm))
27   }
28   
29   def designChangeCoverRegistration() = Action { implicit request =>
30     designChangeRegistForm.bindFromRequest.fold(
31         formWithErrors => BadRequest(views.html.createDesignChangeForm(formWithErrors)),
32         designChange => {
33           inTransaction {
34             PartsListDb.designChanges.insert(DesignChange(designChange.dcNo, designChange.dcDescription, 1))
35           }
36                   Home.flashing("success" -> "Design Change %s has been created".format(designChange.dcNo))       
37         }
38      )
39   }
40   
41   def designChangeCoverModify(id: Long) = Action { implicit request =>
42     inTransaction {
43       var designChangeBuffer = ArrayBuffer[DesignChangeListBean]()
44       val designChange = getDesignChange(id)
45       val designChangeForm = DesignChangeForm(designChange.dcNo, designChange.dcDescription)
46       for(delPart <- designChange.delPartRelation) {
47         for(addPart <- designChange.addPartRelation) {
48           if(delPart.dcSeq == addPart.dcSeq) {
49                   designChangeBuffer += DesignChangeListBean(delPart.dcSeq, delPart.parent.head.name, delPart.child.head.name, addPart.parent.head.name, addPart.child.head.name)
50            }
51          }
52         }
53       for(addPart <- designChange.addPartRelation) {
54          var check = 0
55          for(designChange <- designChangeBuffer) {
56            if(designChange.dcSeq == addPart.dcSeq) {
57              check = 1
58             } 
59            }
60          if(check == 0) {
61              designChangeBuffer += DesignChangeListBean(addPart.dcSeq, "", "", addPart.parent.head.name, addPart.child.head.name)
62           }
63        }
64       Ok(views.html.updateDesignChangeForm(designChangeRegistForm.fill(designChangeForm), id, designChangeBuffer, designChange.addPartRelation))
65     }
66   }
67
68   def designChangeCoverModification(id: Long) = Action{ implicit request =>
69     designChangeRegistForm.bindFromRequest.fold(
70         formWithErrors => BadRequest(views.html.updateDesignChangeForm(formWithErrors, id, null, null)),
71         designChange => {
72           inTransaction {
73             val updDesignChange = getDesignChange(id)
74             updDesignChange.dcNo = designChange.dcNo
75             updDesignChange.dcDescription = designChange.dcDescription
76             PartsListDb.designChanges.update(updDesignChange)
77           }
78           Home.flashing("success" -> "Design Change %s has been created".format(designChange.dcNo))       
79         }
80     )
81   }
82   
83   def list(page: Int, key: String) = Action { implicit request =>
84     inTransaction {
85       val row = Integer.decode(Messages("list.row"))
86       val buff = PartsListDb.designChanges.where(dc => dc.dcNo like key + "%")
87       Ok(views.html.designchangelist(buff.page(page*row, row), buff.size, key, page))
88     }
89   }
90   
91   def designChangeCancel(id: Long) = Action { 
92            inTransaction {
93              val cancelDesignChange = getDesignChange(id)
94              PartsListDb.partRelations.deleteWhere(pr => pr.addDcId === cancelDesignChange.id)
95              PartsListDb.partRelations.update(pr =>
96                          where(pr.delDcId === cancelDesignChange.id)
97                          set(pr.delDcId := 0L))
98              Redirect(routes.DesignChangeController.designChangeCoverModify(id))
99            }
100   }
101   
102   def getDesignChange(id: Long):DesignChange = {
103     PartsListDb.designChanges.where(dc => dc.id === id).head
104   }
105 }