func (m *MessagesController) addOrRemoveTask(ctx *gin.Context, messageIn *messageJSON, message models.Message, user models.User, topic models.Topic) { info := "" if messageIn.Action == "task" { err := message.AddToTasks(user, topic) if err != nil { log.Errorf("Error while adding a message to tasks %s", err) ctx.AbortWithError(http.StatusInternalServerError, err) return } info = fmt.Sprintf("New Task created in %s", models.GetPrivateTopicTaskName(user)) } else if messageIn.Action == "untask" { err := message.RemoveFromTasks(user, topic) if err != nil { log.Errorf("Error while remove a message from tasks %s", err) ctx.AbortWithError(http.StatusInternalServerError, err) return } info = fmt.Sprintf("Task removed from %s", models.GetPrivateTopicTaskName(user)) } else { ctx.AbortWithError(http.StatusBadRequest, errors.New("Invalid action : "+messageIn.Action)) return } go models.WSMessage(&models.WSMessageJSON{Action: messageIn.Action, Username: user.Username, Message: message}) ctx.JSON(http.StatusCreated, gin.H{"info": info}) }