protected override IEnumerable <INotification> CreateNotifications(IVssRequestContext requestContext, ReleaseEnvironmentCompletedServerEvent ev, int maxLines) { var projectService = requestContext.GetService <IProjectService>(); var identityService = requestContext.GetService <ITeamFoundationIdentityService>(); var release = ev.Release; var creator = identityService.ReadIdentities(requestContext, new[] { release.CreatedBy }).First(); string projectName = projectService.GetProjectName(requestContext, ev.ProjectId); var releaseUrl = WebAccessUrlBuilder.GetReleaseWebAccessUri(requestContext, projectName, release.Id); var enironmentName = release.Environments.FirstOrDefault(e => e.Id == ev.CurrentEnvironmentId)?.Name; var notification = new ReleaseEnvironmentCompletedNotification { TeamProjectCollection = requestContext.ServiceHost.Name, ProjectName = projectName, ReleaseDefinition = release.ReleaseDefinitionName, ReleaseName = release.Name, ReleaseReason = release.Reason, ReleaseStatus = release.Status, ReleaseUrl = releaseUrl, CreatedOn = release.CreatedOn, CreatedByUniqueName = creator.UniqueName, CreatedByDisplayName = creator.DisplayName, TeamNames = GetUserTeamsByProjectName(requestContext, projectName, creator.Descriptor), EnvironmentStatus = ev.Status, EnvironmentName = enironmentName }; yield return(notification); }
public Message ToSlackMessage(ReleaseEnvironmentCompletedNotification notification, BotElement bot, string channel, bool asUser) { string header = notification.ToMessage(bot, s => s).First(); string color = null; if (notification.EnvironmentStatus == EnvironmentStatus.Succeeded) { color = bot.GetSetting("successColor"); } else if (notification.EnvironmentStatus == EnvironmentStatus.Rejected || notification.EnvironmentStatus == EnvironmentStatus.Canceled) { color = bot.GetSetting("errorColor"); } else { color = bot.GetSetting("standardColor"); } var fields = new[] { new AttachmentField(notification.EnvironmentName, notification.EnvironmentStatus.ToString(), false) }; return(SlackHelper.CreateSlackMessage(header, fields, bot, channel, color, asUser)); }