69 lines
1.5 KiB
Go
69 lines
1.5 KiB
Go
package models
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
)
|
|
|
|
type AbsenceType struct {
|
|
Value int8
|
|
Label string
|
|
}
|
|
|
|
const (
|
|
AbsenceNone int8 = iota
|
|
AbsenceUrlaub
|
|
AbsenceKurzarbeit
|
|
AbsenceKrank
|
|
AbsenceKindkrank
|
|
)
|
|
|
|
var AbsenceTypes = []AbsenceType{
|
|
// {Value: AbsenceNone, Label: "Abwesenheit"},
|
|
{Value: AbsenceUrlaub, Label: "Urlaub"},
|
|
{Value: AbsenceKurzarbeit, Label: "Kurzarbeit"},
|
|
{Value: AbsenceKrank, Label: "Krank"},
|
|
{Value: AbsenceKindkrank, Label: "Kindkrank"},
|
|
}
|
|
|
|
var AbsenceTypesLabel = map[int8]string{
|
|
0: "None",
|
|
AbsenceUrlaub: "Urlaub",
|
|
AbsenceKurzarbeit: "Kurzarbeit",
|
|
AbsenceKrank: "Krank",
|
|
AbsenceKindkrank: "Kindkrank",
|
|
}
|
|
|
|
type Absence struct {
|
|
CounterId int
|
|
CardUID string
|
|
AbwesenheitTyp int8
|
|
Datum time.Time
|
|
}
|
|
|
|
func NewAbsence(card_uid string, abwesenheit_typ int8, datum time.Time) Absence {
|
|
return Absence{
|
|
CardUID: card_uid,
|
|
AbwesenheitTyp: abwesenheit_typ,
|
|
Datum: datum,
|
|
}
|
|
}
|
|
|
|
func (a *Absence) Insert() error {
|
|
qStr, err := DB.Prepare(`INSERT INTO abwesenheit (card_uid, abwesenheit_typ, datum) VALUES ($1, $2, $3) RETURNING counter_id;`)
|
|
if err != nil {
|
|
log.Println("Error preparing sql Statement", err)
|
|
return err
|
|
}
|
|
err = qStr.QueryRow(a.CardUID, a.AbwesenheitTyp, a.Datum).Scan(&a.CounterId)
|
|
if err != nil {
|
|
log.Println("Error executing insert statement", err)
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (a *Absence) GetStringType() string {
|
|
return AbsenceTypesLabel[a.AbwesenheitTyp]
|
|
}
|