DataHouse/controllers/sensors.go

111 lines
2.7 KiB
Go

package controllers
import (
"github.com/astaxie/beego"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/relay"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/sensor"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/temperature"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/teleinfo"
"git.kingpenguin.tk/chteufleur/datahouse.git/models/variables"
"strconv"
)
type SensorsController struct {
beego.Controller
}
func (c *SensorsController) Prepare() {
sess := c.GetSession(variables.SessionName)
if sess == nil {
c.Redirect(variables.LoginRouteNoRegex+variables.SensorsRoute, 302)
} else {
c.Data["IsAuthentificated"] = true
}
c.Data["IsSensor"] = true
c.Data["version"] = variables.Version
}
func (c *SensorsController) Get() {
sensors := sensor.GetAllSensor()
relays := relay.GetAllRelay()
compteurs := teleinfo.GetAllCompteur()
c.Data["sensors"] = sensors
c.Data["relays"] = relays
c.Data["compteurs"] = compteurs
c.TplName = "sensors.tpl"
}
func (c *SensorsController) Post() {
tpye := c.Input().Get("type")
if tpye == "tempSensor" {
c.PostTempSensors()
} else if tpye == "relay" {
c.PostRelay()
} else if tpye == "compteur" {
c.PostCompteur()
} else {
c.Redirect("/404", 404)
}
}
func (c *SensorsController) PostTempSensors() {
description := c.Input().Get("description")
mac := c.Input().Get("mac")
intervalStr := c.Input().Get("interval")
interval, err := strconv.ParseInt(intervalStr, 10, 0)
isDelete := c.Input().Get("delete")
isSave := c.Input().Get("save")
if isSave != "" && err == nil {
sensor.UpdateSensor(mac, description, interval)
c.Redirect("/sensors", 302)
} else if isDelete != "" {
s := sensor.GetSensorByMac(mac)
temperature.DeleteTemperatureBySenor(s.Id)
sensor.DeleteSensor(s.Id)
c.Redirect("/sensors", 302)
} else {
c.Redirect("/404", 404)
}
}
func (c *SensorsController) PostRelay() {
description := c.Input().Get("description")
mac := c.Input().Get("mac")
isDelete := c.Input().Get("delete")
isSave := c.Input().Get("save")
if isSave != "" {
relay.UpdateSensorDescription(mac, description)
c.Redirect("/sensors", 302)
} else if isDelete != "" {
s := relay.GetRelayByMac(mac)
relay.DeleteSensor(s.Id)
c.Redirect("/sensors", 302)
} else {
c.Redirect("/404", 404)
}
}
func (c *SensorsController) PostCompteur() {
description := c.Input().Get("description")
adresse := c.Input().Get("adresse")
isDelete := c.Input().Get("delete")
isSave := c.Input().Get("save")
if isSave != "" {
teleinfo.UpdateCompteur(adresse, description)
c.Redirect("/sensors", 302)
} else if isDelete != "" {
cpt := teleinfo.GetCompteurByAdresse(adresse)
teleinfo.DeleteCompteur(cpt.Id)
c.Redirect("/sensors", 302)
} else {
c.Redirect("/404", 404)
}
}