From 743eae5aadf46c9e8a6d2b7daa62f136af01eb45 Mon Sep 17 00:00:00 2001 From: Harvey Kandola Date: Wed, 18 Jul 2018 17:57:17 -0400 Subject: [PATCH] Templates document carry forward categories --- domain/category/endpoint.go | 1 - domain/template/endpoint.go | 47 +++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/domain/category/endpoint.go b/domain/category/endpoint.go index c696a83a..717fe85b 100644 --- a/domain/category/endpoint.go +++ b/domain/category/endpoint.go @@ -424,7 +424,6 @@ func (h *Handler) GetDocumentCategoryMembership(w http.ResponseWriter, r *http.R response.WriteServerError(w, method, err) return } - if len(cat) == 0 { cat = []category.Category{} } diff --git a/domain/template/endpoint.go b/domain/template/endpoint.go index f3755893..0465fa9a 100644 --- a/domain/template/endpoint.go +++ b/domain/template/endpoint.go @@ -15,6 +15,7 @@ import ( "database/sql" "encoding/json" "fmt" + "github.com/documize/community/model/category" "io/ioutil" "net/http" @@ -197,6 +198,7 @@ func (h *Handler) SaveAs(w http.ResponseWriter, r *http.Request) { return } + // Clone attachments. for _, a := range attachments { err = h.Store.Attachment.Add(ctx, a) @@ -208,6 +210,7 @@ func (h *Handler) SaveAs(w http.ResponseWriter, r *http.Request) { } } + // Clone sections. for _, m := range pageModel { err = h.Store.Page.Add(ctx, m) @@ -219,6 +222,28 @@ func (h *Handler) SaveAs(w http.ResponseWriter, r *http.Request) { } } + // Clone categories. + cats, err := h.Store.Category.GetDocumentCategoryMembership(ctx, model.DocumentID) + if err != nil && err != sql.ErrNoRows { + response.WriteServerError(w, method, err) + h.Runtime.Log.Error(method, err) + return + } + for _, c := range cats { + var cc category.Member + cc.OrgID = c.OrgID + cc.CategoryID = c.RefID + cc.RefID = uniqueid.Generate() + cc.DocumentID = docID + cc.LabelID = doc.LabelID + err = h.Store.Category.AssociateDocument(ctx, cc) + if err != nil && err != sql.ErrNoRows { + response.WriteServerError(w, method, err) + h.Runtime.Log.Error(method, err) + return + } + } + // Commit and return new document template ctx.Transaction.Commit() @@ -380,6 +405,28 @@ func (h *Handler) Use(w http.ResponseWriter, r *http.Request) { } } + // Clone categories. + cats, err := h.Store.Category.GetDocumentCategoryMembership(ctx, templateID) + if err != nil && err != sql.ErrNoRows { + response.WriteServerError(w, method, err) + h.Runtime.Log.Error(method, err) + return + } + for _, c := range cats { + var cc category.Member + cc.OrgID = c.OrgID + cc.CategoryID = c.RefID + cc.RefID = uniqueid.Generate() + cc.DocumentID = d.RefID + cc.LabelID = d.LabelID + err = h.Store.Category.AssociateDocument(ctx, cc) + if err != nil && err != sql.ErrNoRows { + response.WriteServerError(w, method, err) + h.Runtime.Log.Error(method, err) + return + } + } + ctx.Transaction.Commit() h.Store.Audit.Record(ctx, audit.EventTypeTemplateUse)