Servis novi nalog: auto-detekcija JMBG/lične karte i kompaktnija forma

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.
This commit is contained in:
2026-06-21 19:17:27 +02:00
parent 3def86ddb9
commit 9a1fe7b956
3 changed files with 60 additions and 33 deletions
+23
View File
@@ -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")
+8 -10
View File
@@ -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{