src/main/scala/fis/crm/ui/CompanySnippet.scala
changeset 99 49eb72a46208
parent 91 494b3b9db463
--- a/src/main/scala/fis/crm/ui/CompanySnippet.scala	Wed May 09 22:53:03 2012 +0200
+++ b/src/main/scala/fis/crm/ui/CompanySnippet.scala	Thu May 24 11:19:26 2012 +0200
@@ -23,6 +23,8 @@
 import fis.geo.model._
 import fis.pm.model.CompanyProjects
 import fis.pm.ui.ProjectTable
+import fis.sr.model.{CompanyServices, Service}
+import fis.sr.ui.{ServiceForm, ServiceSnippet, ServiceTable}
 import net.liftweb.common._
 import net.liftweb.http._
 import net.liftweb.http.js.JsCmds.RedirectTo
@@ -48,7 +50,7 @@
   private val viewPre = Menu.param[Company]("company.view", l10n("Company"), parse,
     encode) / prefix / * >> Title(c => i18n("Company %s", c.linkName)) >>
     locTpl("company/view") >> Snippet("panel", panel) >>
-    Snippet("contacts", contacts.contacts) >>
+    Snippet("services", services) >> Snippet("contacts", contacts.contacts) >>
     Snippet("projects", projects) >> Hidden
 
   private val editPre = Menu.param[Company]("company.edit", l10n("Edit"), parse,
@@ -61,18 +63,25 @@
     Title(c => i18n("Delete company %s", c.linkName)) >> IfLoggedIn.testVal >>
     locTpl("entity/delete") >> Snippet("form", deleteF) >> Hidden
 
+  private val createServicePre = Menu.param[Company]("company.create-service",
+    l10n("Create service"), parse, encode) / prefix / * / "create-service" >>
+    Title(c => i18n("Create service for company %s", c.linkName)) >>
+    IfLoggedIn.testVal >>
+    locTpl("entity/form") >> Snippet("form", createServiceForm) >> Hidden
+
   private val listM = listPre >> SecNav(createPre).build
   private val createM = createPre >> SecNav(listPre).build
   private val viewM = viewPre >>
-    (SecNav(editPre) + deletePre + contacts.chooseM).build
+    (SecNav(editPre) + deletePre + createServicePre + contacts.chooseM).build
   private val editM = editPre >> SecNav(viewPre).build
   private val deleteM = deletePre >> SecNav(viewPre).build
+  private val createServiceM = createServicePre >> SecNav(viewPre).build
 
   private lazy val viewLoc = viewM.toLoc
   private lazy val editLoc = editM.toLoc
   private lazy val deleteLoc = deleteM.toLoc
 
-  val menu = listM submenus(viewM, editM, createM, deleteM,
+  val menu = listM submenus(viewM, editM, createM, deleteM, createServiceM,
     contacts.chooseM, contacts.confirmM)
 
   private def cur = viewLoc.currentValue or editLoc.currentValue or
@@ -85,6 +94,9 @@
   private def projects: CssTr = "*" #> cur.map { c =>
     ProjectTable(CompanyProjects(c)) }
 
+  private def services: CssTr = "*" #> cur.map { c =>
+    ServiceTable(CompanyServices(c)) }
+
   object url {
     def view: Company => Box[String] = (viewLoc.calcHref _) andThen (Box !! _)
   }
@@ -248,6 +260,16 @@
     }
   }
 
+  private object createServiceForm extends ServiceForm {
+    override def localSetup() {
+      createServiceM.currentValue.foreach { c => service.company(c.id) }
+    }
+
+    protected def onSuccess(s: Service) {
+      ServiceSnippet.url.view(s).foreach { u => S redirectTo u }
+    }
+  }
+
 }
 
 // vim: set ts=2 sw=2 et: