docxTemplater/handlers/template.go

296 lines
6.4 KiB
Go
Raw Normal View History

2022-07-28 15:00:43 +00:00
package handlers
import (
"errors"
"github.com/Pena-Co-Ltd/amocrm_templategen_back/dal/model"
2022-07-28 15:00:43 +00:00
"net/http"
)
type RespTemplateNew struct {
Name string `json:"name"`
Filename string `json:"filename"`
Storage string `json:"storage"`
}
func (h *Handlers) TemplateNew(w http.ResponseWriter, r *http.Request) {
var resp RespTemplateNew
user := getJwtUser(r)
if user == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&resp, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if resp.Name == "" || resp.Filename == "" {
err = errors.New("got empty name or filename")
h.reportError(w, err, http.StatusBadRequest)
return
}
_, err = h.dal.Template.Insert(r.Context(), &model.Template{
UserID: user.UserID,
Name: resp.Name,
Filename: resp.Filename,
StorageID: resp.Storage,
2022-07-28 15:00:43 +00:00
IsDeleted: false,
})
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
}
func (h *Handlers) TemplateGetListByUser(w http.ResponseWriter, r *http.Request) {
user := getJwtUser(r)
if user == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
result, err := h.dal.Template.GetListByUserID(r.Context(), user.UserID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
sendResponse(w, 200, result)
}
type RespTemplateGetByID struct {
ID string `json:"id"`
}
func (h *Handlers) TemplateGetByID(w http.ResponseWriter, r *http.Request) {
var resp RespTemplateGetByID
user := getJwtUser(r)
if user == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&resp, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if resp.ID == "" {
h.reportError(w, err, http.StatusBadRequest)
return
}
result, err := h.dal.Template.GetByID(r.Context(), resp.ID)
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
sendResponse(w, 200, result)
}
type RespTemplateUpdate struct {
ID string `json:"id"`
Name string `json:"name"`
TemplateFilename string `json:"template_filename"`
}
func (h *Handlers) TemplateUpdate(w http.ResponseWriter, r *http.Request) {
var resp RespTemplateUpdate
user := getJwtUser(r)
if user == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&resp, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if resp.Name == "" && resp.TemplateFilename == "" {
h.reportError(w, err, http.StatusBadRequest)
return
}
record := &model.Template{
ID: resp.ID,
UserID: user.UserID,
Name: resp.Name,
Filename: resp.TemplateFilename,
}
if resp.ID != "" {
err = h.dal.Template.UpdateByID(r.Context(), record)
} else {
err = h.dal.Template.UpdateByNameAndUserID(r.Context(), record)
}
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
sendResponse(w, 200, nil)
}
type RespTemplateDelete struct {
ID string `json:"id"`
Name string `json:"name"`
}
func (h *Handlers) TemplateDelete(w http.ResponseWriter, r *http.Request) {
var resp RespTemplateDelete
user := getJwtUser(r)
if user == nil {
h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
return
}
err := decodePost(&resp, r)
if err != nil {
h.reportError(w, err, http.StatusBadRequest)
return
}
if resp.ID == "" && resp.Name == "" {
h.reportError(w, err, http.StatusBadRequest)
return
}
if resp.ID != "" {
err = h.dal.Template.DeleteByID(r.Context(), resp.ID)
} else {
err = h.dal.Template.DeleteByNameAndUserID(r.Context(), resp.Name, user.UserID)
}
if err != nil {
h.reportError(w, err, http.StatusInternalServerError)
return
}
sendResponse(w, 200, nil)
}
type RespTemplateInit struct {
EventName string `json:"event_name"`
Data map[string]interface{} `json:"data"`
}
func (h *Handlers) TemplateInit(w http.ResponseWriter, r *http.Request) {
//var resp RespTemplateInit
//
//user := getJwtUser(r)
//
//if user == nil {
// h.reportError(w, ErrorUnauthorized, http.StatusUnauthorized)
// return
//}
//
//err := decodePost(&resp, r)
//
//if err != nil {
// h.reportError(w, err, http.StatusBadRequest)
// return
//}
//
//// Ищем ивент
//t, err := h.dal.Template.GetByNameAndUserID(r.Context(), resp.EventName, user.UserID)
//
//if err != nil {
// h.reportError(w, err, http.StatusInternalServerError)
// return
//}
//
//if t == nil {
// h.reportError(w, errors.New("template not found"), http.StatusNotFound)
// return
//}
//
//YaDiskData, err := h.dal.YaDisk.GetByUserID(r.Context(), user.UserID)
//if err != nil {
// h.reportError(w, err, http.StatusInternalServerError)
// return
//}
//
//if YaDiskData == nil {
// h.reportError(w, errors.New("YaDisk not found"), http.StatusNotFound)
// return
//}
//
//// download file
//token := &oauth2.Token{
// AccessToken: YaDiskData.AccessToken,
// TokenType: YaDiskData.TokenType,
// RefreshToken: YaDiskData.RefreshToken,
// Expiry: YaDiskData.ExpiresIn,
//}
//
//if !token.Valid() {
// h.reportError(w, errors.New("invalid yandex token"), http.StatusForbidden)
// return
//}
//
//client := h.YaDisk.NewClient(token)
//
//res, err := client.GetResources(YaDiskData.TemplateFolder + "/" + t.Filename)
//
//if res == nil {
// h.reportError(w, errors.New("resource in yandex disk not found"), http.StatusNotFound)
// return
//}
//downloadFileName := fmt.Sprintf("./tmp/downloaded/%v_%v", t.UserID, t.Filename)
//
//err = templategen.DownloadDocument(downloadFileName, res.File)
//if err != nil {
// h.reportError(w, err, http.StatusInternalServerError)
// return
//}
//
//// parsing file
//dc, err := docTemp.GetTemplate(downloadFileName)
//if err != nil {
// h.reportError(w, err, http.StatusInternalServerError)
// return
//}
//
//dc.Parse()
//
//saveFilename := fmt.Sprintf("%v_%v_%v", t.UserID, time.Now().Unix(), t.Filename)
//err = dc.Execute("./tmp/parsed/"+saveFilename, resp.Data)
//if err != nil {
// h.reportError(w, err, http.StatusInternalServerError)
// return
//}
//
//// Send to Yandex Disk
//
//err = client.ResourcesUpload(YaDiskData.SaveFolder+"/"+saveFilename, "https://solweb.site/tmp/parsed/"+saveFilename)
//if err != nil {
// h.reportError(w, err, http.StatusInternalServerError)
// return
//}
//
//fmt.Println("https://solweb.site/tmp/parsed/" + saveFilename)
2022-07-28 15:00:43 +00:00
}