2701-как будто ок днд работает

This commit is contained in:
2026-01-27 12:09:54 +03:00
parent de4bd9c8d7
commit 1e2d43be8e
13 changed files with 10257 additions and 175 deletions

View File

@@ -1,6 +1,7 @@
package handlers
import (
"fmt"
"net/http"
"time"
@@ -73,6 +74,14 @@ type UpdateItemDTO struct {
EditedField string `json:"edited_field"` // "quantity", "price", "sum"
}
// ReorderItemsRequest DTO для переупорядочивания нескольких элементов
type ReorderItemsRequest struct {
Items []struct {
ID string `json:"id"`
Order int `json:"order"`
} `json:"items"`
}
func (h *DraftsHandler) AddDraftItem(c *gin.Context) {
draftID, err := uuid.Parse(c.Param("id"))
if err != nil {
@@ -303,14 +312,9 @@ func (h *DraftsHandler) DeleteDraft(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"status": newStatus, "id": id.String()})
}
// ReorderItems изменяет порядок позиции в черновике
// ReorderItems изменяет порядок нескольких позиций в черновике
func (h *DraftsHandler) ReorderItems(c *gin.Context) {
type ReorderRequest struct {
ItemID uuid.UUID `json:"item_id" binding:"required"`
NewOrder int `json:"new_order" binding:"required"`
}
var req ReorderRequest
var req ReorderItemsRequest
if err := c.ShouldBindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
return
@@ -323,7 +327,27 @@ func (h *DraftsHandler) ReorderItems(c *gin.Context) {
return
}
if err := h.service.ReorderItem(draftID, req.ItemID, req.NewOrder); err != nil {
// Преобразуем элементы в формат для сервиса
items := make([]struct {
ID uuid.UUID
Order int
}, len(req.Items))
for i, item := range req.Items {
id, err := uuid.Parse(item.ID)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"error": fmt.Sprintf("invalid item id: %s", item.ID)})
return
}
items[i] = struct {
ID uuid.UUID
Order int
}{
ID: id,
Order: item.Order,
}
}
if err := h.service.ReorderItems(draftID, items); err != nil {
c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}