473 lines
12 KiB
Go
473 lines
12 KiB
Go
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)
|
|
}
|
|
|
|
/*
|
|
d := struct {
|
|
loginFROMsiteView string
|
|
passwordFROMsiteView string
|
|
IDusersView int
|
|
UserView string
|
|
PasswordView string
|
|
PINView int
|
|
RFIDView int
|
|
LoginView string
|
|
BlokadaView bool
|
|
KosztView int
|
|
IDbiletuView int
|
|
KtoZabralView int
|
|
DataCzasView string
|
|
KosztBiletuView int
|
|
IDdaniaView int
|
|
NazwaDaniaView string
|
|
KosztDaniaView int
|
|
}{
|
|
loginFROMsiteView: "",
|
|
passwordFROMsiteView: "",
|
|
IDusersView: 0,
|
|
UserView: "",
|
|
PasswordView: "",
|
|
PINView: 0,
|
|
RFIDView: 0,
|
|
LoginView: "",
|
|
BlokadaView: Blokada,
|
|
KosztView: 0,
|
|
IDbiletuView: 0,
|
|
KtoZabralView: 0,
|
|
DataCzasView: "",
|
|
KosztBiletuView: 0,
|
|
IDdaniaView: 0,
|
|
NazwaDaniaView: "",
|
|
KosztDaniaView: 0}
|
|
*/
|
|
|
|
//#############################################################################
|
|
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)
|
|
|
|
rows0, err := db.Query("SELECT * FROM users")
|
|
checkErr(err)
|
|
|
|
for rows0.Next() {
|
|
err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada)
|
|
checkErr(err)
|
|
fmt.Printf("%d. %s, %s, %d, %d, %s, %v \n", IDusers, User, Password, PIN, RFID, Login, Blokada)
|
|
|
|
}
|
|
|
|
rows0.Close()
|
|
db.Close()
|
|
|
|
}
|
|
if RFIDblockORno == "RFIDblock" {
|
|
//Blokada := true
|
|
fmt.Fprintln(w, "*** --- Karta RFID została ZABLOKOWANA! --- *** \n")
|
|
|
|
} else {
|
|
if RFIDblockORno == "RFIDunlock" {
|
|
//Blokada := true
|
|
fmt.Fprintln(w, "*** --- Karta RFID została ODBLOKOWANA! --- *** \n")
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
//#############################################################################
|
|
func zmianaHasla(w http.ResponseWriter, r *http.Request) {
|
|
|
|
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)
|
|
}
|
|
}
|