6 import play.api.data.Forms._
7 import controllers.services._
8 import models.services._
12 import org.squeryl.PrimitiveTypeMode._
13 import org.squeryl.annotations.Column
14 import scala.collection.mutable.ArrayBuffer
15 import models.PartRelation
17 object DesignChangeController extends Controller{
18 val Home = Redirect(routes.DesignChangeController.list(0,""))
19 val Home2 = Redirect(routes.PartsListController.index(0,0,""))
21 val designChangeRegistForm = Form(
23 "dcNo" -> nonEmptyText,
24 "dcDescription" -> nonEmptyText
25 )(DesignChangeForm.apply)(DesignChangeForm.unapply)
28 val designChangeRelationRegistForm = Form(
30 "partsListBeanBefore" -> mapping(
33 "quantity" -> longNumber
34 )(PartsListBean.apply)(PartsListBean.unapply),
35 "partsListBeanAfter" -> mapping(
36 "parent" -> nonEmptyText,
38 "quantity" -> longNumber
39 )(PartsListBean.apply)(PartsListBean.unapply),
40 "dcno" -> nonEmptyText
41 )(DesignChangeRelationForm.apply)(DesignChangeRelationForm.unapply)
45 def create = Action { implicit request =>
46 Ok(views.html.createDesignChangeForm(designChangeRegistForm))
49 def designChangeCoverRegistration() = Action { implicit request =>
50 designChangeRegistForm.bindFromRequest.fold(
51 formWithErrors => BadRequest(views.html.createDesignChangeForm(formWithErrors)),
54 DesignChangeManager().insert(designChange)
56 Home.flashing("success" -> "Design Change %s has been created".format(designChange.dcNo))
61 def designChangeCoverModify(designChangeId: Long, dcSeq: Long, message: String) = Action { implicit request =>
63 var partBuffer = ArrayBuffer[PartsListBean]()
64 val designChange = DesignChangeManager().getById(designChangeId)
65 val designChangeForm = DesignChangeForm(designChange.dcNo, designChange.dcDescription)
66 val designChangeBuffer = DesignChangeManager().getDesinChangeInformation(designChange)
68 val delRelation = designChange.delPartRelation.where(pr => pr.dcSeq === dcSeq).head
69 for(returnPartBuffer <- PartRecursion().up(delRelation.child.head, 1)) {
70 partBuffer += returnPartBuffer
73 Ok(views.html.updateDesignChangeForm(designChangeRegistForm.fill(designChangeForm), designChangeId, designChangeBuffer, designChange.addPartRelation, partBuffer, dcSeq, message))
77 def designChangeCoverModification(id: Long) = Action{ implicit request =>
78 designChangeRegistForm.bindFromRequest.fold(
79 formWithErrors => BadRequest(views.html.updateDesignChangeForm(formWithErrors, id, null, null, null, 0, null)),
82 DesignChangeManager().update(id, designChange)
84 Home.flashing("success" -> "Design Change %s has been created".format(designChange.dcNo))
89 def list(page: Int, key: String) = Action { implicit request =>
91 val row = Integer.decode(Messages("list.row"))
92 val buff = DesignChangeManager().list(key)
93 Ok(views.html.designchangelist(buff.page(page*row, row), buff.size, key, page))
97 def designChangeCancel(id: Long) = Action {
99 DesignChangeManager().designChangeCancel(id)
100 Redirect(routes.DesignChangeController.designChangeCoverModify(id, 0, ""))
104 def designChangeCancelByLine(designChangeId: Long, delParentName: String, delChildName: String, addParentName: String, addChildName: String) = Action {
106 val designChange = DesignChangeManager().getById(designChangeId)
107 if(!delParentName.isEmpty()) {
108 val delParent = PartManager().getByName(delParentName)
109 val delChild = PartManager().getByName(delChildName)
110 val cancelDelRelation = designChange.delPartRelation.where(pr => pr.parentId === delParent.id and pr.childId === delChild.id).head
111 DesignChangeManager().designChangeDelCancelBySeq(designChangeId, cancelDelRelation.dcSeq)
113 if(!addParentName.isEmpty()) {
114 val addParent = PartManager().getByName(addParentName)
115 val addChild = PartManager().getByName(addChildName)
116 val cancelAddRelation = designChange.addPartRelation.where(pr => pr.parentId === addParent.id and pr.childId === addChild.id).head
117 DesignChangeManager().designChangeAddCancelBySeq(designChangeId, cancelAddRelation.dcSeq)
120 Redirect(routes.DesignChangeController.designChangeCoverModify(designChangeId, 0, ""))
123 def designChangeForm(parentName:String, childName:String) = Action { implicit request =>
125 var designChangeRelationForm = DesignChangeRelationForm(null, null, "")
126 // 設計変更追加の場合、変更前の上位品番はセットしない。
127 if(childName.isEmpty()) {
128 designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean("", childName), generatePartsListBean(parentName, childName), "")
130 designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean(parentName, childName), generatePartsListBean(parentName, childName), "")
132 Ok(views.html.designChangeRelationForm(designChangeRelationRegistForm.fill(designChangeRelationForm), ""))
136 def designChange() = Action { implicit request =>
137 designChangeRelationRegistForm.bindFromRequest.fold(
138 formWithErrors => BadRequest(views.html.designChangeRelationForm(formWithErrors, "")),
141 val message= DesignChangeManager().designChange(data)
142 if(message == null) {
143 Home2.flashing("success" -> "Relation %s has been changed".format(data.partsListBeanBefore.parent + "/" + data.partsListBeanBefore.child))
145 Ok(views.html.designChangeRelationForm(designChangeRelationRegistForm.fill(data), message))
152 def designChangeAppend(designChangeId: Long, dcSeq: Long, targetParentName: String) = Action {
154 val designChange = DesignChangeManager().getById(designChangeId)
155 val delRelation =designChange.delPartRelation.where(pr => pr.dcSeq === dcSeq).head
156 val addRelation =designChange.addPartRelation.where(pr => pr.dcSeq === dcSeq).head
157 val delPart = delRelation.child.head
158 val addPart = addRelation.child.head
159 val ParentPart = PartManager().getByName(targetParentName)
160 val delPartsListBean = PartsListBean(ParentPart.name, delPart.name, delRelation.quantity)
161 val addPartsListBean = PartsListBean(ParentPart.name, addPart.name, addRelation.quantity)
162 val data = DesignChangeRelationForm(delPartsListBean, addPartsListBean, designChange.dcNo)
163 val message = DesignChangeManager().designChange(data)
164 if(message == null) {
165 Redirect(routes.DesignChangeController.designChangeCoverModify(designChangeId, dcSeq, ""))
167 Redirect(routes.DesignChangeController.designChangeCoverModify(designChangeId, dcSeq, message))
172 def designChangeRealtionModify(designChangeId: Long, dcDelSeq: Long, dcAddSeq: Long) = Action { implicit request =>
174 var targetDelRelation = PartRelation(0, 0, 0, 0, 0, 0)
175 var targetAddRelation = PartRelation(0, 0, 0, 0, 0, 0)
180 val designChange = DesignChangeManager().getById(designChangeId)
182 targetDelRelation = designChange.delPartRelation.where(pr => pr.dcSeq === dcDelSeq).head
183 delParentNo = targetDelRelation.parent.head.name
184 delChildNo = targetDelRelation.child.head.name
187 targetAddRelation = designChange.addPartRelation.where(pr => pr.dcSeq === dcAddSeq).head
188 addParentNo = targetAddRelation.parent.head.name
189 addChildNo = targetAddRelation.child.head.name
190 } else if(dcDelSeq != 0) {
191 targetDelRelation = designChange.delPartRelation.where(pr => pr.dcSeq === dcDelSeq).head
192 addParentNo = targetDelRelation.parent.head.name
194 val designChangeRelationForm = DesignChangeRelationForm(generatePartsListBean(delParentNo, delChildNo), generatePartsListBean(addParentNo, addChildNo), designChange.dcNo)
195 Ok(views.html.updateDesignChangeRelationForm(designChangeRelationRegistForm.fill(designChangeRelationForm), designChangeId, addChildNo, ""))
199 def designChangeRelationModification(partName: String) = Action { implicit request =>
200 designChangeRelationRegistForm.bindFromRequest.fold(
201 formWithErrors => BadRequest(views.html.updateDesignChangeRelationForm(formWithErrors, 0, "", "")),
202 designChangeRelation => {
204 val designChange = DesignChangeManager().getByName(designChangeRelation.dcno)
205 val message = DesignChangeManager().designChangeUpdate(designChangeRelation, partName)
206 if(message == null) {
207 Redirect(routes.DesignChangeController.designChangeCoverModify(designChange.id, 0, ""))
209 Ok(views.html.updateDesignChangeRelationForm(designChangeRelationRegistForm.fill(designChangeRelation), designChange.id, partName, message)) }
216 def generatePartsListBean(parentNo:String, childNo:String):PartsListBean = {
217 if(childNo.isEmpty()) {
218 PartsListBean(parentNo, childNo, 0)
220 PartsListBean(parentNo, childNo, PartManager().getByName(parentNo).partRelation(PartManager().getByName(childNo).id).quantity)