added userLogout fixes #15, #10

This commit is contained in:
2025-05-01 19:42:33 +02:00
parent 35ec575a05
commit 9a88397bb2
11 changed files with 151 additions and 89 deletions

View File

@@ -47,8 +47,9 @@ func (b *Booking) FromUrlParams(params url.Values) Booking {
return booking
}
func (b Booking) Verify() bool {
if b.CardUID == "" || b.GeraetID == 0 || b.CheckInOut == 0 {
func (b *Booking) Verify() bool {
//check for overlapping time + arbeitszeit verstoß
if b.CardUID == "" { //|| b.GeraetID == 0 || b.CheckInOut == 0 {
return false
}
return true
@@ -71,7 +72,7 @@ func (b *Booking) Insert() error {
func (b *Booking) InsertTimestamp() error {
if b.Timestamp.IsZero() {
b.Timestamp = time.Now()
return b.Insert()
}
stmt, err := DB.Prepare((`INSERT INTO anwesenheit (card_uid, geraet_id, check_in_out, timestamp) VALUES ($1, $2, $3, $4) RETURNING counter_id`))
if err != nil {
@@ -251,7 +252,9 @@ func (b *Booking) UpdateTime(newTime time.Time) {
if b.CheckInOut == 254 {
newBooking.CheckInOut = 4
}
log.Println("Updating")
b.Update(newBooking)
b.Verify()
b.Save()
}

View File

@@ -13,11 +13,11 @@ import (
)
type User struct {
CardUID string `json:"card_uid"`
Name string `json:"name"`
Vorname string `json:"vorname"`
PersonalNummer int `json:"personal_nummer"`
Arbeitszeit float32 `json:"arbeitszeit"`
CardUID string `json:"card_uid"`
Name string `json:"name"`
Vorname string `json:"vorname"`
PersonalNummer int `json:"personal_nummer"`
ArbeitszeitPerTag float32 `json:"arbeitszeit"`
}
func (u *User) GetUserFromSession(Session *scs.SessionManager, ctx context.Context) (User, error) {
@@ -83,7 +83,7 @@ func (u *User) CheckAnwesenheit() bool {
}
// Creates a new booking for the user -> check_in_out will be 254 for automatic check out
func (u *User) Logout() error {
func (u *User) CheckOut() error {
booking := (*Booking).New(nil, u.CardUID, 0, 254)
err := booking.Insert()
if err != nil {
@@ -100,7 +100,7 @@ func (u *User) GetByPersonalNummer(personalNummer int) (User, error) {
if err != nil {
return user, err
}
err = qStr.QueryRow(personalNummer).Scan(&user.PersonalNummer, &user.CardUID, &user.Vorname, &user.Name, &user.Arbeitszeit)
err = qStr.QueryRow(personalNummer).Scan(&user.PersonalNummer, &user.CardUID, &user.Vorname, &user.Name, &user.ArbeitszeitPerTag)
if err != nil {
return user, err
@@ -196,7 +196,7 @@ func (u *User) GetNextWeek() WorkWeek {
func parseUser(rows *sql.Rows) (User, error) {
var user User
if err := rows.Scan(&user.PersonalNummer, &user.CardUID, &user.Vorname, &user.Name, &user.Arbeitszeit); err != nil {
if err := rows.Scan(&user.PersonalNummer, &user.CardUID, &user.Vorname, &user.Name, &user.ArbeitszeitPerTag); err != nil {
log.Println("Error scanning row!", err)
return user, err
}
@@ -228,6 +228,22 @@ func (u *User) GetLastSubmission() time.Time {
return lastSub
}
func (u *User) GetFromCardUID(card_uid string) (User, error) {
user := User{}
var err error
qStr, err := DB.Prepare((`SELECT personal_nummer, card_uid, vorname, nachname, arbeitszeit_per_tag FROM personal_daten WHERE card_uid = $1;`))
if err != nil {
return user, err
}
err = qStr.QueryRow(card_uid).Scan(&user.PersonalNummer, &user.CardUID, &user.Vorname, &user.Name, &user.ArbeitszeitPerTag)
if err != nil {
return user, err
}
return user, nil
}
func getMonday(ts time.Time) time.Time {
if ts.Weekday() != time.Monday {
if ts.Weekday() == time.Sunday {

View File

@@ -184,7 +184,7 @@ func (d *WorkDay) RequiresAction() bool {
// returns a integer percentage of how much day has been worked of
func (d *WorkDay) GetWorkDayProgress(user User) uint8 {
defaultWorkTime := time.Duration(user.Arbeitszeit * float32(time.Hour))
defaultWorkTime := time.Duration(user.ArbeitszeitPerTag * float32(time.Hour))
progress := (d.workTime.Seconds() / defaultWorkTime.Seconds()) * 100
return uint8(progress)
}