zaliczeniePP/main.go

473 lines
12 KiB
Go
Raw Normal View History

2018-11-21 23:47:31 +01:00
package main
2018-11-20 22:17:07 +01:00
2018-12-10 15:52:29 +01:00
import (
2018-12-28 22:10:55 +01:00
"database/sql"
2018-12-10 15:52:29 +01:00
"fmt"
"html/template"
"log"
"net/http"
2018-12-28 22:10:55 +01:00
2018-12-29 16:02:40 +01:00
//"net/url"
2018-12-29 04:54:47 +01:00
//"time"
2018-12-28 22:10:55 +01:00
_ "github.com/mattn/go-sqlite3"
2018-12-10 15:52:29 +01:00
)
2018-11-21 23:47:31 +01:00
2019-01-03 23:57:38 +01:00
var (
2019-01-04 17:58:41 +01:00
KosztBiletuSUMA int
2019-01-03 23:57:38 +01:00
2019-01-05 13:15:14 +01:00
//zmiana pinu, hasła i blokada karty
pinFROMsite int
RFIDblockORno string
hasloFROMsite string
2019-01-03 23:57:38 +01:00
//logowanie ------------
loginFROMsite string
passwordFROMsite string
//users ---------------
IDusers int
User string
Password string
PIN int
RFID int
Login string
Blokada bool
//bilety ---------------
IDbiletu int
2019-01-05 14:32:51 +01:00
KtoZabralID int
2019-01-03 23:57:38 +01:00
DataCzas string
KosztBiletu int
2019-01-05 13:15:14 +01:00
CzyZaplacony string
2019-01-03 23:57:38 +01:00
//dania ---------------
IDdania int
NazwaDania string
KosztDania int
)
//const localHost = string("192.168.8.102:9197")
2018-12-29 16:02:40 +01:00
2018-12-29 00:08:27 +01:00
//***************************************************************************
//funkcje sterujące
//***************************************************************************
2019-01-03 23:57:38 +01:00
2018-12-29 16:02:40 +01:00
//#############################################################################
2018-12-27 21:58:43 +01:00
func opisStołówkaZPM(w http.ResponseWriter, r *http.Request) {
2019-01-03 23:57:38 +01:00
//fmt.Println(localHostDB)
2019-01-04 17:58:41 +01:00
t, _ := template.ParseFiles("StronaGlowna.gohtml")
t.Execute(w, nil)
2018-12-29 01:36:46 +01:00
}
2018-12-29 00:08:27 +01:00
2018-12-29 16:02:40 +01:00
//#############################################################################
2018-12-29 01:36:46 +01:00
func panel(w http.ResponseWriter, r *http.Request) {
2019-01-02 16:32:13 +01:00
for _, cookie := range r.Cookies() {
fmt.Fprint(w, cookie.Name)
}
2019-01-02 01:13:39 +01:00
2018-12-29 16:02:40 +01:00
fmt.Println("method:", r.Method)
2019-01-02 01:13:39 +01:00
t, _ := template.ParseFiles("panel.gtpl")
d := struct {
2019-01-04 17:58:41 +01:00
UserView string
2019-01-02 01:13:39 +01:00
}{
2019-01-04 17:58:41 +01:00
UserView: User}
2019-01-02 01:13:39 +01:00
t.ExecuteTemplate(w, "panel.gtpl", d)
2018-12-29 16:02:40 +01:00
}
2019-01-02 16:32:13 +01:00
//#############################################################################
func wylogowano(w http.ResponseWriter, r *http.Request) {
2019-01-05 13:15:14 +01:00
//--------------------------------------------------
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()
}
2019-01-02 16:32:13 +01:00
//--------------------------------------------------
t, _ := template.ParseFiles("wylogowano.gtpl")
2019-01-05 13:15:14 +01:00
type user struct {
UserView string
}
u := user{
UserView: User}
t.ExecuteTemplate(w, "wylogowano.gtpl", u)
}
/*
2019-01-02 16:32:13 +01:00
d := struct {
loginFROMsiteView string
passwordFROMsiteView string
IDusersView int
UserView string
PasswordView string
PINView int
RFIDView int
LoginView string
BlokadaView bool
KosztView int
IDbiletuView int
2019-01-05 14:32:51 +01:00
KtoZabralView int
2019-01-02 16:32:13 +01:00
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,
2019-01-05 14:32:51 +01:00
KtoZabralView: 0,
2019-01-02 16:32:13 +01:00
DataCzasView: "",
KosztBiletuView: 0,
IDdaniaView: 0,
NazwaDaniaView: "",
KosztDaniaView: 0}
2019-01-05 13:15:14 +01:00
*/
2019-01-02 16:32:13 +01:00
2019-01-02 01:13:39 +01:00
//#############################################################################
func login(w http.ResponseWriter, r *http.Request) {
2019-01-03 23:57:38 +01:00
//**************************************************************************
2019-01-02 01:13:39 +01:00
loginFROMsite := r.FormValue("loginFROMsite")
passwordFROMsite := r.FormValue("passwordFROMsite")
2018-12-29 00:08:27 +01:00
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-02 01:13:39 +01:00
rows0, err := db.Query("SELECT * FROM users")
2018-12-29 00:08:27 +01:00
checkErr(err)
2018-12-29 16:02:40 +01:00
2019-01-02 01:13:39 +01:00
for rows0.Next() {
2019-01-05 13:15:14 +01:00
err = rows0.Scan(&IDusers, &User, &Password, &PIN, &RFID, &Login, &Blokada)
2019-01-02 01:13:39 +01:00
checkErr(err)
2019-01-04 17:58:41 +01:00
if r.Method == "POST" {
if Login == loginFROMsite {
if Password == passwordFROMsite {
http.Redirect(w, r, "http://localhost:9197/panel", http.StatusSeeOther)
panel(w, r)
break
}
2018-12-29 16:02:40 +01:00
}
}
2018-12-29 00:08:27 +01:00
}
2018-12-10 16:09:22 +01:00
2018-12-10 18:00:33 +01:00
if r.Method == "GET" {
2018-12-28 14:22:11 +01:00
t, _ := template.ParseFiles("login.gtpl")
2019-01-04 17:58:41 +01:00
t.Execute(w, nil)
2018-12-10 18:00:33 +01:00
r.ParseForm()
2018-12-27 21:58:43 +01:00
}
2018-12-29 04:11:48 +01:00
2019-01-02 01:13:39 +01:00
if r.Method == "POST" {
if loginFROMsite != Login {
if loginFROMsite == "" {
if passwordFROMsite != Password {
t, _ := template.ParseFiles("login.gtpl")
2019-01-04 17:58:41 +01:00
t.Execute(w, nil)
2019-01-02 01:13:39 +01:00
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")
2019-01-04 17:58:41 +01:00
t.Execute(w, nil)
2019-01-02 01:13:39 +01:00
fmt.Fprint(w, "*** UWAGA! *** Błąd logowania! Login lub hasło nieprawidłowe. *** Spróbuj ponownie. ***")
}
}
}
}
2019-01-03 23:57:38 +01:00
//**************************************************************************
2019-01-02 01:13:39 +01:00
rows0.Close()
db.Close()
2019-01-03 23:57:38 +01:00
}
//#############################################################################
func menuDan(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("menuDanNaglowek.gtpl")
d := struct {
2019-01-04 17:58:41 +01:00
UserView string
2019-01-03 23:57:38 +01:00
}{
2019-01-04 17:58:41 +01:00
UserView: User}
2019-01-03 23:57:38 +01:00
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()
2019-01-02 01:13:39 +01:00
}
//#############################################################################
func historiaPosilkow(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("historiaPosilkowNaglowek.gtpl")
d := struct {
2019-01-04 17:58:41 +01:00
UserView string
2019-01-02 01:13:39 +01:00
}{
2019-01-04 17:58:41 +01:00
UserView: User}
2019-01-02 01:13:39 +01:00
t.ExecuteTemplate(w, "historiaPosilkowNaglowek.gtpl", d)
//bilety ----------------------------------
2018-12-29 04:11:48 +01:00
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-02 01:13:39 +01:00
rows3, err := db.Query("SELECT * FROM bilety")
2018-12-29 04:11:48 +01:00
checkErr(err)
2019-01-02 01:13:39 +01:00
for rows3.Next() {
2019-01-05 14:32:51 +01:00
err = rows3.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony)
2018-12-29 04:11:48 +01:00
checkErr(err)
2019-01-05 14:32:51 +01:00
if KtoZabralID == IDusers {
2019-01-02 01:13:39 +01:00
t, _ := template.ParseFiles("historiaPosilkow.gtpl")
d := struct {
2019-01-02 16:32:13 +01:00
IDbiletuView int
2019-01-05 14:32:51 +01:00
KtoZabralView int
2019-01-02 16:32:13 +01:00
DataCzasView string
KosztBiletuView int
2019-01-05 13:15:14 +01:00
CzyZaplaconyView string
2019-01-02 01:13:39 +01:00
}{
2019-01-02 16:32:13 +01:00
IDbiletuView: IDbiletu,
2019-01-05 14:32:51 +01:00
KtoZabralView: KtoZabralID,
2019-01-02 16:32:13 +01:00
DataCzasView: DataCzas,
KosztBiletuView: KosztBiletu,
CzyZaplaconyView: CzyZaplacony}
2019-01-02 01:13:39 +01:00
t.ExecuteTemplate(w, "historiaPosilkow.gtpl", d)
2018-12-29 04:11:48 +01:00
}
2019-01-02 01:13:39 +01:00
//----------------------------------
2018-12-29 04:11:48 +01:00
}
2019-01-02 01:13:39 +01:00
rows3.Close()
db.Close()
}
//#############################################################################
func platnosci(w http.ResponseWriter, r *http.Request) {
2019-01-02 16:32:13 +01:00
//fmt.Fprint(w, User)
2019-01-02 01:13:39 +01:00
//bilety ----------------------------------
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-05 14:32:51 +01:00
rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers)
2019-01-04 17:58:41 +01:00
checkErr(err)
KosztBiletuSUMA = 0
2019-01-02 16:32:13 +01:00
for rows5.Next() {
2019-01-05 14:32:51 +01:00
err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony)
2019-01-04 17:58:41 +01:00
checkErr3(err)
2019-01-05 14:32:51 +01:00
//if KtoZabralID == User {
2019-01-05 13:15:14 +01:00
if CzyZaplacony == "nie" {
KosztBiletuSUMA = KosztBiletu + KosztBiletuSUMA
}
2019-01-04 17:58:41 +01:00
//----------------------------------
}
2019-01-05 13:15:14 +01:00
//fmt.Println(KosztBiletuSUMA)
2019-01-04 17:58:41 +01:00
t, _ := template.ParseFiles("platnosci.gtpl")
checkErr(err)
type zaplac struct {
UserView string
Zaplac int
2018-12-17 22:35:22 +01:00
}
2019-01-04 17:58:41 +01:00
z := zaplac{
UserView: User,
Zaplac: KosztBiletuSUMA}
t.ExecuteTemplate(w, "platnosci.gtpl", z)
2019-01-02 16:32:13 +01:00
rows5.Close()
2018-12-29 04:11:48 +01:00
db.Close()
2018-12-17 22:35:22 +01:00
}
2019-01-05 13:15:14 +01:00
//#############################################################################
func placeOnline(w http.ResponseWriter, r *http.Request) {
db, err := sql.Open("sqlite3", "stolowkaZPM.db")
checkErr(err)
2019-01-05 14:32:51 +01:00
rows5, err := db.Query("SELECT * FROM bilety WHERE KtoZabralID=?", IDusers)
2019-01-05 13:15:14 +01:00
checkErr(err)
KosztBiletuSUMA = 0
for rows5.Next() {
2019-01-05 14:32:51 +01:00
err = rows5.Scan(&IDbiletu, &KtoZabralID, &DataCzas, &KosztBiletu, &CzyZaplacony)
2019-01-05 13:15:14 +01:00
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()
}
2019-01-05 14:32:51 +01:00
//#############################################################################
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)
}
2019-01-05 13:15:14 +01:00
//#############################################################################
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)
}
2018-12-29 00:08:27 +01:00
//***************************************************************************
2019-01-02 16:32:13 +01:00
//Obsługa błędów
2018-12-29 00:08:27 +01:00
//***************************************************************************
func checkErr(err error) {
if err != nil {
fmt.Println("Błąd")
}
2018-12-28 22:10:55 +01:00
}
2019-01-02 16:32:13 +01:00
func checkErr2(err error) {
if err != nil {
fmt.Println("Błąd dwa")
}
}
func checkErr3(err error) {
if err != nil {
fmt.Println("Błąd trzy")
}
}
2018-12-28 22:10:55 +01:00
2018-12-29 00:08:27 +01:00
//***************************************************************************
//funkcja główna
//***************************************************************************
2018-11-21 23:47:31 +01:00
func main() {
2018-12-27 21:58:43 +01:00
http.HandleFunc("/", opisStołówkaZPM)
2018-12-10 18:00:33 +01:00
http.HandleFunc("/login", login)
2018-12-17 22:35:22 +01:00
http.HandleFunc("/panel", panel)
2019-01-02 01:13:39 +01:00
http.HandleFunc("/historiaPosilkow", historiaPosilkow)
http.HandleFunc("/platnosci", platnosci)
2019-01-05 13:15:14 +01:00
http.HandleFunc("/platnosci/placeOnline", placeOnline)
2019-01-05 14:32:51 +01:00
http.HandleFunc("/zaplacono", zaplacono)
2019-01-02 16:32:13 +01:00
http.HandleFunc("/wylogowano", wylogowano)
2019-01-03 23:57:38 +01:00
http.HandleFunc("/menuDan", menuDan)
2019-01-05 13:15:14 +01:00
http.HandleFunc("/zmianaPINU", zmianaPINU)
http.HandleFunc("/zmianaHasla", zmianaHasla)
2018-12-29 16:02:40 +01:00
2019-01-04 17:58:41 +01:00
err := http.ListenAndServe(":9197", nil)
2018-12-10 15:52:29 +01:00
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
2018-11-21 23:47:31 +01:00
}