2022-11-12 10:24:48 +00:00
|
|
|
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)
|
2022-11-12 10:24:48 +00:00
|
|
|
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)
|
|
|
|
}
|