docxTemplater/handlers/templateGroup.go

252 lines
5.2 KiB
Go
Raw Normal View History

package handlers
import (
"errors"
"github.com/Pena-Co-Ltd/amocrm_templategen_back/dal/model"
"github.com/gorilla/mux"
"net/http"
)
type ReqTemplateGroupCreate struct {
Name string `json:"name"`
}
type RespTemplateGroupCreate struct {
ID string `json:"id"`
}
func (h *Handlers) TemplateGroupCreate(w http.ResponseWriter, r *http.Request) {
var req ReqTemplateGroupCreate
amoData := getAmoByJwt(r)
if amoData == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&req, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if req.Name == "" {
h.reportError(w, errors.New("name required"), http.StatusBadRequest)
return
}
groupID, err := h.dal.TemplateGroup.Insert(r.Context(), &model.TemplateGroup{
UserID: amoData.UserID,
Name: req.Name,
})
sendResponse(w, http.StatusOK, &RespTemplateGroupCreate{ID: groupID})
}
func (h *Handlers) TemplateGroupGet(w http.ResponseWriter, r *http.Request) {
id := mux.Vars(r)["id"]
if id == "" {
h.reportError(w, errors.New("id required"), http.StatusBadRequest)
return
}
resp, err := h.dal.TemplateGroup.GetByID(r.Context(), id)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
sendResponse(w, http.StatusOK, &resp)
}
func (h *Handlers) TemplateGroupGetList(w http.ResponseWriter, r *http.Request) {
amoData := getAmoByJwt(r)
if amoData == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
resp, err := h.dal.TemplateGroup.GetListByUserID(r.Context(), amoData.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
sendResponse(w, http.StatusOK, &resp)
}
type ReqTemplateGroupEdit struct {
ID string `json:"id"`
Name string `json:"name"`
}
func (h *Handlers) TemplateGroupEdit(w http.ResponseWriter, r *http.Request) {
var req ReqTemplateGroupEdit
amoData := getAmoByJwt(r)
if amoData == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&req, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if req.ID == "" {
h.reportError(w, errors.New("id required"), http.StatusBadRequest)
return
}
if req.Name == "" {
h.reportError(w, errors.New("name required"), http.StatusBadRequest)
return
}
err = h.dal.TemplateGroup.Update(r.Context(), &model.TemplateGroup{
ID: req.ID,
UserID: amoData.UserID,
Name: req.Name,
})
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}
type ReqTemplateGroupDelete struct {
ID string `json:"id"`
}
func (h *Handlers) TemplateGroupDelete(w http.ResponseWriter, r *http.Request) {
var req ReqTemplateGroupDelete
amoData := getAmoByJwt(r)
if amoData == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&req, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if req.ID == "" {
2022-11-19 13:24:30 +00:00
h.reportError(w, errors.New("id required"), http.StatusBadRequest)
return
}
//TODO: Крайне желательно переписать на транзакции!
err = h.dal.Template.DeleteGroupFromAll(r.Context(), req.ID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
err = h.dal.TemplateGroup.Delete(r.Context(), req.ID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}
type ReqTemplateGroupPut struct {
GroupID string `json:"group_id"`
TemplateID string `json:"template_id"`
}
func (h *Handlers) TemplateGroupPut(w http.ResponseWriter, r *http.Request) {
var req ReqTemplateGroupPut
amoData := getAmoByJwt(r)
if amoData == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&req, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if req.TemplateID == "" {
h.reportError(w, errors.New("template_id required"), http.StatusBadRequest)
return
}
if req.GroupID == "" {
h.reportError(w, errors.New("group_id required"), http.StatusBadRequest)
return
}
err = h.dal.Template.PushGroup(r.Context(), req.TemplateID, req.GroupID, amoData.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}
type ReqTemplateGroupRemove struct {
GroupID string `json:"group_id"`
TemplateID string `json:"template_id"`
}
func (h *Handlers) TemplateGroupRemove(w http.ResponseWriter, r *http.Request) {
var req ReqTemplateGroupRemove
amoData := getAmoByJwt(r)
if amoData == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&req, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if req.TemplateID == "" {
h.reportError(w, errors.New("template_id required"), http.StatusBadRequest)
return
}
if req.GroupID == "" {
h.reportError(w, errors.New("group_id required"), http.StatusBadRequest)
return
}
err = h.dal.Template.PullGroup(r.Context(), req.TemplateID, req.GroupID, amoData.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
w.WriteHeader(http.StatusOK)
}