package Messages
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"github.com/gofrs/uuid"
|
|
|
|
"git.tovijaeschke.xyz/tovi/Envelope/Backend/Database"
|
|
)
|
|
|
|
// RawCreateConversationData for holding POST payload
|
|
type RawCreateConversationData struct {
|
|
ID string `json:"id"`
|
|
Name string `json:"name"`
|
|
TwoUser string `json:"two_user"`
|
|
AdminAddMembers string `json:"admin_add_members"`
|
|
AdminEditInfo string `json:"admin_edit_info"`
|
|
AdminSendMessages string `json:"admin_send_messages"`
|
|
Users []Database.ConversationDetailUser `json:"users"`
|
|
UserConversations Database.UserConversationList `json:"user_conversations"`
|
|
}
|
|
|
|
// CreateConversation creates ConversationDetail, ConversationDetailUsers and UserConversations
|
|
func CreateConversation(w http.ResponseWriter, r *http.Request) {
|
|
var (
|
|
rawConversationData RawCreateConversationData
|
|
messageThread Database.ConversationDetail
|
|
err error
|
|
)
|
|
|
|
err = json.NewDecoder(r.Body).Decode(&rawConversationData)
|
|
if err != nil {
|
|
http.Error(w, "Error", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
messageThread = Database.ConversationDetail{
|
|
Base: Database.Base{
|
|
ID: uuid.FromStringOrNil(rawConversationData.ID),
|
|
},
|
|
Name: rawConversationData.Name,
|
|
TwoUser: rawConversationData.TwoUser,
|
|
AdminAddMembers: rawConversationData.AdminAddMembers,
|
|
AdminEditInfo: rawConversationData.AdminEditInfo,
|
|
AdminSendMessages: rawConversationData.AdminSendMessages,
|
|
Users: rawConversationData.Users,
|
|
}
|
|
|
|
err = (&messageThread).CreateConversationDetail()
|
|
if err != nil {
|
|
http.Error(w, "Error", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
err = (&rawConversationData.UserConversations).CreateUserConversations()
|
|
if err != nil {
|
|
http.Error(w, "Error", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
w.WriteHeader(http.StatusNoContent)
|
|
}
|