// TransactionCreate will create a transaction that occurs // between two users in a group // @parameters // @requires type // @requires amount // @requires relatedObjectId // @requires relatedObjectType // @requires recipientId // @requires senderid // @optional memo // @returns the newly created transaction func TransactionCreate(c *gin.Context) { var t models.Transaction buffer, err := ioutil.ReadAll(c.Request.Body) if err != nil { c.AbortWithError(http.StatusNotAcceptable, err) } err2 := jsonapi.Unmarshal(buffer, &t) if err2 != nil { parseFail := appError.JSONParseFailure parseFail.Detail = err2.Error() c.AbortWithError(http.StatusMethodNotAllowed, err2). SetMeta(parseFail) return } t.CreatorID = c.Keys["CurrentUserID"].(uint) // Validate our new transaction isValid, errApp := t.Validate() if isValid == false { c.AbortWithError(errApp.Status, errApp). SetMeta(errApp) return } database.DBCon.Create(&t) database.DBCon.First(&t.Recipient, t.RecipientID) database.DBCon.First(&t.Sender, t.SenderID) database.DBCon.First(&t.Creator, t.CreatorID) data, err := jsonapi.Marshal(&t) if err != nil { c.AbortWithError(http.StatusInternalServerError, err). SetMeta(appError.JSONParseFailure) return } c.Data(http.StatusCreated, "application/vnd.api+json", data) }