From 4355a09a15ecae413cd8bceecb989b91e9d289ba Mon Sep 17 00:00:00 2001 From: MEHMETKECECI Date: Sat, 14 Feb 2026 15:02:54 +0300 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- svc/routes/user_detail.go | 79 +++++++++++++++++++++++++++++++++++---- 1 file changed, 71 insertions(+), 8 deletions(-) diff --git a/svc/routes/user_detail.go b/svc/routes/user_detail.go index 9a00706..7c65b5e 100644 --- a/svc/routes/user_detail.go +++ b/svc/routes/user_detail.go @@ -11,9 +11,11 @@ import ( "encoding/json" "fmt" "io" + "log" "net/http" "os" "strconv" + "strings" "time" "github.com/gorilla/mux" @@ -210,6 +212,17 @@ func handleUserUpdate(db *sql.DB, w http.ResponseWriter, r *http.Request, userID return } + payload.Code = strings.TrimSpace(payload.Code) + payload.FullName = strings.TrimSpace(payload.FullName) + payload.Email = strings.TrimSpace(payload.Email) + payload.Mobile = strings.TrimSpace(payload.Mobile) + payload.Address = strings.TrimSpace(payload.Address) + + if payload.Code == "" { + http.Error(w, "Kullanıcı kodu zorunludur", http.StatusUnprocessableEntity) + return + } + tx, err := db.Begin() if err != nil { http.Error(w, "Transaction başlatılamadı", http.StatusInternalServerError) @@ -228,31 +241,81 @@ func handleUserUpdate(db *sql.DB, w http.ResponseWriter, r *http.Request, userID payload.Address, ) if err != nil { + log.Printf("❌ [UserDetail] UpdateUserHeader failed user_id=%d err=%v payload=%+v", userID, err, payload) http.Error(w, "Header güncellenemedi", http.StatusInternalServerError) return } - tx.Exec(`DELETE FROM dfrole_usr WHERE dfusr_id = $1`, userID) + if _, err := tx.Exec(`DELETE FROM dfrole_usr WHERE dfusr_id = $1`, userID); err != nil { + log.Printf("❌ [UserDetail] delete roles failed user_id=%d err=%v", userID, err) + http.Error(w, "Roller temizlenemedi", http.StatusInternalServerError) + return + } for _, code := range payload.Roles { - tx.Exec(queries.InsertUserRole, userID, code) + code = strings.TrimSpace(code) + if code == "" { + continue + } + if _, err := tx.Exec(queries.InsertUserRole, userID, code); err != nil { + log.Printf("❌ [UserDetail] insert role failed user_id=%d role=%q err=%v", userID, code, err) + http.Error(w, "Rol eklenemedi", http.StatusInternalServerError) + return + } } - tx.Exec(`DELETE FROM dfusr_dprt WHERE dfusr_id = $1`, userID) + if _, err := tx.Exec(`DELETE FROM dfusr_dprt WHERE dfusr_id = $1`, userID); err != nil { + log.Printf("❌ [UserDetail] delete departments failed user_id=%d err=%v", userID, err) + http.Error(w, "Departmanlar temizlenemedi", http.StatusInternalServerError) + return + } for _, d := range payload.Departments { - tx.Exec(queries.InsertUserDepartment, userID, d.Code) + code := strings.TrimSpace(d.Code) + if code == "" { + continue + } + if _, err := tx.Exec(queries.InsertUserDepartment, userID, code); err != nil { + log.Printf("❌ [UserDetail] insert department failed user_id=%d dept=%q err=%v", userID, code, err) + http.Error(w, "Departman eklenemedi", http.StatusInternalServerError) + return + } } - tx.Exec(`DELETE FROM dfusr_piyasa WHERE dfusr_id = $1`, userID) + if _, err := tx.Exec(`DELETE FROM dfusr_piyasa WHERE dfusr_id = $1`, userID); err != nil { + log.Printf("❌ [UserDetail] delete piyasalar failed user_id=%d err=%v", userID, err) + http.Error(w, "Piyasalar temizlenemedi", http.StatusInternalServerError) + return + } for _, p := range payload.Piyasalar { - tx.Exec(queries.InsertUserPiyasa, userID, p.Code) + code := strings.TrimSpace(p.Code) + if code == "" { + continue + } + if _, err := tx.Exec(queries.InsertUserPiyasa, userID, code); err != nil { + log.Printf("❌ [UserDetail] insert piyasa failed user_id=%d piyasa=%q err=%v", userID, code, err) + http.Error(w, "Piyasa eklenemedi", http.StatusInternalServerError) + return + } } - tx.Exec(`DELETE FROM dfusr_nebim_user WHERE dfusr_id = $1`, userID) + if _, err := tx.Exec(`DELETE FROM dfusr_nebim_user WHERE dfusr_id = $1`, userID); err != nil { + log.Printf("❌ [UserDetail] delete nebim users failed user_id=%d err=%v", userID, err) + http.Error(w, "Nebim kullanıcıları temizlenemedi", http.StatusInternalServerError) + return + } for _, n := range payload.NebimUsers { - tx.Exec(queries.InsertUserNebim, userID, n.Username) + username := strings.TrimSpace(n.Username) + if username == "" { + continue + } + if _, err := tx.Exec(queries.InsertUserNebim, userID, username); err != nil { + log.Printf("❌ [UserDetail] insert nebim user failed user_id=%d username=%q err=%v", userID, username, err) + http.Error(w, "Nebim kullanıcısı eklenemedi", http.StatusInternalServerError) + return + } } if err := tx.Commit(); err != nil { + log.Printf("❌ [UserDetail] commit failed user_id=%d err=%v", userID, err) http.Error(w, "Commit başarısız", http.StatusInternalServerError) return }