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:
@@ -296,6 +296,29 @@ func validirajJMBG(broj string) string {
|
|||||||
return ""
|
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
|
// parseFormuKlijenta čita polja iz HTTP forme, validira ih i vraća model i eventualnu grešku
|
||||||
func parseFormuKlijenta(r *http.Request) (model.Klijent, string) {
|
func parseFormuKlijenta(r *http.Request) (model.Klijent, string) {
|
||||||
tip := r.FormValue("tip")
|
tip := r.FormValue("tip")
|
||||||
|
|||||||
@@ -619,17 +619,15 @@ func (h *Handler) mozdaKreirajKlijenta(ctx context.Context, r *http.Request, nal
|
|||||||
return "Adresa e-pošte nije ispravna."
|
return "Adresa e-pošte nije ispravna."
|
||||||
}
|
}
|
||||||
|
|
||||||
// tip identifikacionog broja: 'jmbg' ili 'licna_karta' (podrazumevano jmbg)
|
// tip identifikacionog broja se prepoznaje iz dužine unosa:
|
||||||
tipIdent := r.FormValue("tip_identifikacije")
|
// 13 cifara → JMBG, 9 cifara → broj lične karte
|
||||||
if tipIdent != "jmbg" && tipIdent != "licna_karta" {
|
|
||||||
tipIdent = "jmbg"
|
|
||||||
}
|
|
||||||
|
|
||||||
jmbg := strings.TrimSpace(r.FormValue("jmbg"))
|
jmbg := strings.TrimSpace(r.FormValue("jmbg"))
|
||||||
if tipIdent == "jmbg" {
|
tipIdent, greska := odrediTipIdentifikacije(jmbg)
|
||||||
if greska := validirajJMBG(jmbg); greska != "" {
|
if greska != "" {
|
||||||
return greska
|
return greska
|
||||||
}
|
}
|
||||||
|
if tipIdent == "" {
|
||||||
|
tipIdent = "jmbg" // prazan unos — podrazumevani tip radi konzistentnosti baze
|
||||||
}
|
}
|
||||||
|
|
||||||
klijent := model.Klijent{
|
klijent := model.Klijent{
|
||||||
|
|||||||
@@ -163,15 +163,23 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="forma-grid-2" style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
|
<div class="forma-grid-2" style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
|
||||||
<div>
|
<div>
|
||||||
<label class="polje-labela">Vrsta dokumenta</label>
|
<label class="polje-labela">JMBG ili broj lične karte</label>
|
||||||
<select name="tip_identifikacije" style="width:100%;">
|
<input type="text" name="jmbg" style="width:100%;"
|
||||||
<option value="jmbg">JMBG</option>
|
placeholder="13 cifara (JMBG) ili 9 (br. lk)">
|
||||||
<option value="licna_karta">Br. lične karte</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label class="polje-labela">JMBG / Br. lične karte</label>
|
<label class="polje-labela">Telefon</label>
|
||||||
<input type="text" name="jmbg" style="width:100%;">
|
<input type="text" name="telefon" style="width:100%;">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="forma-grid-2" style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
|
||||||
|
<div>
|
||||||
|
<label class="polje-labela">Mesto</label>
|
||||||
|
<input type="text" name="mesto" style="width:100%;">
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<label class="polje-labela">E-pošta</label>
|
||||||
|
<input type="text" name="email" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -201,10 +209,6 @@
|
|||||||
<input type="text" name="prezime" x-model="noviPrezime" style="width:100%;">
|
<input type="text" name="prezime" x-model="noviPrezime" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<!-- zajednička polja -->
|
|
||||||
<div class="forma-grid-2" style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
|
<div class="forma-grid-2" style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
|
||||||
<div>
|
<div>
|
||||||
<label class="polje-labela">Telefon</label>
|
<label class="polje-labela">Telefon</label>
|
||||||
@@ -220,6 +224,8 @@
|
|||||||
<input type="text" name="email" style="width:100%;">
|
<input type="text" name="email" style="width:100%;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- tehničar -->
|
<!-- tehničar -->
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
Reference in New Issue
Block a user