small fixes and refactoring
This commit is contained in:
@@ -10,7 +10,7 @@ import (
|
|||||||
func OpenDatabase() (*sql.DB, error) {
|
func OpenDatabase() (*sql.DB, error) {
|
||||||
dbHost := helper.GetEnv("POSTGRES_HOST", "localhost")
|
dbHost := helper.GetEnv("POSTGRES_HOST", "localhost")
|
||||||
dbName := helper.GetEnv("POSTGRES_DB", "arbeitszeitmessung")
|
dbName := helper.GetEnv("POSTGRES_DB", "arbeitszeitmessung")
|
||||||
dbUser := helper.GetEnv("POSTGRES_API_USER", "arbeit_zeit")
|
dbUser := helper.GetEnv("POSTGRES_API_USER", "api_nutzer")
|
||||||
dbPassword := helper.GetEnv("POSTGRES_API_PASS", "password")
|
dbPassword := helper.GetEnv("POSTGRES_API_PASS", "password")
|
||||||
|
|
||||||
connStr := fmt.Sprintf("postgres://%s:%s@%s:5432/%s?sslmode=disable&TimeZone=Europe/Berlin", dbUser, dbPassword, dbHost, dbName)
|
connStr := fmt.Sprintf("postgres://%s:%s@%s:5432/%s?sslmode=disable&TimeZone=Europe/Berlin", dbUser, dbPassword, dbHost, dbName)
|
||||||
|
|||||||
@@ -29,9 +29,10 @@ func autoLogout(w http.ResponseWriter) {
|
|||||||
err = user.Logout()
|
err = user.Logout()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error logging out user %v\n", err)
|
fmt.Printf("Error logging out user %v\n", err)
|
||||||
}
|
}else {
|
||||||
logged_out_users = append(logged_out_users, user)
|
logged_out_users = append(logged_out_users, user)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ func updateBooking(w http.ResponseWriter, r *http.Request) {
|
|||||||
log.Println("Error getting booking!", err)
|
log.Println("Error getting booking!", err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
parsedTime, err := time.ParseInLocation("15:04", possibleBooking[0], time.Local)
|
parsedTime, err := time.ParseInLocation("15:04", possibleBooking[0], booking.Timestamp.Location())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("Error parsing time!", err)
|
log.Println("Error parsing time!", err)
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -69,6 +69,5 @@ func checkPassword(r *http.Request) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.Println(authHeaders)
|
|
||||||
return authToken == authHeaders[_authStart:]
|
return authToken == authHeaders[_authStart:]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ func LoginHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func UserHandler(w http.ResponseWriter, r *http.Request) {
|
func UserSettingsHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
helper.RequiresLogin(Session, w, r)
|
helper.RequiresLogin(Session, w, r)
|
||||||
switch r.Method {
|
switch r.Method {
|
||||||
case http.MethodGet:
|
case http.MethodGet:
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/joho/godotenv"
|
"github.com/joho/godotenv"
|
||||||
@@ -21,6 +22,16 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println("No .env file found in directory!")
|
log.Println("No .env file found in directory!")
|
||||||
}
|
}
|
||||||
|
if(helper.GetEnv("GO_ENV", "production") == "debug") {
|
||||||
|
log.Println("Debug mode enabled")
|
||||||
|
log.Println("Environment Variables")
|
||||||
|
envs := os.Environ()
|
||||||
|
for _, e := range envs {
|
||||||
|
fmt.Println(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
models.DB, err = OpenDatabase()
|
models.DB, err = OpenDatabase()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -38,7 +49,7 @@ func main() {
|
|||||||
server.Handle("/time", ParamsMiddleware(endpoints.TimeHandler))
|
server.Handle("/time", ParamsMiddleware(endpoints.TimeHandler))
|
||||||
server.HandleFunc("/logout", endpoints.LogoutHandler)
|
server.HandleFunc("/logout", endpoints.LogoutHandler)
|
||||||
server.HandleFunc("/user/login", endpoints.LoginHandler)
|
server.HandleFunc("/user/login", endpoints.LoginHandler)
|
||||||
server.HandleFunc("/user", endpoints.UserHandler)
|
server.HandleFunc("/user/settings", endpoints.UserSettingsHandler)
|
||||||
server.HandleFunc("/team", endpoints.TeamHandler)
|
server.HandleFunc("/team", endpoints.TeamHandler)
|
||||||
server.HandleFunc("/team/presence", endpoints.TeamHandler)
|
server.HandleFunc("/team/presence", endpoints.TeamHandler)
|
||||||
server.Handle("/", http.RedirectHandler("/time", http.StatusPermanentRedirect))
|
server.Handle("/", http.RedirectHandler("/time", http.StatusPermanentRedirect))
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package models
|
package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"arbeitszeitmessung/helper"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
@@ -161,16 +162,23 @@ func (b Booking) Save() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (b *Booking) GetBookingType() string {
|
func (b *Booking) GetBookingType() string {
|
||||||
|
debug := (helper.GetEnv("GO_ENV", "production") == "debug")
|
||||||
switch b.CheckInOut {
|
switch b.CheckInOut {
|
||||||
case 1: //manuelle Änderung
|
case 1: //manuelle Änderung
|
||||||
return "kommen"
|
return "kommen"
|
||||||
case 3:
|
case 3:
|
||||||
|
if(debug){
|
||||||
return "kommen manuell"
|
return "kommen manuell"
|
||||||
|
}
|
||||||
|
return "kommen"
|
||||||
case 2: //manuelle Änderung
|
case 2: //manuelle Änderung
|
||||||
return "gehen"
|
return "gehen"
|
||||||
case 4:
|
case 4:
|
||||||
|
if(debug){
|
||||||
return "gehen manuell"
|
return "gehen manuell"
|
||||||
case 255:
|
}
|
||||||
|
return "gehen"
|
||||||
|
case 254:
|
||||||
return "abgemeldet"
|
return "abgemeldet"
|
||||||
default:
|
default:
|
||||||
return "Buchungs Typ unbekannt"
|
return "Buchungs Typ unbekannt"
|
||||||
@@ -221,11 +229,11 @@ func (b *Booking) UpdateTime(newTime time.Time) {
|
|||||||
// TODO: add check for time overlap
|
// TODO: add check for time overlap
|
||||||
|
|
||||||
var newBooking Booking
|
var newBooking Booking
|
||||||
newBooking.Timestamp = time.Date(b.Timestamp.Year(), b.Timestamp.Month(), b.Timestamp.Day(), hour, minute, 0, 0, time.Local)
|
newBooking.Timestamp = time.Date(b.Timestamp.Year(), b.Timestamp.Month(), b.Timestamp.Day(), hour, minute, 0, 0, b.Timestamp.Location())
|
||||||
if b.CheckInOut < 3 {
|
if b.CheckInOut < 3 {
|
||||||
newBooking.CheckInOut = b.CheckInOut + 2
|
newBooking.CheckInOut = b.CheckInOut + 2
|
||||||
}
|
}
|
||||||
if b.CheckInOut == 255 {
|
if b.CheckInOut == 254 {
|
||||||
newBooking.CheckInOut = 4
|
newBooking.CheckInOut = 4
|
||||||
}
|
}
|
||||||
b.Update(newBooking)
|
b.Update(newBooking)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ func (u *User) GetAll() ([]User, error) {
|
|||||||
// Returns true if there is a booking 1 for today -> meaning the user is at work
|
// Returns true if there is a booking 1 for today -> meaning the user is at work
|
||||||
// Returns false if there is no booking today or the user is already booked out of the system
|
// Returns false if there is no booking today or the user is already booked out of the system
|
||||||
func (u *User) CheckAnwesenheit() bool {
|
func (u *User) CheckAnwesenheit() bool {
|
||||||
qStr, err := DB.Prepare((`SELECT check_in_out FROM anwesenheit WHERE card_uid = $1 AND "timestamp" >= now()::date + interval '1h' ORDER BY "timestamp" DESC`))
|
qStr, err := DB.Prepare((`SELECT check_in_out FROM anwesenheit WHERE card_uid = $1 AND "timestamp" >= now()::date + interval '1h' ORDER BY "timestamp" DESC LIMIT 1;`))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error preparing query statement %v\n", err)
|
fmt.Printf("Error preparing query statement %v\n", err)
|
||||||
return false
|
return false
|
||||||
@@ -79,12 +79,12 @@ func (u *User) CheckAnwesenheit() bool {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return check_in_out == 1
|
return check_in_out%2 == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a new booking for the user -> check_in_out will be 255 for automatic check out
|
// 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) Logout() error {
|
||||||
booking := (*Booking).New(nil, u.CardUID, 0, 255)
|
booking := (*Booking).New(nil, u.CardUID, 0, 254)
|
||||||
err := booking.Insert()
|
err := booking.Insert()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("Error inserting booking %v\n", err)
|
fmt.Printf("Error inserting booking %v\n", err)
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ CREATE TABLE "abwesenheiten" (
|
|||||||
"counter_id" bigserial PRIMARY KEY,
|
"counter_id" bigserial PRIMARY KEY,
|
||||||
"card_uid" varchar(255),
|
"card_uid" varchar(255),
|
||||||
"abwesenheit_typ" int2,
|
"abwesenheit_typ" int2,
|
||||||
"datum" timestamptz(6) DEFAULT NOW()::DATE,
|
"datum" timestamptz(6) DEFAULT NOW()::DATE
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Adds crypto extension
|
-- Adds crypto extension
|
||||||
|
|||||||
2
db.sql
2
db.sql
@@ -6,7 +6,7 @@ CREATE TABLE "public"."anwesenheit" (
|
|||||||
"check_in_out" int2,
|
"check_in_out" int2,
|
||||||
"geraet_id" int2
|
"geraet_id" int2
|
||||||
);
|
);
|
||||||
COMMENT ON COLUMN "public"."anwesenheit"."check_in_out" IS '1=Check In 2=Check Out 255=Automatic Check Out';
|
COMMENT ON COLUMN "public"."anwesenheit"."check_in_out" IS '1=Check In 2=Check Out 254=Automatic Check Out';
|
||||||
COMMENT ON COLUMN "public"."anwesenheit"."geraet_id" IS 'ID des Lesegerätes';
|
COMMENT ON COLUMN "public"."anwesenheit"."geraet_id" IS 'ID des Lesegerätes';
|
||||||
|
|
||||||
-- @block create table personaldaten
|
-- @block create table personaldaten
|
||||||
|
|||||||
Reference in New Issue
Block a user