diff --git a/internal/db/repository.go b/internal/db/repository.go index 4722850..68d8a3d 100644 --- a/internal/db/repository.go +++ b/internal/db/repository.go @@ -115,6 +115,7 @@ type DobavljacRepository interface { // KlijentFilter definiše parametre za filtriranje liste klijenata type KlijentFilter struct { Pretraga string + Tip string // "fizicko", "pravno" ili "" za sve Limit int Offset int } diff --git a/internal/db/sqlite/klijent.go b/internal/db/sqlite/klijent.go index 5b43251..6b776c1 100644 --- a/internal/db/sqlite/klijent.go +++ b/internal/db/sqlite/klijent.go @@ -153,6 +153,10 @@ func (r *KlijentRepo) ListaFilter(ctx context.Context, filter db.KlijentFilter) p := "%" + filter.Pretraga + "%" args = append(args, p, p, p, p, p, p) } + if filter.Tip == "fizicko" || filter.Tip == "pravno" { + upit += " AND tip = ?" + args = append(args, filter.Tip) + } upit += " ORDER BY datum_unosa DESC" @@ -206,6 +210,10 @@ func (r *KlijentRepo) PrebrojiPoFilteru(ctx context.Context, filter db.KlijentFi p := "%" + filter.Pretraga + "%" args = append(args, p, p, p, p, p, p) } + if filter.Tip == "fizicko" || filter.Tip == "pravno" { + upit += " AND tip = ?" + args = append(args, filter.Tip) + } var broj int if err := r.db.QueryRowContext(ctx, upit, args...).Scan(&broj); err != nil { diff --git a/internal/handler/klijent.go b/internal/handler/klijent.go index 694a2e8..531e1a8 100644 --- a/internal/handler/klijent.go +++ b/internal/handler/klijent.go @@ -18,6 +18,7 @@ type PodaciKlijenata struct { model.PodaciStranice Klijenti []model.Klijent Pretraga string + TipFilter string Sacuvano bool Obrisan bool StranicaBr int @@ -45,6 +46,10 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) { } pretraga := r.URL.Query().Get("pretraga") + tipFilter := r.URL.Query().Get("tip") + if tipFilter != "fizicko" && tipFilter != "pravno" { + tipFilter = "" + } const pageSize = 100 stranicaBr := 1 @@ -56,6 +61,7 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) { filter := db.KlijentFilter{ Pretraga: pretraga, + Tip: tipFilter, Limit: pageSize, Offset: (stranicaBr - 1) * pageSize, } @@ -78,6 +84,9 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) { if pretraga != "" { queryDelići += "&pretraga=" + pretraga } + if tipFilter != "" { + queryDelići += "&tip=" + tipFilter + } stranicaPrev := stranicaBr - 1 if stranicaPrev < 1 { @@ -95,6 +104,7 @@ func (h *Handler) Klijenti(w http.ResponseWriter, r *http.Request) { PodaciStranice: ps, Klijenti: klijenti, Pretraga: pretraga, + TipFilter: tipFilter, Sacuvano: r.URL.Query().Get("sacuvano") == "1", Obrisan: r.URL.Query().Get("obrisan") == "1", StranicaBr: stranicaBr, diff --git a/web/templates/stranice/klijenti.html b/web/templates/stranice/klijenti.html index 0056e25..e8acd05 100644 --- a/web/templates/stranice/klijenti.html +++ b/web/templates/stranice/klijenti.html @@ -30,6 +30,25 @@
+ +
+ + + +
+