From 830c51e95eb0f9e702743e68a09b4031929c05f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Sat, 20 Jun 2026 22:49:56 +0200 Subject: [PATCH] =?UTF-8?q?Klijenti:=20filter=20po=20tipu=20(Svi/Firme/Fiz?= =?UTF-8?q?i=C4=8Dka=20lica)=20preko=20radio=20dugmadi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/db/repository.go | 1 + internal/db/sqlite/klijent.go | 8 ++++++++ internal/handler/klijent.go | 10 ++++++++++ web/templates/stranice/klijenti.html | 19 +++++++++++++++++++ 4 files changed, 38 insertions(+) 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 @@
+ +
+ + + +
+