@@ -7,12 +7,15 @@ package models
|
||||
|
||||
import (
|
||||
"arbeitszeitmessung/helper"
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"github.com/lib/pq"
|
||||
)
|
||||
|
||||
type WorkDay struct {
|
||||
@@ -425,3 +428,38 @@ func (d *WorkDay) GetDayProgress(u User) int8 {
|
||||
progress := (workTime.Seconds() / u.ArbeitszeitProTag().Seconds()) * 100
|
||||
return int8(progress)
|
||||
}
|
||||
|
||||
func (d *WorkDay) IsSubmittedAndAccepted() bool {
|
||||
var isKurzArbeitAccepted bool
|
||||
if d.IsKurzArbeit() {
|
||||
isKurzArbeitAccepted = d.kurzArbeitAbsence.IsSubmittedAndAccepted()
|
||||
}
|
||||
|
||||
if d.IsEmpty() {
|
||||
return isKurzArbeitAccepted
|
||||
}
|
||||
|
||||
qStr, err := DB.Prepare(`SELECT bestaetigt from wochen_report WHERE anwesenheiten @> $1 AND $2 >= woche_start AND $2 < woche_start + INTERVAL '1 week';`) // @> array contains
|
||||
if err != nil {
|
||||
slog.Warn("Error when preparing SQL Statement", "error", err)
|
||||
return false
|
||||
}
|
||||
|
||||
defer qStr.Close()
|
||||
var isSubmittedAndChecked bool = false
|
||||
|
||||
var bookingsIds []int
|
||||
for _, booking := range d.Bookings {
|
||||
bookingsIds = append(bookingsIds, booking.CounterId)
|
||||
}
|
||||
|
||||
err = qStr.QueryRow(pq.Array(bookingsIds), d.Date()).Scan(&isSubmittedAndChecked)
|
||||
if err == sql.ErrNoRows {
|
||||
return false
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
slog.Warn("Unexpected error when executing SQL Statement", "error", err, "BookingsIds", bookingsIds)
|
||||
}
|
||||
return isSubmittedAndChecked
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user