diff --git a/app/controllers/DashboardController.scala b/app/controllers/DashboardController.scala new file mode 100644 index 0000000..f5fd195 --- /dev/null +++ b/app/controllers/DashboardController.scala @@ -0,0 +1,17 @@ +package controllers + +import scala.collection.JavaConverters._ +import dbi.DBIHolder +import javax.inject._ +import play.api.mvc._ + +@Singleton +class DashboardController @Inject()(cc: ControllerComponents, dbiHolder: DBIHolder) extends AbstractController(cc) { + + def index: Action[AnyContent] = Action { + val dbi = dbiHolder.dbi + val count = dbi.getACSUnit.getUnitCount(dbi.getAcs.getUnittypes.getUnittypes.toList.asJava) + Ok(views.html.dashboard(count)) + } + +} diff --git a/app/controllers/UnitTypeController.scala b/app/controllers/UnitTypeController.scala new file mode 100644 index 0000000..5bc53af --- /dev/null +++ b/app/controllers/UnitTypeController.scala @@ -0,0 +1,34 @@ +package controllers + +import dbi.{DBIHolder, Unittype} +import javax.inject.{Inject, Singleton} +import play.api.i18n.I18nSupport +import play.api.mvc.{AbstractController, Action, AnyContent, ControllerComponents} + +@Singleton +class UnitTypeController @Inject()(cc: ControllerComponents, dbiHolder: DBIHolder) extends AbstractController(cc) with I18nSupport { + import UnitTypeForm._ + + def viewCreate: Action[AnyContent] = Action { implicit request => + Ok(views.html.unitTypeCreate(form)) + } + + def postCreate: Action[AnyContent] = Action { implicit request => + form.bindFromRequest.fold( + formWithErrors => { + BadRequest(views.html.unitTypeCreate(formWithErrors)) + }, + formData => { + val newUnitType = new Unittype(formData.name, "", formData.description, formData.protocol) + dbiHolder.dbi.getAcs.getUnittypes.addOrChangeUnittype(newUnitType, dbiHolder.dbi.getAcs) + Redirect(routes.UnitTypeController.viewCreate()).flashing( + "success" -> s"The Unit Type ${newUnitType.getName} was created" + ) + } + ) + } + + def overview: Action[AnyContent] = Action { + Ok(views.html.unitTypeOverview(dbiHolder.dbi.getAcs.getUnittypes.getUnittypes.toList)) + } +} diff --git a/app/controllers/UnitTypeForm.scala b/app/controllers/UnitTypeForm.scala new file mode 100644 index 0000000..e97c5be --- /dev/null +++ b/app/controllers/UnitTypeForm.scala @@ -0,0 +1,37 @@ +package controllers + +import dbi.Unittype.ProvisioningProtocol +import play.api.data.{FormError, Forms} +import play.api.data.format.Formatter + +object UnitTypeForm { + import play.api.data.Forms._ + import play.api.data.Form + + case class UnitType( + id: Option[Long] = None, + name: String, + vendor: String, + description: String, + protocol: ProvisioningProtocol + ) + + implicit def provisioningProtocolFormat: Formatter[ProvisioningProtocol] = new Formatter[ProvisioningProtocol] { + override def bind(key: String, data: Map[String, String]): Either[Seq[FormError], ProvisioningProtocol] = + data.get(key) + .map(ProvisioningProtocol.valueOf) + .toRight(Seq(FormError(key, "error.required", Nil))) + override def unbind(key: String, value: ProvisioningProtocol): Map[String, String] = + Map(key -> value.toString) + } + + val form = Form( + mapping( + "id" -> optional(longNumber), + "vendor" -> text, + "name" -> nonEmptyText, + "description" -> text, + "protocol" -> Forms.of[ProvisioningProtocol] + )(UnitType.apply)(UnitType.unapply) + ) +} diff --git a/app/controllers/WebController.scala b/app/controllers/WebController.scala deleted file mode 100644 index 7806d24..0000000 --- a/app/controllers/WebController.scala +++ /dev/null @@ -1,17 +0,0 @@ -package controllers - -import scala.collection.JavaConverters._ -import dbi.DBIHolder -import javax.inject._ -import play.api.mvc._ - -@Singleton -class WebController @Inject()(cc: ControllerComponents, dbiHolder: DBIHolder) extends AbstractController(cc) { - - def index: Action[AnyContent] = Action { - val dbi = dbiHolder.dbi - val count = dbi.getACSUnit.getUnitCount(dbi.getAcs.getUnittypes.getUnittypes.toList.asJava) - Ok(views.html.dashboard(count)) - } - -} diff --git a/app/views/PageEnumeration.scala b/app/views/PageEnumeration.scala index 201185d..513c0d6 100644 --- a/app/views/PageEnumeration.scala +++ b/app/views/PageEnumeration.scala @@ -1,17 +1,16 @@ package views -import controllers.routes.WebController.index import play.api.mvc.Call sealed abstract class PageEnumeration(val name: String, val url: Call, val fontAwesome: String) -case object Dashboard extends PageEnumeration("Dashboard", index(), "fa fa-dashboard") -case object UnitTypeOverview extends PageEnumeration("UnitType Overview", index(), "fa fa-desktop") -case object CreateUnitType extends PageEnumeration("Create UnitType", index(), "fa fa-desktop") -case object ProfileOverview extends PageEnumeration("Profile Overview", index(), "fa fa-desktop") -case object CreateProfile extends PageEnumeration("Create Profile", index(), "fa fa-desktop") -case object UnitSearch extends PageEnumeration("Unit Search", index(), "fa fa-desktop") -case object CreateUnit extends PageEnumeration ("Create Unit", index(), "fa fa-desktop") -case object GroupOverview extends PageEnumeration("Group Overview", index(), "fa fa-desktop") -case object CreateGroup extends PageEnumeration("Create Group", index(), "fa fa-desktop") -case object JobOverview extends PageEnumeration("Job Overview", index(), "fa fa-desktop") -case object CreateJob extends PageEnumeration("Create Job", index(), "fa fa-desktop") +case object Dashboard extends PageEnumeration("Dashboard", controllers.routes.DashboardController.index(), "fa fa-dashboard") +case object UnitTypeOverview extends PageEnumeration("Unit Type Overview", controllers.routes.UnitTypeController.overview(), "fa fa-desktop") +case object CreateUnitType extends PageEnumeration("Create Unit Type", controllers.routes.UnitTypeController.viewCreate(), "fa fa-desktop") +case object ProfileOverview extends PageEnumeration("Profile Overview", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object CreateProfile extends PageEnumeration("Create Profile", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object UnitSearch extends PageEnumeration("Unit Search", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object CreateUnit extends PageEnumeration ("Create Unit", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object GroupOverview extends PageEnumeration("Group Overview", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object CreateGroup extends PageEnumeration("Create Group", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object JobOverview extends PageEnumeration("Job Overview", controllers.routes.DashboardController.index(), "fa fa-desktop") +case object CreateJob extends PageEnumeration("Create Job", controllers.routes.DashboardController.index(), "fa fa-desktop") diff --git a/app/views/dashboard.scala.html b/app/views/dashboard.scala.html index 6a1c321..ed9f3db 100644 --- a/app/views/dashboard.scala.html +++ b/app/views/dashboard.scala.html @@ -4,27 +4,67 @@ @main("Dashboard", Dashboard) {