125 lines
3.0 KiB
Go
125 lines
3.0 KiB
Go
|
package rules
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
|
||
|
"code.tnxs.net/taxnexus/lib/app"
|
||
|
"go.temporal.io/sdk/workflow"
|
||
|
)
|
||
|
|
||
|
// NewDeveloperWorkflowWrapper wraps a contact, account, payment method with auth and saga info
|
||
|
type NewDeveloperWorkflowWrapper struct {
|
||
|
AccountName string
|
||
|
BillingStreet string
|
||
|
BillingCity string
|
||
|
BillingState string
|
||
|
BillingPostalCode string
|
||
|
Company string
|
||
|
Description string
|
||
|
Email string
|
||
|
FirstName string
|
||
|
LastName string
|
||
|
MobilePhone string
|
||
|
Name string
|
||
|
Phone string
|
||
|
Title string
|
||
|
Website string
|
||
|
APIKey string
|
||
|
SagaID string
|
||
|
SagaType string
|
||
|
}
|
||
|
|
||
|
// NewDeveloperWorkflow is a Temporal workflow
|
||
|
func NewDeveloperWorkflow(ctx workflow.Context, w NewDeveloperWorkflowWrapper) error { //nolint:gocritic // don't care
|
||
|
ctx = workflow.WithActivityOptions(ctx, workflow.ActivityOptions{
|
||
|
StartToCloseTimeout: time.Minute,
|
||
|
})
|
||
|
err := workflow.ExecuteActivity(ctx,
|
||
|
StoreContactActivity,
|
||
|
app.ContactActivityWrapper{
|
||
|
Description: w.Description,
|
||
|
Email: w.Email,
|
||
|
FirstName: w.FirstName,
|
||
|
LastName: w.LastName,
|
||
|
MobilePhone: w.MobilePhone,
|
||
|
Name: w.Name,
|
||
|
Phone: w.Phone,
|
||
|
Title: w.Title,
|
||
|
APIKey: w.APIKey,
|
||
|
SagaID: w.SagaID,
|
||
|
SagaType: w.SagaType,
|
||
|
}).Get(ctx, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
err = workflow.ExecuteActivity(ctx,
|
||
|
StoreAccountActivity,
|
||
|
&app.AccountActivityWrapper{
|
||
|
APIKey: w.APIKey,
|
||
|
SagaID: w.SagaID,
|
||
|
SagaType: w.SagaType,
|
||
|
//
|
||
|
Description: w.Description,
|
||
|
Email: w.Email,
|
||
|
Name: w.AccountName,
|
||
|
}).Get(ctx, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
err = workflow.ExecuteActivity(ctx,
|
||
|
StorePaymentMethodActivity,
|
||
|
&app.PaymentMethodActivityWrapper{
|
||
|
APIKey: w.APIKey,
|
||
|
SagaID: w.SagaID,
|
||
|
SagaType: w.SagaType,
|
||
|
//
|
||
|
AccountID: "todo fix this",
|
||
|
AchAccountType: "",
|
||
|
AchBankAccount: "",
|
||
|
AchRouting: "",
|
||
|
Active: false,
|
||
|
Autopay: false,
|
||
|
BankName: "",
|
||
|
BillingContactID: "",
|
||
|
CCnumber: "",
|
||
|
CCtype: "",
|
||
|
ContractID: "",
|
||
|
Default: false,
|
||
|
ExpirationMonth: "",
|
||
|
ExpirationYear: "",
|
||
|
Gateway: "",
|
||
|
GatewayKey: "",
|
||
|
Nickname: "",
|
||
|
RecordType: "",
|
||
|
Ref: "",
|
||
|
TenantID: "",
|
||
|
}).Get(ctx, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
err = workflow.ExecuteActivity(ctx,
|
||
|
NotifyContactActivity,
|
||
|
&app.ContactActivityWrapper{
|
||
|
APIKey: w.APIKey,
|
||
|
SagaID: w.SagaID,
|
||
|
SagaType: w.SagaType,
|
||
|
//
|
||
|
Description: w.Description,
|
||
|
Email: w.Email,
|
||
|
FirstName: w.FirstName,
|
||
|
LastName: w.LastName,
|
||
|
MobilePhone: w.MobilePhone,
|
||
|
Name: w.Name,
|
||
|
Phone: w.Phone,
|
||
|
Title: w.Title,
|
||
|
}).Get(ctx, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
err = workflow.ExecuteActivity(ctx, NotifyLeadActivity, w).Get(ctx, nil)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|