From 131fe8ea45baaa0ef6c2098a27bd5beccd314d45 Mon Sep 17 00:00:00 2001 From: Abhijeet Gupta Date: Tue, 25 Apr 2023 22:56:36 +0530 Subject: [PATCH] TP-0000 | ui-fix (#32) --- .../start_incident_modal_submission_action.go | 2 + model/incident/incident.go | 8 ++- pkg/slackbot/users.go | 8 +-- service/incident_service.go | 72 ++++++++++--------- service/request/incident_filters.go | 13 ++-- 5 files changed, 57 insertions(+), 46 deletions(-) diff --git a/internal/processor/action/start_incident_modal_submission_action.go b/internal/processor/action/start_incident_modal_submission_action.go index 1346f92..ebd9fa5 100644 --- a/internal/processor/action/start_incident_modal_submission_action.go +++ b/internal/processor/action/start_incident_modal_submission_action.go @@ -71,6 +71,8 @@ func (cip *CreateIncidentAction) CreateIncidentModalCommandProcessing(callback s return } + //Add user who created the incident + cip.slackbotClient.InviteUsersToConversation(incidentEntity.SlackChannel, incidentEntity.CreatedBy) // add default users to the incident err = cip.addDefaultUsersToIncident(*channelID, teamEntity, severityEntity) if err != nil { diff --git a/model/incident/incident.go b/model/incident/incident.go index 48176e7..ce1e73a 100644 --- a/model/incident/incident.go +++ b/model/incident/incident.go @@ -4,6 +4,7 @@ import ( "fmt" "houston/model/severity" "strconv" + "strings" "time" "go.uber.org/zap" @@ -150,7 +151,7 @@ func (r *Repository) FindIncidentById(Id uint) (*IncidentEntity, error) { } func (r *Repository) FetchAllIncidents( - TeamsId []uint, SeverityIds []uint, StatusIds []uint, pageNumber int64, pageSize int64) ([]IncidentEntity, int, error) { + TeamsId []uint, SeverityIds []uint, StatusIds []uint, pageNumber int64, pageSize int64, incidentName string) ([]IncidentEntity, int, error) { var query = r.gormClient.Model([]IncidentEntity{}) var incidentEntity []IncidentEntity if len(TeamsId) != 0 { @@ -162,6 +163,9 @@ func (r *Repository) FetchAllIncidents( if len(StatusIds) != 0 { query = query.Where("status IN ?", StatusIds) } + if len(strings.TrimSpace(incidentName)) != 0 { + query = query.Where("incident_name LIKE ?", "%"+incidentName+"%") + } var totalElements int64 result := query.Count(&totalElements) @@ -169,7 +173,7 @@ func (r *Repository) FetchAllIncidents( return nil, 0, result.Error } - result = query.Offset(int(pageNumber * pageSize)).Limit(int(pageSize)).Find(&incidentEntity) + result = query.Order("created_at desc").Offset(int(pageNumber * pageSize)).Limit(int(pageSize)).Find(&incidentEntity) if result.Error != nil { return nil, 0, result.Error diff --git a/pkg/slackbot/users.go b/pkg/slackbot/users.go index b1236c1..25fb559 100644 --- a/pkg/slackbot/users.go +++ b/pkg/slackbot/users.go @@ -19,11 +19,11 @@ func (c *Client) GetUsersInfo(users ...string) (*[]slack.User, error) { func (c *Client) GetUsersInConversation(channelId string) ([]string, error) { users, _, err := c.socketModeClient.GetUsersInConversation(&slack.GetUsersInConversationParameters{ - Limit: 100, + Limit: 100, ChannelID: channelId, }) if err != nil { - c.logger.Error("error in getting users from conversations", + c.logger.Error("error in getting users from conversations", zap.String("channelId", channelId), zap.Error(err)) return nil, err } @@ -43,8 +43,8 @@ func (c *Client) GetUserEmailById(userId string) (string, error) { users, err := c.GetUsersInfo(userId) if err != nil { c.logger.Error("error in getting user info by id", zap.String("id", userId), zap.Error(err)) - return "", err + return "Anonymous-" + userId, err } usersInfo := *users return usersInfo[0].Profile.Email, nil -} \ No newline at end of file +} diff --git a/service/incident_service.go b/service/incident_service.go index db41271..14964bd 100644 --- a/service/incident_service.go +++ b/service/incident_service.go @@ -64,6 +64,7 @@ func (i *incidentService) GetIncidents(c *gin.Context) { TeamIds := c.Query("team_ids") SeverityIds := c.Query("severity_ids") Status := c.Query("statuses") + IncidentName := c.Query("incident_name") if IncidentId != "" { numIncidentId, err := strconv.Atoi(IncidentId) @@ -90,11 +91,12 @@ func (i *incidentService) GetIncidents(c *gin.Context) { } incidents, totalElements, err := i.GetAllIncidents(request.IncidentFilters{ - TeamIds: TeamIds, - SeverityIds: SeverityIds, - StatusIds: Status, - PageSize: pageSize, - PageNumber: pageNumber, + TeamIds: TeamIds, + SeverityIds: SeverityIds, + StatusIds: Status, + PageSize: pageSize, + PageNumber: pageNumber, + IncidentName: IncidentName, }, i.incidentRepository, i.severityRepository) if err != nil { i.logger.Info("error in fetching incidents", zap.Error(err)) @@ -105,7 +107,7 @@ func (i *incidentService) GetIncidents(c *gin.Context) { incidentResponses, err := i.GetIncidentResponseFromIncidentEntity( incidents, i.incidentRepository, i.severityRepository, i.teamRepository) if err != nil { - i.logger.Error("error in creating incident response", zap.Error(err)) + i.logger.Error("error in GetIncidentResponseFromIncidentEntity", zap.Error(err)) c.JSON(http.StatusBadRequest, common.ErrorResponse(err, http.StatusBadRequest, nil)) return } @@ -137,32 +139,32 @@ func (i *incidentService) GetIncidentResponseFromIncidentEntity( } incidentResponses[incident].TeamName = team.Name - severity, err := severityRepository.FindSeverityById(incidentResponses[incident].SeverityId) - if (err != nil) { - i.logger.Error("error in fetching severity", zap.Error(err)) - return nil, err - } - incidentResponses[incident].SeverityName = severity.Name - incidentStatus, err := incidentRepository.GetIncidentStatusNameByStatus(incidentResponses[incident].Status) - if (err != nil) { - i.logger.Error("error in fetching incident status", zap.Error(err)) - return nil, err - } - incidentResponses[incident].StatusName = incidentStatus.Name - userEmail, err := i.slackbotClient.GetUserEmailById(incidents[incident].CreatedBy) - if err != nil { - i.logger.Error("error in fetching user name by id", zap.String("userId", incidents[incident].CreatedBy), zap.Error(err)) - return nil, err - } - incidentResponses[incident].CreatedBy = userEmail - userEmail, err = i.slackbotClient.GetUserEmailById(incidents[incident].UpdatedBy) - if err != nil { - i.logger.Error("error in fetching user name by id", zap.String("userId", incidents[incident].UpdatedBy), zap.Error(err)) - return nil, err - } - incidentResponses[incident].UpdatedBy = userEmail - } - return incidentResponses, nil + severity, err := severityRepository.FindSeverityById(incidentResponses[incident].SeverityId) + if err != nil { + i.logger.Error("error in fetching severity", zap.Error(err)) + return nil, err + } + incidentResponses[incident].SeverityName = severity.Name + incidentStatus, err := incidentRepository.GetIncidentStatusNameByStatus(incidentResponses[incident].Status) + if err != nil { + i.logger.Error("error in fetching incident status", zap.Error(err)) + return nil, err + } + incidentResponses[incident].StatusName = incidentStatus.Name + userEmail, err := i.slackbotClient.GetUserEmailById(incidents[incident].CreatedBy) + if err != nil { + i.logger.Error("error in fetching user name by id", zap.String("userId", incidents[incident].CreatedBy), zap.Error(err)) + // return nil, err + } + incidentResponses[incident].CreatedBy = userEmail + userEmail, err = i.slackbotClient.GetUserEmailById(incidents[incident].UpdatedBy) + if err != nil { + i.logger.Error("error in fetching user name by id", zap.String("userId", incidents[incident].UpdatedBy), zap.Error(err)) + // return nil, err + } + incidentResponses[incident].UpdatedBy = userEmail + } + return incidentResponses, nil } func (i *incidentService) GetAllIncidents( @@ -183,7 +185,7 @@ func (i *incidentService) GetAllIncidents( StatusIds = i.SplitStringAndGetUintArray(incidentFilters.StatusIds) } return incidentRepository.FetchAllIncidents( - TeamIds, SeverityIds, StatusIds, incidentFilters.PageNumber, incidentFilters.PageSize) + TeamIds, SeverityIds, StatusIds, incidentFilters.PageNumber, incidentFilters.PageSize, incidentFilters.IncidentName) } func (i *incidentService) SplitStringAndGetUintArray(str string) []uint { @@ -284,6 +286,8 @@ func (i *incidentService) CreateIncident(c *gin.Context) { return } + //Add user who created the incident + i.slackbotClient.InviteUsersToConversation(incidentEntity.SlackChannel, incidentEntity.CreatedBy) // add default users to the incident err = i.addDefaultUsersToIncident(*channelID, teamEntity, severityEntity) if err != nil { @@ -424,7 +428,7 @@ func buildCreateIncidentRequest(createIncRequest request.CreateIncidentRequest) } func (i *incidentService) UpdateIncident(c *gin.Context) { - userEmail := c.GetHeader("X-User-Email") + userEmail := c.GetHeader("X-User-Email") var updateIncidentRequest request.UpdateIncidentRequest if err := c.ShouldBindJSON(&updateIncidentRequest); err != nil { diff --git a/service/request/incident_filters.go b/service/request/incident_filters.go index ce0b816..546e512 100644 --- a/service/request/incident_filters.go +++ b/service/request/incident_filters.go @@ -1,9 +1,10 @@ package service type IncidentFilters struct { - TeamIds string - SeverityIds string - StatusIds string - PageSize int64 - PageNumber int64 -} \ No newline at end of file + TeamIds string + SeverityIds string + StatusIds string + PageSize int64 + PageNumber int64 + IncidentName string +}