示例#1
0
        protected override void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            int offset;

            if (eventArgs.Arguments.Count == 0)
            {
                offset = 0;
            }
            else
            {
                if (!int.TryParse(eventArgs?.Arguments?.ElementAtOrDefault(0), out int chatUserOffset) || chatUserOffset > 18 || chatUserOffset < -18)
                {
                    chatClient.SendMessage("UTC offset must be a whole number between -18 and +18");
                    return;
                }
                offset = chatUserOffset;
            }

            DateTimeZone timeZone = DateTimeZone.ForOffset(Offset.FromHours(offset));

            List <Instant> streamTimes = Repository.List(DataItemPolicy <ScheduleEntity> .All()).Select(x => x.Instant).ToList();

            string message = $"Our usual schedule (at UTC {offset}) is: " + string.Join(", ", streamTimes.Select(x => GetTimeDisplay(x, timeZone)));

            chatClient.SendMessage(message);
        }
示例#2
0
        protected override async void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            var    lookup = eventArgs?.Arguments?.ElementAtOrDefault(0);
            int    offset;
            string timezoneDisplay;
            bool   useTwentyFourHourTime = false;

            if (eventArgs?.Arguments?.Count == 0)
            {
                offset = 0;
                useTwentyFourHourTime = true;
                timezoneDisplay       = $"at UTC {offset:+#;-#;+0}";
            }
            else
            {
                bool isValidInteger = int.TryParse(lookup, out int chatUserOffset);
                if (isValidInteger && chatUserOffset < 18 && chatUserOffset > -18)
                {
                    useTwentyFourHourTime = true;
                    offset          = chatUserOffset;
                    timezoneDisplay = $"at UTC {offset:+#;-#;+0}";
                }
                else if (isValidInteger && (chatUserOffset > 18 || chatUserOffset < -18))
                {
                    chatClient.SendMessage(Messages.OUT_OF_RANGE);
                    return;
                }
                else
                {
                    var client = new HttpClient();

                    TimezoneLookupResult lookupResult =
                        await _timezoneLookup.GetTimezoneInfoAsync(client, lookup);

                    if (!lookupResult.Success)
                    {
                        chatClient.SendMessage(lookupResult.Message);
                        return;
                    }

                    offset          = lookupResult.Offset;
                    timezoneDisplay = $"in {lookupResult.TimezoneName}";
                }
            }

            DateTimeZone timeZone = DateTimeZone.ForOffset(Offset.FromHours(offset));

            List <Instant> streamTimes = Repository.List(DataItemPolicy <ScheduleEntity> .All()).Select(x => x.Instant).ToList();

            string message = $"Our usual schedule ({timezoneDisplay}) is: " + string.Join(", ", streamTimes.Select(x => GetTimeDisplay(x, timeZone, useTwentyFourHourTime)));

            chatClient.SendMessage(message);
        }
示例#3
0
        public List <GameServer> GetGameServers()
        {
            _logger.LogDebug("Returning all game servers from GameServerProvider");
            var result = _repository.List(DataItemPolicy <GameServer> .All());

            // Force stats nav prop to be loaded
            foreach (var gameServer in result)
            {
                _repository.Single(DataItemPolicy <GameServerCurrentStats> .ById(gameServer.Id));
            }

            return(result);
        }
示例#4
0
        protected override void HandleCommand(IChatClient chatClient, CommandReceivedEventArgs eventArgs)
        {
            if (!int.TryParse(eventArgs?.Arguments?.ElementAtOrDefault(0), out int offset) || offset > 18 || offset < -18)
            {
                return;
            }

            DateTimeZone timeZone = DateTimeZone.ForOffset(Offset.FromHours(offset));

            List <Instant> streamTimes = Repository.List(DataItemPolicy <ScheduleEntity> .All()).Select(x => x.Instant).ToList();

            string message = "Our usual schedule is: " + string.Join(", ", streamTimes.Select(x => GetTimeDisplay(x, timeZone)));

            chatClient.SendMessage(message);
        }
示例#5
0
 private QuizQuestion GetRandomQuestion()
 {
     return(MyRandom.ChooseRandomItem(_repository.List(DataItemPolicy <QuizQuestion> .All())).ChosenItem);
 }