lib/app/stash-services.go

70 lines
2.0 KiB
Go
Raw Permalink Normal View History

2021-01-27 23:11:19 +00:00
package app
import (
"code.tnxs.net/taxnexus/lib/api/stash/stash_client/stash_pdf"
"code.tnxs.net/taxnexus/lib/api/stash/stash_models"
)
2021-01-28 01:58:08 +00:00
// StashPDFParams is a param type
2021-01-27 23:11:19 +00:00
type StashPDFParams struct {
document *Document
account *Account
objectType string
principal *User
}
2021-01-28 01:58:08 +00:00
// StashPDF stores a PDF in the stash database
2021-01-27 23:11:19 +00:00
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
}