mirror of
https://github.com/serty2005/rmser.git
synced 2026-02-04 19:02:33 -06:00
2701-как будто ок днд работает
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user