79 lines
1.6 KiB
Go
79 lines
1.6 KiB
Go
package handler
|
|
|
|
import (
|
|
"astra-users/model"
|
|
"astra-users/pkg/utils"
|
|
"github.com/labstack/echo/v4"
|
|
"net/http"
|
|
)
|
|
|
|
func (h *Handler) CreateOrganization(c echo.Context) (err error) {
|
|
organization := new(model.OrganizationApi)
|
|
|
|
if err = c.Bind(organization); err != nil {
|
|
return c.NoContent(http.StatusBadRequest)
|
|
}
|
|
|
|
newOrg, err := utils.TypeConverter[model.Organization](organization)
|
|
|
|
tx := h.DB.Create(&newOrg)
|
|
|
|
if tx.RowsAffected == 0 {
|
|
return c.NoContent(http.StatusBadGateway)
|
|
}
|
|
|
|
return c.JSON(http.StatusCreated, newOrg)
|
|
}
|
|
|
|
func (h *Handler) GetOrganizations(c echo.Context) error {
|
|
var organizations []model.Organization
|
|
|
|
h.DB.Find(&organizations)
|
|
|
|
return c.JSON(http.StatusOK, organizations)
|
|
}
|
|
|
|
func (h *Handler) DeleteOrganization(c echo.Context) error {
|
|
id := c.Param("id")
|
|
|
|
tx := h.DB.Model(model.Organization{}).Delete(id)
|
|
|
|
if tx.RowsAffected == 0 {
|
|
return c.NoContent(http.StatusNotFound)
|
|
}
|
|
|
|
return c.NoContent(http.StatusOK)
|
|
}
|
|
|
|
func (h *Handler) UpdateOrganization(c echo.Context) (err error) {
|
|
id := c.Param("id")
|
|
organization := new(model.OrganizationApi)
|
|
var newOrganization model.Organization
|
|
|
|
if err = c.Bind(organization); err != nil {
|
|
return c.NoContent(http.StatusBadRequest)
|
|
}
|
|
|
|
tx := h.DB.Find(&newOrganization, id)
|
|
|
|
if tx.RowsAffected == 0 {
|
|
return c.NoContent(http.StatusNotFound)
|
|
}
|
|
|
|
if organization.Name != "" {
|
|
newOrganization.Name = organization.Name
|
|
}
|
|
|
|
if organization.ParentID.ID() != 0 {
|
|
newOrganization.ParentID = organization.ParentID
|
|
}
|
|
|
|
tx = tx.Save(&newOrganization)
|
|
|
|
if tx.RowsAffected == 0 {
|
|
return c.NoContent(http.StatusBadGateway)
|
|
}
|
|
|
|
return c.NoContent(http.StatusOK)
|
|
}
|