unknown преди 4 години
родител
ревизия
26618aab17
променени са 10 файла, в които са добавени 41 реда и са изтрити 7 реда
  1. BIN
      Kyocera M2040dn
  2. 2 0
      compatible.html
  3. 26 6
      main.go
  4. 13 1
      output.html
  5. BIN
      printer.db
  6. BIN
      printers.exe
  7. BIN
      sdf.zip
  8. BIN
      sdf_2.zip
  9. BIN
      test.png
  10. BIN
      Ù.png

BIN
Kyocera M2040dn


+ 2 - 0
compatible.html

@@ -17,5 +17,7 @@
 		<li>{{ . }}</li>
 		{{ end }}
 	</ul>
+
+	
 </body>
 </html>

+ 26 - 6
main.go

@@ -1,7 +1,6 @@
 package main
 
 import (
-	"strconv"
 	"fmt"
 	"github.com/boombuler/barcode"
 	"github.com/boombuler/barcode/qr"
@@ -15,6 +14,7 @@ import (
 	"math/rand"
 	"net/http"
 	"os"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -39,13 +39,30 @@ func main() {
 	r.HandleFunc("/printer/{printerName}", PrinterPage)
 	r.HandleFunc("/cartridges", CartridgePage)
 	r.HandleFunc("/updateCartridge", updateCartridges)
+	r.HandleFunc("/decreaseCartridgeQuantity", decreaseCartridgeQuantity)
 	fmt.Println("Server is listening...")
 
 	http.Handle("/", r)
-	http.ListenAndServe(":80"/*+port*/, nil)
+	http.ListenAndServe(":80" /*+port*/, nil)
 }
 
-func updateCartridges(w http.ResponseWriter, r *http.Request){
+func decreaseCartridgeQuantity(w http.ResponseWriter, r *http.Request) {
+	db, _ := gorm.Open(sqlite.Open("printer.db"), &gorm.Config{})
+	r.ParseForm()
+	selectedCartridge := strings.Join(r.Form["cartridge"], "")
+	var cartridge Cartridges
+	db.Where("Name = ?", selectedCartridge).First(&cartridge)
+
+	if cartridge.Quantity > 0 {
+		newQuantity := cartridge.Quantity - 1
+		db.Model(&cartridge).Update("Quantity", newQuantity)
+	} else {
+		fmt.Sprint(w, "Картридж закончился")
+	}
+	http.Redirect(w, r, "/", 301)
+}
+
+func updateCartridges(w http.ResponseWriter, r *http.Request) {
 	db, _ := gorm.Open(sqlite.Open("printer.db"), &gorm.Config{})
 
 	r.ParseForm()
@@ -56,7 +73,7 @@ func updateCartridges(w http.ResponseWriter, r *http.Request){
 	if err != nil {
 		fmt.Println("Someone tries to update int value by string. Someone: " + r.RemoteAddr)
 
-	} 
+	}
 	newQuantity := cartridge.Quantity + uint(quantity)
 	db.Model(&cartridge).Update("Quantity", newQuantity)
 	http.Redirect(w, r, "/", 301)
@@ -102,7 +119,7 @@ func CartridgePage(w http.ResponseWriter, r *http.Request) {
 
 		tmpl, err := template.ParseFiles("cartridges.gohtml")
 
-		if err != nil{
+		if err != nil {
 			fmt.Println("Error parsing files")
 			fmt.Println(err)
 		}
@@ -129,11 +146,14 @@ func PrinterPage(w http.ResponseWriter, r *http.Request) {
 			var cot []Cartridgeofprinter
 			db.Find(&cot)
 			db.Where("Printer_Id = ?", printer.ID).Find(&cot)
+			fmt.Println(cot)
 			for _, v := range cot {
 				var cart Cartridges
 				if v.Printer_Id == printer.ID {
 					db.Where("ID = ?", v.Cartridge_Id).First(&cart)
-					cartridges = append(cartridges, cart.Name)
+					if cart.Quantity > 0 {
+						cartridges = append(cartridges, cart.Name)
+					}
 				}
 			}
 

+ 13 - 1
output.html

@@ -5,15 +5,27 @@
 </head>
 <body>
 	<p>Выбранный принтер: {{ .PrinterName }}</p>
-	<p>Совместимые картриджи:</p>
+	<p>Доступные для установки в этот принтер картриджи:</p>
 	<ul>
 		{{ range .Cartridges }}
 		<li>{{ . }}</li>
+		{{ else }}
+		<li>Нет доступных картриджей</li>
 		{{ end }}
 	</ul>
 
 	<input type="button" name="generateQR" value="Сгенерировать QR" onclick="getURL();">
 
+	<p>Установить картридж:</p>
+	<form action="/decreaseCartridgeQuantity" method="POST">
+		<select name="cartridge" id="cartridge">
+			{{ range .Cartridges }}
+			<option>{{ . }}</option>
+			{{ end }}
+		</select>
+		<input type="submit" value="Установить">
+	</form>
+
 
 	<script type="text/javascript">
 		function getURL() {

BIN
printer.db


BIN
printers.exe


BIN
sdf.zip


BIN
sdf_2.zip


BIN
test.png


BIN
Ù.png