dev/actions feature: overtime #27
@@ -9,6 +9,7 @@ import (
|
|||||||
type AbsenceType struct {
|
type AbsenceType struct {
|
||||||
Id int8
|
Id int8
|
||||||
Name string
|
Name string
|
||||||
|
WorkTime float32
|
||||||
}
|
}
|
||||||
|
|
||||||
type Absence struct {
|
type Absence struct {
|
||||||
@@ -23,7 +24,7 @@ func NewAbsence(card_uid string, abwesenheit_typ int, datum time.Time) (Absence,
|
|||||||
if abwesenheit_typ < 0 {
|
if abwesenheit_typ < 0 {
|
||||||
return Absence{
|
return Absence{
|
||||||
CardUID: card_uid,
|
CardUID: card_uid,
|
||||||
AbwesenheitTyp: AbsenceType{0, "Custom absence"},
|
AbwesenheitTyp: AbsenceType{0, "Custom absence", 100},
|
||||||
Datum: datum,
|
Datum: datum,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
@@ -44,6 +45,7 @@ func (a *Absence) Insert() error {
|
|||||||
log.Println("Error preparing sql Statement", err)
|
log.Println("Error preparing sql Statement", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer qStr.Close()
|
||||||
err = qStr.QueryRow(a.CardUID, a.AbwesenheitTyp.Id, a.Datum).Scan(&a.CounterId)
|
err = qStr.QueryRow(a.CardUID, a.AbwesenheitTyp.Id, a.Datum).Scan(&a.CounterId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error executing insert statement", err)
|
log.Println("Error executing insert statement", err)
|
||||||
@@ -52,13 +54,53 @@ func (a *Absence) Insert() error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// func (a *Absence) GetStringType() string {
|
func GetAbsenceById(counterId int) (Absence, error) {
|
||||||
// return AbsenceTypesLabel[a.AbwesenheitTyp]
|
var absence Absence = Absence{CounterId: counterId}
|
||||||
// }
|
qStr, err := DB.Prepare("SELECT card_uid, abwesenheit_typ, datum FROM abwesenheit WHERE counter_id = $1;")
|
||||||
|
if err != nil {
|
||||||
|
return absence, err
|
||||||
|
}
|
||||||
|
defer qStr.Close()
|
||||||
|
err = qStr.QueryRow(counterId).Scan(&absence.CardUID, &absence.AbwesenheitTyp.Id, &absence.Datum)
|
||||||
|
if err != nil {
|
||||||
|
return absence, err
|
||||||
|
}
|
||||||
|
return absence, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetAbsenceByCardUID(card_uid string, tsFrom time.Time, tsTo time.Time) ([]Absence, error) {
|
||||||
|
var absences []Absence
|
||||||
|
qStr, err := DB.Prepare("SELECT counter_id, abwesenheit_typ, datum FROM abwesenheit WHERE card_uid = $1 AND datum BETWEEN $2::DATE AND $3::DATE ORDER BY datum;")
|
||||||
|
if err != nil {
|
||||||
|
return absences, err
|
||||||
|
}
|
||||||
|
defer qStr.Close()
|
||||||
|
rows, err := qStr.Query(card_uid, tsFrom, tsTo)
|
||||||
|
if err != nil {
|
||||||
|
return absences, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
for rows.Next() {
|
||||||
|
var absence Absence
|
||||||
|
if err := rows.Scan(&absence.CounterId, &absence.AbwesenheitTyp.Id, &absence.Datum); err != nil {
|
||||||
|
return absences, err
|
||||||
|
}
|
||||||
|
absence.AbwesenheitTyp, err = GetAbsenceTypeById(absence.AbwesenheitTyp.Id)
|
||||||
|
if err == nil {
|
||||||
|
absences = append(absences, absence)
|
||||||
|
} else {
|
||||||
|
log.Println("Cannot populate absence type!", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if err = rows.Err(); err != nil {
|
||||||
|
return absences, err
|
||||||
|
}
|
||||||
|
return absences, nil
|
||||||
|
}
|
||||||
|
|
||||||
func GetAbsenceTypes() (map[int8]AbsenceType, error) {
|
func GetAbsenceTypes() (map[int8]AbsenceType, error) {
|
||||||
var types = make(map[int8]AbsenceType)
|
var types = make(map[int8]AbsenceType)
|
||||||
qStr, err := DB.Prepare("SELECT abwesenheit_id, abwesenheit_name FROM s_abwesenheit_typen;")
|
qStr, err := DB.Prepare("SELECT abwesenheit_id, abwesenheit_name, arbeitszeit_equivalent FROM s_abwesenheit_typen;")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types, err
|
return types, err
|
||||||
}
|
}
|
||||||
@@ -71,7 +113,7 @@ func GetAbsenceTypes() (map[int8]AbsenceType, error) {
|
|||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var absenceType AbsenceType
|
var absenceType AbsenceType
|
||||||
if err := rows.Scan(&absenceType.Id, &absenceType.Name); err != nil {
|
if err := rows.Scan(&absenceType.Id, &absenceType.Name, &absenceType.WorkTime); err != nil {
|
||||||
log.Println("Error scanning absence row!", err)
|
log.Println("Error scanning absence row!", err)
|
||||||
}
|
}
|
||||||
types[absenceType.Id] = absenceType
|
types[absenceType.Id] = absenceType
|
||||||
@@ -86,3 +128,18 @@ func GetAbsenceTypesCached() map[int8]AbsenceType {
|
|||||||
}
|
}
|
||||||
return types.(map[int8]AbsenceType)
|
return types.(map[int8]AbsenceType)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetAbsenceTypeById(absenceTypeId int8) (AbsenceType, error) {
|
||||||
|
var absenceType AbsenceType = AbsenceType{Id: absenceTypeId}
|
||||||
|
|
||||||
|
qStr, err := DB.Prepare("SELECT abwesenheit_name, arbeitszeit_equivalent FROM s_abwesenheit_typen WHERE abwesenheit_id = $1;")
|
||||||
|
if err != nil {
|
||||||
|
return absenceType, err
|
||||||
|
}
|
||||||
|
defer qStr.Close()
|
||||||
|
err = qStr.QueryRow(absenceTypeId).Scan(&absenceType.Name, &absenceType.WorkTime)
|
||||||
|
if err != nil {
|
||||||
|
return absenceType, err
|
||||||
|
}
|
||||||
|
return absenceType, nil
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user