|
|
|
|
@@ -498,43 +498,40 @@ func (i *incidentService) UpdateIncident(c *gin.Context) {
|
|
|
|
|
|
|
|
|
|
userInfo, err := i.slackbotClient.GetUserByEmail(userEmail)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in fetching user by email", zap.String("userEmail", userEmail), zap.Error(err))
|
|
|
|
|
c.JSON(http.StatusInternalServerError, common.ErrorResponse(err, http.StatusBadRequest, nil))
|
|
|
|
|
return
|
|
|
|
|
i.logger.Error(fmt.Sprintf("error in fetching user by email: %v, hence using user email as user Id", userEmail), zap.String("userEmail", userEmail), zap.Error(err))
|
|
|
|
|
userInfo = &slack.User{
|
|
|
|
|
ID: userEmail,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
num, err := strconv.ParseUint(updateIncidentRequest.SeverityId, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in string to int conversion",
|
|
|
|
|
zap.String("SeverityId", updateIncidentRequest.SeverityId), zap.Error(err))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
severityEntity, err := i.severityRepository.FindSeverityById(uint(num))
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in fetching severity", zap.Any("severity", incidentEntity.SeverityId), zap.Error(err))
|
|
|
|
|
c.JSON(http.StatusInternalServerError, common.ErrorResponse(err, http.StatusBadRequest, nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = i.UpdateSeverityId(updateIncidentRequest, userInfo.ID, severityEntity.Name, severityEntity.Sla, incidentEntity)
|
|
|
|
|
err = i.UpdateSeverityId(updateIncidentRequest, userInfo.ID, incidentEntity)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in updating severity", zap.Error(err))
|
|
|
|
|
c.JSON(http.StatusInternalServerError, common.ErrorResponse(err, http.StatusBadRequest, nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = i.UpdateStatus(updateIncidentRequest, userInfo.ID, incidentEntity.SlackChannel, incidentEntity)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in updating status", zap.Error(err))
|
|
|
|
|
c.JSON(http.StatusInternalServerError, common.ErrorResponse(err, http.StatusBadRequest, nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
err = i.UpdateTeamId(updateIncidentRequest, userInfo.ID, severityEntity.Name,
|
|
|
|
|
severityEntity.Description, incidentEntity)
|
|
|
|
|
|
|
|
|
|
err = i.UpdateTeamId(updateIncidentRequest, userInfo.ID, incidentEntity)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in updating teamId", zap.Error(err))
|
|
|
|
|
c.JSON(http.StatusInternalServerError, common.ErrorResponse(err, http.StatusBadRequest, nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = i.UpdateMetaData(updateIncidentRequest, incidentEntity, userInfo.ID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in updating metadata", zap.Error(err))
|
|
|
|
|
c.JSON(http.StatusInternalServerError, common.ErrorResponse(err, http.StatusBadRequest, nil))
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
incidentEntity.UpdatedAt = time.Now()
|
|
|
|
|
incidentEntity.UpdatedBy = userInfo.ID
|
|
|
|
|
i.incidentRepository.UpdateIncident(incidentEntity)
|
|
|
|
|
@@ -545,12 +542,11 @@ func (i *incidentService) UpdateIncident(c *gin.Context) {
|
|
|
|
|
if incidentStatusEntity.IsTerminalStatus && incidentEntity.SeverityId != 1 && incidentEntity.SeverityId != 2 {
|
|
|
|
|
i.socketModeClient.ArchiveConversation(incidentEntity.SlackChannel)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
c.JSON(http.StatusOK, common.SuccessResponse("incident updated successfully", http.StatusOK))
|
|
|
|
|
c.JSON(http.StatusOK, common.SuccessResponse(incidentEntity.SlackChannel, http.StatusOK))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (i *incidentService) UpdateSeverityId(
|
|
|
|
|
updateIncidentRequest request.UpdateIncidentRequest, userId, severityName string, sla int, incidentEntity *incident.IncidentEntity) error {
|
|
|
|
|
updateIncidentRequest request.UpdateIncidentRequest, userId string, incidentEntity *incident.IncidentEntity) error {
|
|
|
|
|
if updateIncidentRequest.SeverityId != "" {
|
|
|
|
|
num, err := strconv.ParseUint(updateIncidentRequest.SeverityId, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
@@ -558,14 +554,29 @@ func (i *incidentService) UpdateSeverityId(
|
|
|
|
|
zap.String("SeverityId", updateIncidentRequest.SeverityId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if incidentEntity.SeverityId != uint(num) {
|
|
|
|
|
incidentEntity.SeverityId = uint(num)
|
|
|
|
|
incidentEntity.SeverityTat = time.Now().AddDate(0, 0, sla)
|
|
|
|
|
errMessage := util.PostIncidentSeverityUpdateMessage(userId, severityName, incidentEntity.SlackChannel, i.socketModeClient)
|
|
|
|
|
if errMessage != nil {
|
|
|
|
|
i.logger.Error("post response failed for IncidentUpdateSeverity", zap.Error(errMessage))
|
|
|
|
|
|
|
|
|
|
severityEntity, err := i.severityRepository.FindSeverityById(uint(num))
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in fetching severity", zap.Any("severity", incidentEntity.SeverityId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if updateIncidentRequest.SeverityId != "" {
|
|
|
|
|
num, err := strconv.ParseUint(updateIncidentRequest.SeverityId, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in string to int conversion",
|
|
|
|
|
zap.String("SeverityId", updateIncidentRequest.SeverityId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if incidentEntity.SeverityId != uint(num) {
|
|
|
|
|
incidentEntity.SeverityId = uint(num)
|
|
|
|
|
incidentEntity.SeverityTat = time.Now().AddDate(0, 0, severityEntity.Sla)
|
|
|
|
|
errMessage := util.PostIncidentSeverityUpdateMessage(userId, severityEntity.Name, incidentEntity.SlackChannel, i.socketModeClient)
|
|
|
|
|
if errMessage != nil {
|
|
|
|
|
i.logger.Error("post response failed for IncidentUpdateSeverity", zap.Error(errMessage))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
@@ -599,31 +610,78 @@ func (i *incidentService) UpdateStatus(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (i *incidentService) UpdateTeamId(
|
|
|
|
|
updateIncidentRequest request.UpdateIncidentRequest, userId, severityName, severityDescription string,
|
|
|
|
|
incidentEntity *incident.IncidentEntity) error {
|
|
|
|
|
updateIncidentRequest request.UpdateIncidentRequest, userId string, incidentEntity *incident.IncidentEntity) error {
|
|
|
|
|
if updateIncidentRequest.TeamId != "" {
|
|
|
|
|
num, err := strconv.ParseUint(updateIncidentRequest.TeamId, 10, 64)
|
|
|
|
|
num, err := strconv.ParseUint(updateIncidentRequest.SeverityId, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in string to int conversion",
|
|
|
|
|
zap.String("TeamId", updateIncidentRequest.TeamId), zap.Error(err))
|
|
|
|
|
zap.String("SeverityId", updateIncidentRequest.SeverityId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if incidentEntity.TeamId != uint(num) {
|
|
|
|
|
incidentEntity.TeamId = uint(num)
|
|
|
|
|
teamEntity, err := i.teamRepository.FindTeamById(incidentEntity.TeamId)
|
|
|
|
|
|
|
|
|
|
severityEntity, err := i.severityRepository.FindSeverityById(uint(num))
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in fetching severity", zap.Any("severity", incidentEntity.SeverityId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
if updateIncidentRequest.TeamId != "" {
|
|
|
|
|
num, err := strconv.ParseUint(updateIncidentRequest.TeamId, 10, 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in fetching team by id",
|
|
|
|
|
i.logger.Error("error in string to int conversion",
|
|
|
|
|
zap.String("TeamId", updateIncidentRequest.TeamId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
errMessage := util.PostIncidentTypeUpdateMessage(
|
|
|
|
|
userId, teamEntity.Name, severityName, severityDescription,
|
|
|
|
|
incidentEntity.IncidentName, incidentEntity.Title, incidentEntity.SlackChannel, i.socketModeClient)
|
|
|
|
|
if errMessage != nil {
|
|
|
|
|
i.logger.Error("post response failed for IncidentUpdateType", zap.Error(errMessage))
|
|
|
|
|
return err
|
|
|
|
|
if incidentEntity.TeamId != uint(num) {
|
|
|
|
|
incidentEntity.TeamId = uint(num)
|
|
|
|
|
teamEntity, err := i.teamRepository.FindTeamById(incidentEntity.TeamId)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error in fetching team by id",
|
|
|
|
|
zap.String("TeamId", updateIncidentRequest.TeamId), zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
errMessage := util.PostIncidentTypeUpdateMessage(
|
|
|
|
|
userId, teamEntity.Name, severityEntity.Name, severityEntity.Description,
|
|
|
|
|
incidentEntity.IncidentName, incidentEntity.Title, incidentEntity.SlackChannel, i.socketModeClient)
|
|
|
|
|
if errMessage != nil {
|
|
|
|
|
i.logger.Error("post response failed for IncidentUpdateType", zap.Error(errMessage))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (i *incidentService) UpdateMetaData(updateIncidentRequest request.UpdateIncidentRequest, incidentEntity *incident.IncidentEntity, userId string) error {
|
|
|
|
|
metaData := request.CreateIncidentMetaData{}
|
|
|
|
|
if updateIncidentRequest.MetaData != metaData {
|
|
|
|
|
metaData.CrmTicketCreationTime = updateIncidentRequest.MetaData.CrmTicketCreationTime
|
|
|
|
|
metaData.CustomerId = updateIncidentRequest.MetaData.CustomerId
|
|
|
|
|
metaData.PhoneNumber = updateIncidentRequest.MetaData.PhoneNumber
|
|
|
|
|
metaData.TicketId = updateIncidentRequest.MetaData.TicketId
|
|
|
|
|
metaData.AgentName = updateIncidentRequest.MetaData.AgentName
|
|
|
|
|
metaData.TicketGroup = updateIncidentRequest.MetaData.TicketGroup
|
|
|
|
|
var incidentMetadata []request.CreateIncidentMetaData
|
|
|
|
|
|
|
|
|
|
if incidentEntity.MetaData != nil {
|
|
|
|
|
err := json.Unmarshal(incidentEntity.MetaData, &incidentMetadata)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error occurred while converting incident metadata to json", zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
incidentMetadata = append(incidentMetadata, metaData)
|
|
|
|
|
var err error
|
|
|
|
|
incidentEntity.MetaData, err = json.Marshal(incidentMetadata)
|
|
|
|
|
if err != nil {
|
|
|
|
|
i.logger.Error("error occurred while converting incident metadata to json", zap.Error(err))
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
errMessage := util.PostIncidentCustomerDataUpdateMessage(updateIncidentRequest.MetaData, userId, incidentEntity.SlackChannel, i.socketModeClient)
|
|
|
|
|
if errMessage != nil {
|
|
|
|
|
i.logger.Error("post response failed for IncidentUpdateCustomerData", zap.Error(errMessage))
|
|
|
|
|
return errMessage
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|