70 lines
2.0 KiB
Go
70 lines
2.0 KiB
Go
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: params.Principal.ID,
|
|
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
|
|
}
|