package main import ( "database/sql" "fmt" "html/template" "log" "net/http" //"net/url" //"time" _ "github.com/mattn/go-sqlite3" ) var ( KosztBiletuSUMA int //zmiana pinu, hasła i blokada karty pinFROMsite int RFIDblockORno string hasloFROMsite string //logowanie ------------ loginFROMsite string passwordFROMsite string //users --------------- IDusers int User string Password string PIN int RFID int Login string Blokada bool //bilety --------------- IDbiletu int KtoZabralID int DataCzas string KosztBiletu int CzyZaplacony string //dania --------------- IDdania int NazwaDania string KosztDania int ) //const localHost = string("192.168.8.102:9197") //*************************************************************************** //funkcje sterujące //*************************************************************************** //############################################################################# func opisStołówkaZPM(w http.ResponseWriter, r *http.Request) { //fmt.Println(localHostDB) t, _ := template.ParseFiles("StronaGlowna.gohtml") t.Execute(w, nil) } //############################################################################# func panel(w http.ResponseWriter, r *http.Request) { for _, cookie := range r.Cookies() { fmt.Fprint(w, cookie.Name) } fmt.Println("method:", r.Method) t, _ := template.ParseFiles("panel.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "panel.gtpl", d) } //############################################################################# func wylogowano(w http.ResponseWriter, r *http.Request) { //-------------------------------------------------- hasloFROMsite := r.FormValue("hasloFROMsite") if hasloFROMsite != "" { db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE users SET Password=? WHERE IDusers=?") checkErr(err) up, err := akt.Exec(hasloFROMsite, IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) db.Close() } //-------------------------------------------------- t, _ := template.ParseFiles("wylogowano.gtpl") type user struct { UserView string } u := user{ UserView: User} t.ExecuteTemplate(w, "wylogowano.gtpl", u) } //############################################################################# func login(w http.ResponseWriter, r *http.Request) { //************************************************************************** loginFROMsite := r.FormValue("loginFROMsite") passwordFROMsite := r.FormValue("passwordFROMsite") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows0, err := db.Query("SELECT * FROM users") checkErr(err) for rows0.Next() { err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada) checkErr(err) if r.Method == "POST" { if Login == loginFROMsite { if Password == passwordFROMsite { http.Redirect(w, r, "http://localhost:9197/panel", http.StatusSeeOther) panel(w, r) break } } } } if r.Method == "GET" { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) r.ParseForm() } if r.Method == "POST" { if loginFROMsite != Login { if loginFROMsite == "" { if passwordFROMsite != Password { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***") } } else { if passwordFROMsite != Password { t, _ := template.ParseFiles("login.gtpl") t.Execute(w, nil) fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***") } } } } //************************************************************************** rows0.Close() db.Close() } //############################################################################# func menuDan(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("menuDanNaglowek.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "menuDanNaglowek.gtpl", d) //dania ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr2(err) rows2, err := db.Query("SELECT * FROM dania") checkErr(err) for rows2.Next() { err = rows2.Scan(&IDdania, &NazwaDania, &KosztDania) checkErr3(err) //fmt.Printf("%d. %s, %d \n", IDdania, NazwaDania, KosztDania) t, _ := template.ParseFiles("menuDan.gtpl") d := struct { IDdaniaView int NazwaDaniaView string KosztDaniaView int }{ IDdaniaView: IDdania, NazwaDaniaView: NazwaDania, KosztDaniaView: KosztDania} t.ExecuteTemplate(w, "menuDan.gtpl", d) } //---------------------------------- rows2.Close() db.Close() } //############################################################################# func historiaPosilkow(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl") d := struct { UserView string }{ UserView: User} t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d) //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows3, err := db.Query("SELECT * FROM bilety") checkErr(err) for rows3.Next() { err = rows3.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr(err) if KtoZabralID == IDusers { t, _ := template.ParseFiles("historiaPosilkow.gtpl") d := struct { IDbiletuView int KtoZabralView int DataCzasView string KosztBiletuView int CzyZaplaconyView string }{ IDbiletuView: IDbiletu, KtoZabralView: KtoZabralID, DataCzasView: DataCzas, KosztBiletuView: KosztBiletu, CzyZaplaconyView: CzyZaplacony} t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d) } //---------------------------------- } rows3.Close() db.Close() } //############################################################################# func platnosci(w http.ResponseWriter, r *http.Request) { //fmt.Fprint(w, User) //bilety ---------------------------------- db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers) checkErr(err) KosztBiletuSUMA = 0 for rows5.Next() { err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr3(err) //if KtoZabralID == User { if CzyZaplacony == "nie" { KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA } //---------------------------------- } //fmt.Println(KosztBiletuSUMA) t, _ := template.ParseFiles("platnosci.gtpl") checkErr(err) type zaplac struct { UserView string Zaplac int } z := zaplac{ UserView: User, Zaplac: KosztBiletuSUMA} t.ExecuteTemplate(w, "platnosci.gtpl", z) rows5.Close() db.Close() } //############################################################################# func placeOnline(w http.ResponseWriter, r *http.Request) { db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers) checkErr(err) KosztBiletuSUMA = 0 for rows5.Next() { err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony) checkErr3(err) if CzyZaplacony == "nie" { KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA } } t, _ := template.ParseFiles("placeOnline.gtpl") checkErr(err) type zaplac struct { UserView string Zaplac int } z := zaplac{ UserView: User, Zaplac: KosztBiletuSUMA} t.ExecuteTemplate(w, "placeOnline.gtpl", z) rows5.Close() db.Close() } //############################################################################# func zaplacono(w http.ResponseWriter, r *http.Request) { db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE bilety SET CzyZaplacony=? WHERE KtoZabralID=?") checkErr(err) up, err := akt.Exec("tak", KtoZabralID) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) db.Close() t, _ := template.ParseFiles("zaplacono.gtpl") checkErr(err) type zaplac struct { UserView string Zaplac int } z := zaplac{ UserView: User, Zaplac: KosztBiletuSUMA} t.ExecuteTemplate(w, "zaplacono.gtpl", z) } //############################################################################# func zmianaPINU(w http.ResponseWriter, r *http.Request) { pinFROMsite := r.FormValue("pinFROMsite") RFIDblockORno := r.FormValue("RFID") t, _ := template.ParseFiles("zmianaPINU.gtpl") type pinIblokada struct { UserView string } wykonaj := pinIblokada{ UserView: User} t.ExecuteTemplate(w, "zmianaPINU.gtpl", wykonaj) if pinFROMsite != "" { fmt.Fprintln(w, "*** --- Pin został POMYŚLNIE ZMIENIONY! --- *** \n") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE users SET PIN=? WHERE IDusers=?") checkErr(err) up, err := akt.Exec(pinFROMsite, IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) db.Close() } if RFIDblockORno == "RFIDblock" { fmt.Fprintln(w, "*** --- Karta RFID została ZABLOKOWANA! --- *** \n") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE users SET Blokada=? WHERE IDusers=?") checkErr(err) up, err := akt.Exec("true", IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) db.Close() } else { if RFIDblockORno == "RFIDunlock" { fmt.Fprintln(w, "*** --- Karta RFID została ODBLOKOWANA! --- *** \n") db, err := sql.Open("sqlite3", "stolowkaZPM.db") checkErr(err) akt, err := db.Prepare("UPDATE users SET Blokada=? WHERE IDusers=?") checkErr(err) up, err := akt.Exec("false", IDusers) checkErr(err) dzialanie, err := up.RowsAffected() checkErr(err) fmt.Println(dzialanie) db.Close() } } } //############################################################################# func zmianaHasla(w http.ResponseWriter, r *http.Request) { //templatka przekierowuje do funkcji wylogowano t, _ := template.ParseFiles("zmianaHasla.gtpl") type zmhaslo struct { UserView string } wykonaj := zmhaslo{ UserView: User} t.ExecuteTemplate(w, "zmianaHasla.gtpl", wykonaj) } //*************************************************************************** //Obsługa błędów //*************************************************************************** func checkErr(err error) { if err != nil { fmt.Println("Błąd") } } func checkErr2(err error) { if err != nil { fmt.Println("Błąd dwa") } } func checkErr3(err error) { if err != nil { fmt.Println("Błąd trzy") } } //*************************************************************************** //funkcja główna //*************************************************************************** func main() { http.HandleFunc("/", opisStołówkaZPM) http.HandleFunc("/login", login) http.HandleFunc("/panel", panel) http.HandleFunc("/historiaPosilkow", historiaPosilkow) http.HandleFunc("/platnosci", platnosci) http.HandleFunc("/platnosci/placeOnline", placeOnline) http.HandleFunc("/zaplacono", zaplacono) http.HandleFunc("/wylogowano", wylogowano) http.HandleFunc("/menuDan", menuDan) http.HandleFunc("/zmianaPINU", zmianaPINU) http.HandleFunc("/zmianaHasla", zmianaHasla) err := http.ListenAndServe(":9197", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } }