Files
houston-be/internal/processor/action/view/incident_severity.go
2023-04-10 17:30:28 +05:30

54 lines
2.0 KiB
Go

package view
import (
"fmt"
"houston/common/util"
"houston/pkg/postgres/service/severity"
"strconv"
"github.com/slack-go/slack"
)
func BuildIncidentUpdateSeverityModal(channel slack.Channel, incidentSeverity []severity.SeverityEntity) slack.ModalViewRequest {
titleText := slack.NewTextBlockObject(slack.PlainTextType, "Set Severity of Incident", false, false)
closeText := slack.NewTextBlockObject(slack.PlainTextType, "Close", false, false)
submitText := slack.NewTextBlockObject(slack.PlainTextType, "Submit", false, false)
headerText := slack.NewTextBlockObject("mrkdwn", "Severity", false, false)
headerSection := slack.NewSectionBlock(headerText, nil, nil)
incidentStatusBlockOption := createIncidentSeverityBlock(incidentSeverity)
incidentSeverityText := slack.NewTextBlockObject(slack.PlainTextType, "Incident Severity", false, false)
incidentSeverityOption := slack.NewOptionsSelectBlockElement(slack.OptTypeStatic, nil, "incident_severity_modal_request", incidentStatusBlockOption...)
incidentSeverityBlock := slack.NewInputBlock("incident_severity_modal_request_input", incidentSeverityText, nil, incidentSeverityOption)
blocks := slack.Blocks{
BlockSet: []slack.Block{
headerSection,
incidentSeverityBlock,
},
}
return slack.ModalViewRequest{
Type: slack.VTModal,
Title: titleText,
Close: closeText,
Submit: submitText,
Blocks: blocks,
PrivateMetadata: channel.ID,
CallbackID: util.SetIncidentSeveritySubmit,
}
}
func createIncidentSeverityBlock(options []severity.SeverityEntity) []*slack.OptionBlockObject {
optionBlockObjects := make([]*slack.OptionBlockObject, 0, len(options))
for _, o := range options {
txt := fmt.Sprintf("%s (%s)", o.Name, o.Description)
optionText := slack.NewTextBlockObject(slack.PlainTextType, txt, false, false)
optionBlockObjects = append(optionBlockObjects, slack.NewOptionBlockObject(strconv.FormatUint(uint64(o.ID), 10), optionText, nil))
}
return optionBlockObjects
}