added control tables (s_*) + working on implementing absence and booking types
Some checks failed
arbeitszeitmessung/pipeline/head There was a failure building this commit
Some checks failed
arbeitszeitmessung/pipeline/head There was a failure building this commit
This commit is contained in:
@@ -1,52 +1,65 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
type AbsenceType struct {
|
||||
Value int8
|
||||
Label string
|
||||
Id int8
|
||||
Name string
|
||||
}
|
||||
|
||||
const (
|
||||
AbsenceNone int8 = iota
|
||||
AbsenceUrlaub
|
||||
AbsenceKurzarbeit
|
||||
AbsenceKrank
|
||||
AbsenceKindkrank
|
||||
)
|
||||
// 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 AbsenceTypes = []AbsenceType{
|
||||
// // {Value: AbsenceNone, Label: "Abwesenheit"},
|
||||
// {Id: AbsenceUrlaub, Name: "Urlaub"},
|
||||
// {Id: AbsenceKurzarbeit, Name: "Kurzarbeit"},
|
||||
// {Id: AbsenceKrank, Name: "Krank"},
|
||||
// {Id: AbsenceKindkrank, Name: "Kindkrank"},
|
||||
// }
|
||||
|
||||
var AbsenceTypesLabel = map[int8]string{
|
||||
0: "None",
|
||||
AbsenceUrlaub: "Urlaub",
|
||||
AbsenceKurzarbeit: "Kurzarbeit",
|
||||
AbsenceKrank: "Krank",
|
||||
AbsenceKindkrank: "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
|
||||
AbwesenheitTyp AbsenceType
|
||||
Datum time.Time
|
||||
// Comment string
|
||||
}
|
||||
|
||||
func NewAbsence(card_uid string, abwesenheit_typ int8, datum time.Time) Absence {
|
||||
func NewAbsence(card_uid string, abwesenheit_typ int, datum time.Time) (Absence, error) {
|
||||
if abwesenheit_typ < 0 {
|
||||
return Absence{
|
||||
CardUID: card_uid,
|
||||
AbwesenheitTyp: AbsenceType{0, "Custom absence"},
|
||||
Datum: datum,
|
||||
}, nil
|
||||
}
|
||||
_absenceType, ok := GetAbsenceTypesCached()[int8(abwesenheit_typ)]
|
||||
if !ok {
|
||||
return Absence{}, errors.New("Invalid absencetype")
|
||||
}
|
||||
return Absence{
|
||||
CardUID: card_uid,
|
||||
AbwesenheitTyp: abwesenheit_typ,
|
||||
AbwesenheitTyp: _absenceType,
|
||||
Datum: datum,
|
||||
}
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (a *Absence) Insert() error {
|
||||
@@ -63,6 +76,37 @@ func (a *Absence) Insert() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (a *Absence) GetStringType() string {
|
||||
return AbsenceTypesLabel[a.AbwesenheitTyp]
|
||||
// func (a *Absence) GetStringType() string {
|
||||
// return AbsenceTypesLabel[a.AbwesenheitTyp]
|
||||
// }
|
||||
|
||||
func GetAbsenceTypes() (map[int8]AbsenceType, error) {
|
||||
var types = make(map[int8]AbsenceType)
|
||||
qStr, err := DB.Prepare("SELECT abwesenheit_id, abwesenheit_name FROM s_abwesenheit_typen;")
|
||||
if err != nil {
|
||||
return types, err
|
||||
}
|
||||
defer qStr.Close()
|
||||
rows, err := qStr.Query()
|
||||
if err != nil {
|
||||
log.Println("Error getting abwesenheit rows!", err)
|
||||
return types, err
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var absenceType AbsenceType
|
||||
if err := rows.Scan(&absenceType.Id, &absenceType.Name); err != nil {
|
||||
log.Println("Error scanning absence row!", err)
|
||||
}
|
||||
types[absenceType.Id] = absenceType
|
||||
}
|
||||
return types, nil
|
||||
}
|
||||
|
||||
func GetAbsenceTypesCached() map[int8]AbsenceType {
|
||||
types, err := definedTypes.Get("s_abwesenheit_typen")
|
||||
if err != nil {
|
||||
return map[int8]AbsenceType{}
|
||||
}
|
||||
return types.(map[int8]AbsenceType)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user