Files
houston-be/service/request/resolve_incident_request.go
Vijay Joshi 4dcffd1e72 INFRA-3811 : Remove severity, business affected, contributing factors,additional tags and add impact in QA Houston (#457)
* INFRA-3811 : Remove severity, business affected, contributing factors, additional tags and add impact

* INFRA-3811 : PR Review comments
2024-09-23 12:17:04 +05:30

67 lines
2.3 KiB
Go

package service
import (
"github.com/slack-go/slack"
"go.uber.org/zap"
"houston/common/tag"
"houston/common/util/env"
slackUtil "houston/common/util/slack"
stringUtil "houston/common/util/string"
"houston/logger"
"strconv"
)
type ResolveIncidentRequest struct {
IncidentID uint `json:"incident_id"`
BusinessAffected []uint `json:"business_affected"`
ContributingFactors uint `json:"contributing_factors"`
AdditionalTags []uint `json:"additional_tags"`
RcaSummary string `json:"rca_summary"`
JiraLinks []string `json:"jira_links"`
IssueTypes []uint `json:"issue_types"`
Impact string `json:"impact"`
}
func ConvertSlackActionToResolveIncidentRequest(
actions map[string]slack.BlockAction,
incidentId uint,
) (*ResolveIncidentRequest, error) {
var resolveIncidentRequest ResolveIncidentRequest
resolveIncidentRequest.IncidentID = incidentId
if !env.IsQAApp() {
businessAffected, err := slackUtil.GetMultiValueArrayFromSlackOptionBlock(actions["business_affected_action_id"].SelectedOptions)
if err != nil {
logger.Error("Error while getting business affected", zap.Error(err))
}
resolveIncidentRequest.BusinessAffected = businessAffected
contributingFactor := actions["contributing_factors_action_id"].SelectedOption.Value
contributingFactorID, err := strconv.Atoi(contributingFactor)
if err != nil {
return nil, err
}
resolveIncidentRequest.ContributingFactors = uint(contributingFactorID)
additionalTags, err := slackUtil.GetMultiValueArrayFromSlackOptionBlock(actions["additional_tags_action_id"].SelectedOptions)
if err != nil {
logger.Error("Error while getting additional tags", zap.Error(err))
}
resolveIncidentRequest.AdditionalTags = additionalTags
} else {
issueTypes, err := slackUtil.GetMultiValueArrayFromSlackOptionBlock(actions[tag.IssueTypesActionID].SelectedOptions)
if err != nil {
logger.Error("Error while getting issue types", zap.Error(err))
}
resolveIncidentRequest.IssueTypes = issueTypes
resolveIncidentRequest.Impact = actions[tag.ImpactActionID].Value
}
resolveIncidentRequest.RcaSummary = actions["set_rca_summary"].Value
resolveIncidentRequest.JiraLinks = stringUtil.ExtractCommaSeparatedTrimmedArrayFromString(actions["set_jira_links"].Value)
return &resolveIncidentRequest, nil
}