Files
houston-be/pkg/slack/houston/design/blazeless_summary_section.go
Shubham Kirve b974cb6bf3 TP-0000 | Initialize houston repo (#1)
* TP-0000 | intialize houston repo

* TP-0000 | intialize houston repo
2023-03-29 00:01:17 +05:30

80 lines
3.3 KiB
Go

package houston
import (
"fmt"
"houston/entity"
"houston/pkg/postgres/query"
"github.com/slack-go/slack"
"gorm.io/gorm"
)
func SummarySection(incidentEntity *entity.IncidentEntity) []slack.Block {
return []slack.Block{
buildSummaryHeader(incidentEntity.Title),
buildTypeAndChannelSectionBlock(incidentEntity, "", ""),
buildSeverityAndTicketSectionBlock(incidentEntity),
buildStatusAndMeetingSectionBlock(incidentEntity),
}
}
func IncidentSummarySection(incidentEntity *entity.IncidentEntity, db *gorm.DB) ([]slack.Block, error) {
teamEntity, err := query.FindTeamById(db, incidentEntity.TeamsId)
if err != nil {
return nil, fmt.Errorf("error in searching team with id: %d, err: %v", incidentEntity.TeamsId, err)
}
severityEntity, err := query.FindSeverityById(db, incidentEntity.SeverityId)
if err != nil {
return nil, fmt.Errorf("error in searching severity with id: %d, err: %v", incidentEntity.SeverityId, err)
}
return []slack.Block{
buildTypeAndChannelSectionBlock(incidentEntity, teamEntity.Name, severityEntity.Name),
}, nil
}
func buildSummaryHeader(incidentTitle string) *slack.SectionBlock {
headerText := slack.NewTextBlockObject("plain_text", incidentTitle, true, true)
headerSection := slack.NewSectionBlock(headerText, nil, nil)
return headerSection
}
func buildTypeAndChannelSectionBlock(incidentEntity *entity.IncidentEntity, teamName, severityName string) *slack.SectionBlock {
fields := []*slack.TextBlockObject{
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*<@%s>* \n*%s* - *%s*\n", incidentEntity.CreatedBy, incidentEntity.IncidentName, incidentEntity.Title), false, false),
slack.NewTextBlockObject("mrkdwn", "\n", false, false),
slack.NewTextBlockObject("mrkdwn", incidentEntity.Description, false, false),
slack.NewTextBlockObject("mrkdwn", "\n", false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Type*\n%s", teamName), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Channel*\n<#%s>", incidentEntity.SlackChannel), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Severity*\n%s", severityName), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Ticket*\n%s", "Integration Disabled"), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Status*\n%s", incidentEntity.Status), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Meeting*\n%s", "Integration Disabled"), false, false),
}
block := slack.NewSectionBlock(nil, fields, nil)
return block
}
func buildSeverityAndTicketSectionBlock(incidentEntity *entity.IncidentEntity) *slack.SectionBlock {
fields := []*slack.TextBlockObject{
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Severity*\n%d", incidentEntity.SeverityId), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Ticket*\n%s", "integration disabled"), false, false),
}
block := slack.NewSectionBlock(nil, fields, nil)
return block
}
func buildStatusAndMeetingSectionBlock(incidentEntity *entity.IncidentEntity) *slack.SectionBlock {
fields := []*slack.TextBlockObject{
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Status*\n%s", incidentEntity.Status), false, false),
slack.NewTextBlockObject("mrkdwn", fmt.Sprintf("*Meeting*\n%s", "integration disabled"), false, false),
}
block := slack.NewSectionBlock(nil, fields, nil)
return block
}