From 1f99edcb8395d518d40746439a893bbff9cdb65f Mon Sep 17 00:00:00 2001 From: Abhijeet Gupta Date: Tue, 25 Apr 2023 23:46:29 +0530 Subject: [PATCH] TP-0000 | sev fix (#34) --- cmd/app/server.go | 4 +- service/request/update_severities_request.go | 14 +++---- service/severity_service.go | 43 +++++++++++++------- service/team_service.go | 2 +- 4 files changed, 40 insertions(+), 23 deletions(-) diff --git a/cmd/app/server.go b/cmd/app/server.go index 45cc696..ed66d60 100644 --- a/cmd/app/server.go +++ b/cmd/app/server.go @@ -121,7 +121,9 @@ func (s *Server) teamHandler() { } func (s *Server) severityHandler() { - severityHandler := service.NewSeverityService(s.gin, s.logger, s.db) + houstonClient := NewHoustonClient(s.logger) + slackClient := slackbot.NewSlackClient(s.logger, houstonClient.socketModeClient) + severityHandler := service.NewSeverityService(s.gin, s.logger, s.db, slackClient) s.gin.GET("/severities", severityHandler.GetSeverities) s.gin.POST("/severities", severityHandler.UpdateSeverities) diff --git a/service/request/update_severities_request.go b/service/request/update_severities_request.go index 8e245ab..078b06d 100644 --- a/service/request/update_severities_request.go +++ b/service/request/update_severities_request.go @@ -1,13 +1,13 @@ package service type UpdateSeveritiesRequest struct { - Severities []Severity `json:"severities"` + Severities []Severity `json:"severities"` } type Severity struct { - Id uint `json:"id"` - Name string `json:"name,omitempty"` - Description string `json:"description,omitempty"` - Sla int `json:"sla,omitempty"` - SlackUserIds []string `json:"slackUserIds,omitempty"` -} \ No newline at end of file + Id uint `json:"id"` + Name string `json:"name,omitempty"` + Description string `json:"description,omitempty"` + Sla int `json:"sla,omitempty"` + WorkEmailIds []string `json:"workEmailIds,omitempty"` +} diff --git a/service/severity_service.go b/service/severity_service.go index e8081e7..e8bf87b 100644 --- a/service/severity_service.go +++ b/service/severity_service.go @@ -1,7 +1,9 @@ package service import ( + commonutil "houston/common/util" "houston/model/severity" + "houston/pkg/slackbot" request "houston/service/request" service "houston/service/response" common "houston/service/response/common" @@ -14,16 +16,18 @@ import ( ) type severityService struct { - gin *gin.Engine - logger *zap.Logger - db *gorm.DB + gin *gin.Engine + logger *zap.Logger + db *gorm.DB + client *slackbot.Client } -func NewSeverityService(gin *gin.Engine, logger *zap.Logger, db *gorm.DB) *severityService { +func NewSeverityService(gin *gin.Engine, logger *zap.Logger, db *gorm.DB, client *slackbot.Client) *severityService { return &severityService{ - gin: gin, + gin: gin, logger: logger, - db: db, + db: db, + client: client, } } @@ -38,11 +42,11 @@ func (s *severityService) GetSeverities(c *gin.Context) { var severityResponses []service.SeverityResponse for _, severity := range *severityEntities { severityResponses = append(severityResponses, service.SeverityResponse{ - Id: severity.ID, - Name: severity.Name, - Description: severity.Description, - Sla: severity.Sla, - SlackUserIds: severity.SlackUserIds, + Id: severity.ID, + Name: severity.Name, + Description: severity.Description, + Sla: severity.Sla, + SlackUserIds: severity.SlackUserIds, }) } @@ -81,9 +85,20 @@ func (s *severityService) UpdateSeverities(c *gin.Context) { if severity.Sla != 0 { severityEntity.Sla = severity.Sla } - if severity.SlackUserIds != nil { - severityEntity.SlackUserIds = severity.SlackUserIds + slackUserIds := []string{} + if severity.WorkEmailIds != nil { + for _, ind := range severity.WorkEmailIds { + slackUser, err := s.client.GetUserByEmail(ind) + if err != nil { + s.logger.Error("error in GetUserByEmail for sev", zap.String("workEmail", ind), zap.Error(err)) + } else { + slackUserIds = append(slackUserIds, slackUser.ID) + } + } } + slackUserIds = append(slackUserIds, severityEntity.SlackUserIds...) + slackUserIds = commonutil.RemoveDuplicateStr(slackUserIds) + severityEntity.SlackUserIds = slackUserIds err = severityService.Update(severityEntity) if err != nil { s.logger.Error("error in updating severity", zap.Any("severityId", severity.Id), zap.Error(err)) @@ -93,4 +108,4 @@ func (s *severityService) UpdateSeverities(c *gin.Context) { } c.JSON(http.StatusOK, common.SuccessResponse("severity updated successfully", http.StatusOK)) -} \ No newline at end of file +} diff --git a/service/team_service.go b/service/team_service.go index 9a44b43..a6e47b9 100644 --- a/service/team_service.go +++ b/service/team_service.go @@ -117,7 +117,7 @@ func (t *teamService) UpdateTeam(c *gin.Context) { for _, ind := range updateTeamRequest.WorkEmailIds { slackUser, err := t.client.GetUserByEmail(ind) if err != nil { - t.logger.Error("error in GetUserByEmail", zap.String("workEmail", ind), zap.Error(err)) + t.logger.Error("error in GetUserByEmail for team", zap.String("workEmail", ind), zap.Error(err)) } else { slackUserIds = append(slackUserIds, slackUser.ID) }