7 import play.api.data.Forms._
13 import org.squeryl.PrimitiveTypeMode._
14 import scala.collection.mutable.ArrayBuffer
16 object PartsMasterController extends Controller{
18 val Home = Redirect(routes.PartsMasterController.list(0,""))
20 val partRegistForm = Form(
22 "name" -> nonEmptyText,
25 )(AtachForm.apply)(AtachForm.unapply),
26 "projectName" -> nonEmptyText
27 )(PartForm.apply)(PartForm.unapply)
30 def create = Action { implicit request =>
31 Ok(views.html.createPartForm(partRegistForm))
34 def partRegistration() = Action(parse.multipartFormData) { implicit request =>
35 partRegistForm.bindFromRequest.fold(
36 formWithErrors => BadRequest(views.html.createPartForm(formWithErrors)),
37 // formWithErrors => BadRequest(views.html.error(formWithErrors)),
40 val project = getProject(part.projectName)
41 val newPart = PartsListDb.parts.insert(Part(part.name, part.atach, project.id))
42 val uploadAtach = UploadAtach()
43 request.body.file("atach").map { atach =>
44 uploadAtach.uploadAtach(atach, newPart.atach.grpName, newPart.id, 0, 0)
46 Home.flashing("success" -> "Part %s has been created".format(part.name))
52 def update(id:Long) = Action { implicit request =>
54 val part = getPart(id)
55 val partForm = PartForm(part.name, null, part.project.assign(part.project.head).name)
56 Ok(views.html.updatePartForm(partRegistForm.fill(partForm), id, part))
60 def partModification(id:Long) = Action(parse.multipartFormData) { implicit request =>
61 partRegistForm.bindFromRequest.fold(
62 formWithErrors => BadRequest(views.html.updatePartForm(formWithErrors, id , null)),
65 val project = getProject(part.projectName)
66 val updPart = getPart(id)
67 val uploadAtach = UploadAtach()
68 updPart.name = part.name
69 updPart.projectId = project.id
70 PartsListDb.parts.update(updPart)
71 request.body.file("atach").map { atach =>
72 uploadAtach.uploadAtach(atach, part.atach.grpName, updPart.id, 0, 0)
74 Home.flashing("success" -> "Part %s has been created".format(part.name))
80 def partDelete(id:Long) = Action {
82 PartsListDb.parts.deleteWhere(p => p.id === id)
83 Home.flashing("success" -> "Part %s has been created".format(id))
87 def list(page:Int, key:String) = Action { implicit request =>
89 val row = Integer.decode(Messages("list.row"))
90 val buff = PartsListDb.parts.where(p => p.name like key + "%")
91 Ok(views.html.partsmastershow(buff.page(page*row, row), buff.size, key, page))
95 def getPart(id:Long):Part = {
96 PartsListDb.parts.where(p => p.id === id).head
99 def getProject(name:String):Project = {
100 PartsListDb.projects.where(p => p.name === name).head