From 8abd1584aa45239cce73455bf9ed5644fada0dc3 Mon Sep 17 00:00:00 2001 From: frikky Date: Sat, 14 Nov 2020 08:29:16 +0100 Subject: [PATCH] Fixed SMS and Email cloud services --- backend/go-app/main.go | 5 +- backend/go-app/walkoff.go | 102 +++++++++++++++++++++++++ frontend/src/views/AngularWorkflow.jsx | 8 +- 3 files changed, 110 insertions(+), 5 deletions(-) diff --git a/backend/go-app/main.go b/backend/go-app/main.go index 406a7c7b..97613010 100644 --- a/backend/go-app/main.go +++ b/backend/go-app/main.go @@ -6644,6 +6644,7 @@ type CloudSyncJob struct { SecondaryItem string `json:"secondary_item" datastore:"secondary_item"` ThirdItem string `json:"third_item" datastore:"third_item"` FourthItem string `json:"fourth_item" datastore:"fourth_item"` + FifthItem string `json:"fifth_item" datastore:"fifth_item"` Created string `json:"created" datastore:"created"` } @@ -7231,7 +7232,7 @@ func runInit(ctx context.Context) { job := func() { err := remoteOrgJobHandler(org, interval) if err != nil { - log.Printf("Failed request with remote org setup (2): %s", err) + log.Printf("[ERROR] Failed request with remote org setup (2): %s", err) } } @@ -7844,7 +7845,7 @@ func handleCloudSetup(resp http.ResponseWriter, request *http.Request) { job := func() { err := remoteOrgJobHandler(*org, interval) if err != nil { - log.Printf("Failed request with remote org setup (1): %s", err) + log.Printf("[ERROR] Failed request with remote org setup (1): %s", err) } } diff --git a/backend/go-app/walkoff.go b/backend/go-app/walkoff.go index 1eef8da3..baa32501 100644 --- a/backend/go-app/walkoff.go +++ b/backend/go-app/walkoff.go @@ -1817,6 +1817,108 @@ func saveWorkflow(resp http.ResponseWriter, request *http.Request) { } else if hook.Id == "" { trigger.Status = "stopped" } + } else if trigger.TriggerType == "USERINPUT" { + // E.g. check email + sms := "" + email := "" + triggerType := "" + triggerInformation := "" + for _, item := range trigger.Parameters { + if item.Name == "alertinfo" { + triggerInformation = item.Value + } else if item.Name == "type" { + triggerType = item.Value + } else if item.Name == "email" { + email = item.Value + } else if item.Name == "sms" { + sms = item.Value + } + } + + // FIXME: This is not the right time to send them, BUT it's well served for testing. Save -> send email / sms + if strings.Contains(triggerType, "email") { + if email == "test@test.com" { + log.Printf("Email isn't specified during save.") + resp.WriteHeader(401) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "Email field in user input can't be empty"}`))) + return + } + + // triggerid, start node, workflowid, argument + /* + startNode := "" + referenceExecutionId := "" + action := CloudSyncJob{ + Type: "user_input", + Action: "send_email", + OrgId: user.ActiveOrg.Id, + PrimaryItemId: workflow.ID, + SecondaryItem: startNode, + ThirdItem: triggerInformation, + FourthItem: email, + FifthItem: referenceExecutionId, + } + + org, err := getOrg(ctx, user.ActiveOrg.Id) + if err != nil { + log.Printf("Failed email send to cloud", err) + resp.WriteHeader(401) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "%s"}`, err))) + return + } + + err = executeCloudAction(action, org.SyncConfig.Apikey) + if err != nil { + log.Printf("Failed email send to cloud", err) + resp.WriteHeader(401) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "%s"}`, err))) + return + } + */ + + log.Printf("Should send email to %s during execution.", email) + } + if strings.Contains(triggerType, "sms") { + if sms == "0000000" { + log.Printf("Email isn't specified during save.") + resp.WriteHeader(401) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "SMS field in user input can't be empty"}`))) + return + } + + /* + startNode := "" + referenceExecutionId := "" + action := CloudSyncJob{ + Type: "user_input", + Action: "send_sms", + OrgId: user.ActiveOrg.Id, + PrimaryItemId: workflow.ID, + SecondaryItem: startNode, + ThirdItem: triggerInformation, + FourthItem: sms, + FifthItem: referenceExecutionId, + } + + org, err := getOrg(ctx, user.ActiveOrg.Id) + if err != nil { + log.Printf("Failed email send to cloud", err) + resp.WriteHeader(401) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "%s"}`, err))) + return + } + + err = executeCloudAction(action, org.SyncConfig.Apikey) + if err != nil { + log.Printf("Failed email send to cloud", err) + resp.WriteHeader(401) + resp.Write([]byte(fmt.Sprintf(`{"success": false, "reason": "%s"}`, err))) + return + } + */ + + log.Printf("Should send SMS to %s during execution.", sms) + } } //log.Println("TRIGGERS") diff --git a/frontend/src/views/AngularWorkflow.jsx b/frontend/src/views/AngularWorkflow.jsx index b8e15488..7aff28dc 100644 --- a/frontend/src/views/AngularWorkflow.jsx +++ b/frontend/src/views/AngularWorkflow.jsx @@ -1924,7 +1924,7 @@ const AngularWorkflow = (props) => { "errors": null, "is_valid": true, "label": "User input", - "environment": "onprem", + "environment": "cloud", "long_description": "Take user input to continue execution", }, { @@ -4995,7 +4995,8 @@ const AngularWorkflow = (props) => { fullWidth color="primary" placeholder={"mail1@company.com,mail2@company.com"} - onChange={(event) => { + defaultValue={workflow.triggers[selectedTriggerIndex].parameters[3].value} + onBlur={(event) => { workflow.triggers[selectedTriggerIndex].parameters[3].value = event.target.value setWorkflow(workflow) setUpdate(Math.random()) @@ -5018,7 +5019,8 @@ const AngularWorkflow = (props) => { fullWidth color="primary" placeholder={"+474823212,+460203042"} - onChange={(event) => { + defaultValue={workflow.triggers[selectedTriggerIndex].parameters[4].value} + onBlur={(event) => { workflow.triggers[selectedTriggerIndex].parameters[4].value = event.target.value setWorkflow(workflow) setUpdate(Math.random())