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));
        }