Merge remote-tracking branch 'origin/master'

This commit is contained in:
2026-02-13 21:00:39 +03:00
parent 16eff8d0f7
commit a422569c87
2 changed files with 459 additions and 0 deletions

View File

@@ -0,0 +1,115 @@
package routes
import (
"bssapp-backend/auth"
"bssapp-backend/db"
"bssapp-backend/models"
"bssapp-backend/queries"
"database/sql"
"encoding/json"
"log"
"net/http"
"strings"
)
type bulkCloseOrdersRequest struct {
OrderNumbers []string `json:"order_numbers"`
}
func OrderCloseReadyListRoute(mssqlDB *sql.DB) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
raw := r.URL.Query().Get("search")
search := strings.TrimSpace(raw)
rows, err := queries.GetOrderListCloseReady(
r.Context(),
mssqlDB,
db.PgDB,
search,
)
if err != nil {
log.Printf("❌ close-ready list query error: %v", err)
http.Error(w, "Veritabanı hatası", http.StatusInternalServerError)
return
}
defer rows.Close()
list := make([]models.OrderList, 0, 100)
for rows.Next() {
var o models.OrderList
if err := rows.Scan(
&o.OrderHeaderID,
&o.OrderNumber,
&o.OrderDate,
&o.CurrAccCode,
&o.CurrAccDescription,
&o.MusteriTemsilcisi,
&o.Piyasa,
&o.CreditableConfirmedDate,
&o.DocCurrencyCode,
&o.TotalAmount,
&o.TotalAmountUSD,
&o.PackedAmount,
&o.PackedUSD,
&o.PackedRatePct,
&o.IsCreditableConfirmed,
&o.Description,
&o.ExchangeRateUSD,
); err != nil {
log.Printf("⚠️ close-ready scan error: %v", err)
continue
}
list = append(list, o)
}
if err := rows.Err(); err != nil {
log.Printf("⚠️ close-ready rows err: %v", err)
}
_ = json.NewEncoder(w).Encode(list)
})
}
func OrderBulkCloseRoute(mssqlDB *sql.DB) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=utf-8")
var req bulkCloseOrdersRequest
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
http.Error(w, "Geçersiz JSON", http.StatusBadRequest)
return
}
if len(req.OrderNumbers) == 0 {
http.Error(w, "order_numbers zorunludur", http.StatusBadRequest)
return
}
updatedBy := "SYSTEM"
if claims, ok := auth.GetClaimsFromContext(r.Context()); ok && claims != nil {
if u := strings.TrimSpace(claims.Username); u != "" {
updatedBy = u
}
}
affected, err := queries.BulkCloseOrders(
r.Context(),
mssqlDB,
db.PgDB,
req.OrderNumbers,
updatedBy,
)
if err != nil {
log.Printf("❌ bulk close failed: %v", err)
http.Error(w, "Toplu kapatma sırasında hata oluştu", http.StatusInternalServerError)
return
}
_ = json.NewEncoder(w).Encode(map[string]any{
"success": true,
"affected": affected,
})
})
}