62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package users
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"log"
|
|
"net/http"
|
|
|
|
core "fr.latosa-escrima/core"
|
|
"fr.latosa-escrima/core/models"
|
|
"fr.latosa-escrima/utils"
|
|
)
|
|
|
|
func HandleNew(w http.ResponseWriter, r *http.Request) {
|
|
ctx := context.Background()
|
|
var user models.User
|
|
err := json.NewDecoder(r.Body).Decode(&user)
|
|
if err != nil {
|
|
core.JSONError{
|
|
Status: core.Error,
|
|
Message: err.Error(),
|
|
}.Respond(w, http.StatusNotAcceptable)
|
|
return
|
|
}
|
|
log.Println("User : ", user)
|
|
|
|
res, err := user.Insert(core.DB, ctx)
|
|
log.Println(res)
|
|
|
|
if err != nil {
|
|
core.JSONError{
|
|
Status: core.Error,
|
|
Message: err.Error(),
|
|
}.Respond(w, http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
userRoles := utils.Map(user.Roles, func(role models.Role) models.UserToRole {
|
|
return models.UserToRole{
|
|
UserID: user.UserID,
|
|
RoleID: role.ID,
|
|
}
|
|
})
|
|
|
|
for _, userRole := range userRoles {
|
|
_, err := core.DB.NewInsert().Model(&userRole).Ignore().Exec(ctx)
|
|
if err != nil {
|
|
core.JSONError{
|
|
Status: core.Error,
|
|
Message: err.Error(),
|
|
}.Respond(w, http.StatusInternalServerError)
|
|
return
|
|
}
|
|
}
|
|
|
|
core.JSONSuccess{
|
|
Status: core.Success,
|
|
Message: "User inserted successfully.",
|
|
Data: nil,
|
|
}.Respond(w, http.StatusCreated)
|
|
}
|