package app import ( "code.tnxs.net/taxnexus/lib/api/stash/stash_client/stash_pdf" "code.tnxs.net/taxnexus/lib/api/stash/stash_models" ) // StashPDFParams is a param type type StashPDFParams struct { document *Document account *Account objectType string principal *User } // StashPDF stores a PDF in the stash database func StashPDF(params StashPDFParams) (*Document, error) { sugar.Debugf("render.stashPDF: 📥") var title string var fileName string var description string var ref string switch params.objectType { case "account": title = "Taxnexus Report for " + params.account.Name fileName = "Taxnexus Report for " + params.account.Name + ".pdf" description = "Account Report generated by render" ref = "render.getAccounts" case "tax_summary": title = "Taxnexus Tax Report for " + params.account.Name fileName = params.account.Name + " Tax Report.pdf" description = "CDTFA Quarterly District Sales and Use Tax for " ref = "render.getTaxes" } stashParams := stash_pdf.NewPostPdfsParamsWithTimeout(getTimeout) stashParams.PDFRequest = &stash_models.PDFRequest{ Data: []*stash_models.NewPDF{ { Description: description, Filename: fileName, HTML: params.document.HTML, ObjectType: params.document.SagaType, OwnerID: "fabric", // todo #6 make OwnerID in new PDF real ParentID: params.document.ParentID, Ref: ref, Title: title, }, }, } response, err := stashClient.StashPdf.PostPdfs(stashParams, params.principal.Auth) if err != nil { sugar.Errorf("render.stashPDF: 💣 ⛔ post PDF to stash error %w", err) return nil, err } var newObj *stash_models.Document for _, itm := range response.Payload.Data { // single iteration execution newObj = itm } sugar.Debugf("render.stashPDF: 👍 📤") return &Document{ ID: newObj.ID, Filename: params.account.Name + fileName, SagaType: params.document.SagaType, ParentID: params.document.ParentID, Title: title + params.account.Name, URI: newObj.URI, }, nil }