set selected tags in edititem

This commit is contained in:
2025-04-16 01:55:40 +02:00
parent ae36903e73
commit d17c33f6ee
3 changed files with 50 additions and 13 deletions

View File

@@ -432,15 +432,45 @@ func (rc *shopItemController) AddItemsHandler(c *gin.Context) {
c.HTML(http.StatusOK, "batchupload.html", data)
}
func (rc *shopItemController) EditItemView(c *gin.Context) {
shopItem, err := repositories.ShopItems.GetById(c.Param("id"))
tags, err := repositories.Tags.GetAll()
func GetCheckedTags(item models.ShopItem) ([]models.CheckedTag, error) {
allTags, err := repositories.Tags.GetAll()
if err != nil {
c.HTML(http.StatusBadRequest, "edititem.html", gin.H{"error": err})
return nil, err
}
fmt.Println(shopItem)
var tags []models.CheckedTag
for _, tag := range allTags {
tmpTag := models.CheckedTag{
Tag: tag,
Checked: "",
}
for _, itemTag := range item.Tags {
if itemTag.Name == tmpTag.Name {
tmpTag.Checked = "checked"
break
}
}
tags = append(tags, tmpTag)
}
return tags, nil
}
func (rc *shopItemController) EditItemView(c *gin.Context) {
shopItem, err := repositories.ShopItems.GetById(c.Param("id"))
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
}
tags, err := GetCheckedTags(shopItem)
if err != nil {
c.HTML(http.StatusBadRequest, "error.html", gin.H{"error": err})
}
data := CreateSessionData(c, gin.H{
"error": "",
@@ -489,7 +519,7 @@ func (rc *shopItemController) EditItemHandler(c *gin.Context) {
newShopItem.PrintMode = shopItem.PrintMode
tags, err := repositories.Tags.GetAll()
tags, err := GetCheckedTags(newShopItem)
if err != nil {
c.HTML(http.StatusBadRequest, "edititem.html", gin.H{"error": err})
return
@@ -498,9 +528,10 @@ func (rc *shopItemController) EditItemHandler(c *gin.Context) {
_, err = repositories.ShopItems.Update(newShopItem)
if err != nil {
data := CreateSessionData(c, gin.H{
"error": err,
"success": "",
"tags": tags,
"error": err,
"success": "",
"shopItem": newShopItem,
"tags": tags,
})
c.HTML(http.StatusOK, "edititem.html", data)
@@ -508,9 +539,10 @@ func (rc *shopItemController) EditItemHandler(c *gin.Context) {
}
data := CreateSessionData(c, gin.H{
"error": "",
"success": fmt.Sprintf("Item '%s' Updated", newShopItem.Name),
"tags": tags,
"error": "",
"success": fmt.Sprintf("Item '%s' Updated", newShopItem.Name),
"shopItem": newShopItem,
"tags": tags,
})
c.HTML(http.StatusOK, "edititem.html", data)