Klijent: validacija JMBG (13 cifara) i kontakt osoba za pravno lice
parseFormuKlijenta i mozdaKreirajKlijenta proveravaju JMBG kad je izabran taj tip identifikacije. Forma pravnog lica dobija sekciju Kontakt osoba (ime/prezime); neaktivna sekcija se onemogućava da server ne dobije duplu vrednost. renderujStandalone parsira šablon sa root imenom i šablonskim funkcijama (kao kreirajKes).
This commit is contained in:
@@ -182,7 +182,8 @@ func (h *Handler) renderujStandalone(w http.ResponseWriter, ime string, podaci a
|
||||
tmpl = t
|
||||
} else {
|
||||
var err error
|
||||
if tmpl, err = template.ParseFS(h.TemplatesFS, "web/templates/stranice/"+ime+".html"); err != nil {
|
||||
// kao u kreirajKes: root mora biti ime+".html" i moraju biti registrovane šablonske funkcije
|
||||
if tmpl, err = template.New(ime+".html").Funcs(sablonskeFunkcije).ParseFS(h.TemplatesFS, "web/templates/stranice/"+ime+".html"); err != nil {
|
||||
slog.Error("greška pri parsiranju šablona", "ime", ime, "error", err)
|
||||
http.Error(w, "Greška pri učitavanju stranice", http.StatusInternalServerError)
|
||||
return
|
||||
|
||||
@@ -278,6 +278,24 @@ func (h *Handler) ObrisiKlijenta(w http.ResponseWriter, r *http.Request) {
|
||||
http.Redirect(w, r, "/klijenti?obrisan=1", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
// validirajJMBG proverava da li uneti JMBG ima tačno 13 cifara. Prazan broj je
|
||||
// dozvoljen (polje nije obavezno). Vraća srpsku poruku o grešci ili prazan string.
|
||||
// Broj lične karte se ne proverava jer mu se format razlikuje između izdanja.
|
||||
func validirajJMBG(broj string) string {
|
||||
if broj == "" {
|
||||
return ""
|
||||
}
|
||||
if len(broj) != 13 {
|
||||
return "JMBG mora imati tačno 13 cifara."
|
||||
}
|
||||
for _, c := range broj {
|
||||
if c < '0' || c > '9' {
|
||||
return "JMBG sme sadržati samo cifre."
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// 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")
|
||||
@@ -306,11 +324,18 @@ func parseFormuKlijenta(r *http.Request) (model.Klijent, string) {
|
||||
tipIdent = "jmbg"
|
||||
}
|
||||
|
||||
jmbg := strings.TrimSpace(r.FormValue("jmbg"))
|
||||
if tipIdent == "jmbg" {
|
||||
if greska := validirajJMBG(jmbg); greska != "" {
|
||||
return model.Klijent{Tip: tip}, greska
|
||||
}
|
||||
}
|
||||
|
||||
return model.Klijent{
|
||||
Tip: tip,
|
||||
Ime: ime,
|
||||
Prezime: strings.TrimSpace(r.FormValue("prezime")),
|
||||
JMBG: strings.TrimSpace(r.FormValue("jmbg")),
|
||||
JMBG: jmbg,
|
||||
TipIdentifikacije: tipIdent,
|
||||
NazivFirme: nazivFirme,
|
||||
PIB: strings.TrimSpace(r.FormValue("pib")),
|
||||
|
||||
@@ -625,11 +625,18 @@ func (h *Handler) mozdaKreirajKlijenta(ctx context.Context, r *http.Request, nal
|
||||
tipIdent = "jmbg"
|
||||
}
|
||||
|
||||
jmbg := strings.TrimSpace(r.FormValue("jmbg"))
|
||||
if tipIdent == "jmbg" {
|
||||
if greska := validirajJMBG(jmbg); greska != "" {
|
||||
return greska
|
||||
}
|
||||
}
|
||||
|
||||
klijent := model.Klijent{
|
||||
Tip: tip,
|
||||
Ime: ime,
|
||||
Prezime: strings.TrimSpace(r.FormValue("prezime")),
|
||||
JMBG: strings.TrimSpace(r.FormValue("jmbg")),
|
||||
JMBG: jmbg,
|
||||
TipIdentifikacije: tipIdent,
|
||||
NazivFirme: nazivFirme,
|
||||
PIB: strings.TrimSpace(r.FormValue("pib")),
|
||||
|
||||
Reference in New Issue
Block a user