Esempio n. 1
0
        private static List <string> FormatEvent(
            List <PlayerEvent> newGoalEvents,
            GameweekLeagueContext context,
            string eventDescription,
            string eventEmoji,
            ITaunt taunt)
        {
            return(newGoalEvents.Select(g =>
            {
                var player = context.Players.Single(x => x.Id == g.PlayerId);
                var message = $"{player.FirstName} {player.SecondName} {eventDescription} {eventEmoji} ";

                if (g.IsRemoved)
                {
                    message = $"~{message.TrimEnd()}~ (VAR? :shrug:)";
                }
                else if (taunt != null && context.SlackTeam.Subscriptions.ContainsSubscriptionFor(EventSubscription.Taunts))
                {
                    var tauntibleEntries = GetTauntibleEntries(context, player, taunt.Type);
                    var append = tauntibleEntries.Any() ? $" {string.Format(taunt.JokePool.GetRandom(), string.Join(", ", tauntibleEntries))}" : null;
                    message += append;
                }

                return message;
            }).WhereNotNull().ToList());
        }
Esempio n. 2
0
 private static IEnumerable <object> FormatNewPenaltiesMissed(
     List <PlayerEvent> newPenaltiesMissedEvents,
     GameweekLeagueContext context)
 {
     return(FormatEvent(
                newPenaltiesMissedEvents,
                context,
                "missed a penalty!",
                ":dizzy_face:",
                new PenaltyMissTaunt()));
 }
Esempio n. 3
0
 private static IEnumerable <object> FormatOwnGoals(
     List <PlayerEvent> newOwnGoalEvents,
     GameweekLeagueContext context)
 {
     return(FormatEvent(
                newOwnGoalEvents,
                context,
                "scored a goal! In his own goal!",
                ":face_palm:",
                new OwnGoalTaunt()));
 }
Esempio n. 4
0
 private static IEnumerable <object> FormatNewAssists(
     List <PlayerEvent> newAssistEvents,
     GameweekLeagueContext context)
 {
     return(FormatEvent(
                newAssistEvents,
                context,
                "got an assist!",
                ":handshake:",
                new AssistTaunt()));
 }
Esempio n. 5
0
 private static List <string> FormatNewRedCards(
     List <PlayerEvent> newRedCardEvents,
     GameweekLeagueContext context)
 {
     return(FormatEvent(
                newRedCardEvents,
                context,
                "got a red card!",
                ":red_circle:",
                new RedCardTaunt()));
 }
Esempio n. 6
0
 private static List <string> FormatNewGoals(
     List <PlayerEvent> newGoalEvents,
     GameweekLeagueContext context)
 {
     return(FormatEvent(
                newGoalEvents,
                context,
                "scored a goal!",
                ":soccer:",
                new GoalTaunt()));
 }
Esempio n. 7
0
 private static IEnumerable <object> FormatNewPenaltiesSaved(
     List <PlayerEvent> newPenaltiesSavedEvents,
     GameweekLeagueContext context)
 {
     return(FormatEvent(
                newPenaltiesSavedEvents,
                context,
                "saved a penalty!",
                ":man-cartwheeling:",
                null));
 }
Esempio n. 8
0
        private static string[] GetTauntibleEntries(GameweekLeagueContext context, Player player, TauntType tauntType)
        {
            switch (tauntType)
            {
            case TauntType.HasPlayerInTeam:
                return(EntriesThatHasPlayerInTeam(player.Id, context.GameweekEntries, context.Users).ToArray());

            case TauntType.InTransfers:
                return(EntriesThatTransferredPlayerInThisGameweek(player.Id, context.TransfersForLeague, context.Users).ToArray());

            case TauntType.OutTransfers:
                return(EntriesThatTransferredPlayerOutThisGameweek(player.Id, context.TransfersForLeague, context.Users).ToArray());

            default:
                return(Array.Empty <string>());
            }
        }
Esempio n. 9
0
        public async Task HandleForTeam(FixtureUpdates updates, SlackTeam slackTeam)
        {
            var slackUsers = await GetSlackUsers(slackTeam);

            var entries = await _leagueEntriesByGameweek.GetEntriesForGameweek(updates.CurrentGameweek, (int)slackTeam.FplbotLeagueId);

            var transfers = await _transfersByGameWeek.GetTransfersByGameweek(updates.CurrentGameweek, (int)slackTeam.FplbotLeagueId);

            var context = new GameweekLeagueContext
            {
                Players            = updates.Players,
                Teams              = updates.Teams,
                Users              = slackUsers,
                GameweekEntries    = entries,
                SlackTeam          = slackTeam,
                TransfersForLeague = transfers
            };
            var formattedStr = GameweekEventsFormatter.FormatNewFixtureEvents(updates.Events.ToList(), context);
            await _publisher.PublishToWorkspace(slackTeam.TeamId, slackTeam.FplBotSlackChannel, formattedStr.ToArray());
        }
Esempio n. 10
0
        private static bool TeamSubscribesForThisEvent(GameweekLeagueContext context, StatType statType)
        {
            var subscriptionType = statType.GetSubscriptionType();

            return(subscriptionType.HasValue && context.SlackTeam.Subscriptions.ContainsSubscriptionFor(subscriptionType.Value));
        }
Esempio n. 11
0
        public static List <string> FormatNewFixtureEvents(List <FixtureEvents> newFixtureEvents, GameweekLeagueContext context)
        {
            var formattedStrings = new List <string>();

            newFixtureEvents.ForEach(newFixtureEvent =>
            {
                var scoreHeading  = $"{GetScore(context.Teams, newFixtureEvent)}\n";
                var eventMessages = newFixtureEvent.StatMap
                                    .Where(stat => TeamSubscribesForThisEvent(context, stat.Key))
                                    .SelectMany(stat =>
                {
                    switch (stat.Key)
                    {
                    case StatType.GoalsScored:
                        return(FormatNewGoals(stat.Value, context));

                    case StatType.Assists:
                        return(FormatNewAssists(stat.Value, context));

                    case StatType.OwnGoals:
                        return(FormatOwnGoals(stat.Value, context));

                    case StatType.RedCards:
                        return(FormatNewRedCards(stat.Value, context));

                    case StatType.PenaltiesMissed:
                        return(FormatNewPenaltiesMissed(stat.Value, context));

                    case StatType.PenaltiesSaved:
                        return(FormatNewPenaltiesSaved(stat.Value, context));

                    default: return(Enumerable.Empty <string>());
                    }
                }).MaterializeToArray();
                if (eventMessages.Any())
                {
                    formattedStrings.Add(scoreHeading + Formatter.BulletPoints(eventMessages));
                }
            });

            return(formattedStrings);
        }