From bb8838e190bf1d08df1ff3676f600304f3a924cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Sun, 21 Jun 2026 19:17:27 +0200 Subject: [PATCH] =?UTF-8?q?Servis=20novi=20nalog:=20auto-detekcija=20JMBG/?= =?UTF-8?q?li=C4=8Dne=20karte=20i=20kompaktnija=20forma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Uklonjen izbor 'Vrsta dokumenta' — tip identifikacije se prepoznaje iz dužine unosa (13 cifara JMBG, 9 broj lične karte) preko odrediTipIdentifikacije i tako upisuje u bazu. Polja klijenta složena u parove po redu za oba tipa lica. --- internal/handler/klijent.go | 23 +++++++++++ internal/handler/servis.go | 18 ++++---- web/templates/stranice/servis_forma.html | 52 +++++++++++++----------- 3 files changed, 60 insertions(+), 33 deletions(-) diff --git a/internal/handler/klijent.go b/internal/handler/klijent.go index fbcb1e1..208843b 100644 --- a/internal/handler/klijent.go +++ b/internal/handler/klijent.go @@ -296,6 +296,29 @@ func validirajJMBG(broj string) string { return "" } +// odrediTipIdentifikacije prepoznaje da li je uneti broj JMBG (13 cifara) ili broj +// lične karte (9 cifara — registarski broj na novoj srpskoj ličnoj karti) i vraća +// odgovarajući tip ("jmbg" ili "licna_karta"). Prazan unos je dozvoljen i vraća +// prazan tip bez greške. Vraća (tip, poruka o grešci). +func odrediTipIdentifikacije(broj string) (string, string) { + if broj == "" { + return "", "" + } + for _, c := range broj { + if c < '0' || c > '9' { + return "", "Identifikacioni broj sme sadržati samo cifre." + } + } + switch len(broj) { + case 13: + return "jmbg", "" + case 9: + return "licna_karta", "" + default: + return "", "Unesite JMBG (13 cifara) ili broj lične karte (9 cifara)." + } +} + // parseFormuKlijenta čita polja iz HTTP forme, validira ih i vraća model i eventualnu grešku func parseFormuKlijenta(r *http.Request) (model.Klijent, string) { tip := r.FormValue("tip") diff --git a/internal/handler/servis.go b/internal/handler/servis.go index 5da939f..9b7e3fb 100644 --- a/internal/handler/servis.go +++ b/internal/handler/servis.go @@ -619,17 +619,15 @@ func (h *Handler) mozdaKreirajKlijenta(ctx context.Context, r *http.Request, nal return "Adresa e-pošte nije ispravna." } - // tip identifikacionog broja: 'jmbg' ili 'licna_karta' (podrazumevano jmbg) - tipIdent := r.FormValue("tip_identifikacije") - if tipIdent != "jmbg" && tipIdent != "licna_karta" { - tipIdent = "jmbg" - } - + // tip identifikacionog broja se prepoznaje iz dužine unosa: + // 13 cifara → JMBG, 9 cifara → broj lične karte jmbg := strings.TrimSpace(r.FormValue("jmbg")) - if tipIdent == "jmbg" { - if greska := validirajJMBG(jmbg); greska != "" { - return greska - } + tipIdent, greska := odrediTipIdentifikacije(jmbg) + if greska != "" { + return greska + } + if tipIdent == "" { + tipIdent = "jmbg" // prazan unos — podrazumevani tip radi konzistentnosti baze } klijent := model.Klijent{ diff --git a/web/templates/stranice/servis_forma.html b/web/templates/stranice/servis_forma.html index bd65823..48dc5b3 100644 --- a/web/templates/stranice/servis_forma.html +++ b/web/templates/stranice/servis_forma.html @@ -163,15 +163,23 @@
- - + +
- - + + +
+
+
+
+ + +
+
+ +
@@ -201,24 +209,22 @@ +
+
+ + +
+
+ + +
+
+
+ + +
- - -
-
- - -
-
- - -
-
-
- - -