示例#1
0
        public static async Task RunGiveAwayEventAsync(PlannedEvent @event, DatabaseContext dbctx)
        {
            var _discordClient = (DiscordClient)ServiceProvider.GetService(typeof(DiscordClient));

            var channel = await _discordClient.GetChannelAsync(@event.ChannelID);

            if (@event.ResponseMessageID != null)
            {
                var lang = await Language.GetLanguageFromGuildIdAsync((ulong)channel.GuildId, dbctx);

                var msg = await channel.GetMessageAsync((ulong)@event.ResponseMessageID);

                var people =
                    (await msg.GetReactionsAsync(DiscordEmoji.FromName(_discordClient, ":everybodyvotes:"))).Where(x =>
                                                                                                                   x.Id != _discordClient.CurrentUser.Id && !x.IsBot);
                var discordUsers = people as DiscordUser[] ?? people.ToArray();
                if (discordUsers.Length == 0)
                {
                    await channel.SendMessageAsync(lang.GiveawayResultsNoReactions);
                }
                else
                {
                    await channel.SendMessageAsync(string.Format(lang.GiveawayResultsWon, discordUsers[RandomGenerator.Next(0, discordUsers.Length)].Mention, msg.Embeds[0].Title));
                }
            }
            @event.Handled = true;
        }
示例#2
0
 public void loadEvent(PlannedEvent pEvent)
 {
     currentEvent = pEvent;
     EventName    = pEvent.EventName;
     EventTime    = pEvent.EventTime;
     initPos(pEvent.startPos, pEvent.endPos);
 }
        private async void initLocation()
        {
            try
            {
                var location = await Geolocation.GetLastKnownLocationAsync();

                if (location != null)
                {
                    Position current, target;
                    //for test
                    Configs.Lat = 42.3700530;
                    Configs.Lng = -71.1174180;
                    //Configs.Lat = location.Latitude;
                    //Configs.Lng = location.Longitude;
                    current = new Position(Configs.Lat, Configs.Lng); /*
                                                                       * ScheduleMap.MoveToRegion(new MapSpan(current, 0.01, 0.01));
                                                                       * ScheduleMap.Pins.Add(new Pin
                                                                       * {
                                                                       * Label = "Xamarin Test",
                                                                       * Position = current
                                                                       * });*/
                    double upcomingLat = 42.3549540;                  //Boston Common
                    double upcomingLng = -71.0654890;
                    target = new Position(upcomingLat, upcomingLng);

                    /*
                     * ScheduleMap.Pins.Add(new Pin
                     * {
                     *  Label = "Target",
                     *  Position = target
                     * });*/
                    DateTime     temp   = new DateTime(2018, 8, 4, 9, 0, 0);
                    PlannedEvent pEvent = new PlannedEvent
                    {
                        EventName = "Planned Test",
                        startPos  = current,
                        endPos    = target,
                        EventTime = temp.ToString("yyyy-MM-dd hh:mm")
                    };
                    viewModel.loadEvent(pEvent);
                    BindingContext = viewModel;
                }
            }
            catch (FeatureNotSupportedException fnsEx)
            {
                // Handle not supported on device exception
                System.Diagnostics.Debug.WriteLine(fnsEx.Message);
            }
            catch (PermissionException pEx)
            {
                // Handle permission exception
                System.Diagnostics.Debug.WriteLine(pEx.Message);
            }
            catch (Exception ex)
            {
                // Unable to get location
                System.Diagnostics.Debug.WriteLine(ex.Message);
            }
        }
示例#4
0
 public static Task RunReminderEvent(PlannedEvent @event, DatabaseContext dbctx)
 {
     if (@event.Type != PlannedEventType.Reminder)
     {
         throw new ArgumentException("The parameter @event needs to be an Reminder", nameof(@event));
     }
     if (dbctx == null)
     {
         throw new ArgumentNullException(nameof(dbctx));
     }
     return(RunReminderEventAsync(@event, dbctx));
 }
示例#5
0
 public EventDetailViewModel(PlannedEvent pEvent, GoogleRoute rt)
 {
     currentEvent  = pEvent;
     route         = rt;
     EventTitle    = pEvent.EventName;
     EventTime     = pEvent.EventTime;
     StartPos      = route.getStartLocation();
     EndPos        = route.getEndLocation();
     RemainingTime = pEvent.RemainingTime;
     RequiredTime  = pEvent.RequiredTime;
     stepModels    = new ObservableCollection <StepDisplayModel>();
     loadRouteDetails();
     loadStatistics();
 }
        public void Post([FromBody] PlannedEvent model)
        {
            var jsonModel = JsonConvert.DeserializeObject <PlannedEvent[]>(System.IO.File.ReadAllText(_pathPlannedEvents));

            foreach (var token in jsonModel)
            {
                if (token.lang == model.lang)
                {
                    token.events.AddRange(model.events);
                }
            }

            var newJson = JsonConvert.SerializeObject(jsonModel);

            System.IO.File.WriteAllText(_pathPlannedEvents, newJson);
        }
        private void initLocation(PlannedEvent pe)
        {
            Position startPos = pe.startPos, endPos = pe.endPos;

            EventDetailMap.Pins.Add(new Pin
            {
                Label    = "Start",
                Position = startPos
            });
            EventDetailMap.Pins.Add(new Pin
            {
                Label    = "Target",
                Position = endPos
            });
            EventDetailMap.MoveToRegion(new MapSpan(startPos, 0.01, 0.01));
        }
示例#8
0
        public static async Task RunReminderEventAsync(PlannedEvent @event, DatabaseContext dbctx)
        {
            var _discordClient = (DiscordClient)ServiceProvider.GetService(typeof(DiscordClient));
            var channel        = await _discordClient.GetChannelAsync(@event.ChannelID);

            var lang = await Language.GetLanguageFromGuildIdAsync((ulong)channel.GuildId, dbctx);

            if ([email protected])
            {
                DiscordMessageBuilder a = new();
                a.WithReply(@event.MessageID, true);
                a.WithContent($"<@!{@event.UserID.ToString(CultureInfo.InvariantCulture)}>");
                a.AddEmbed(new DiscordEmbedBuilder().WithTitle(lang.ReminderContent).WithDescription(@event.Data).Build());
                await a.SendAsync(channel);
            }
            @event.Handled = true;
        }
示例#9
0
        public static async Task RunEmojiEventAsync(PlannedEvent @event, DatabaseContext dbctx)
        {
            var _discordClient = (DiscordClient)ServiceProvider.GetService(typeof(DiscordClient));
            var channel        = await _discordClient.GetChannelAsync(@event.ChannelID);

            if (@event.ResponseMessageID != null)
            {
                var lang = await Language.GetLanguageFromGuildIdAsync((ulong)channel.GuildId, dbctx);

                var msg = await channel.GetMessageAsync((ulong)@event.ResponseMessageID);

                var bob      = new DiscordEmbedBuilder(msg.Embeds[0]);
                var yesVotes =
                    (await msg.GetReactionsAsync(DiscordEmoji.FromName(_discordClient, ":everybodyvotes:"))).Count(x =>
                                                                                                                   x.Id != _discordClient.CurrentUser.Id && !x.IsBot);
                var noVotes =
                    (await msg.GetReactionsAsync(DiscordEmoji.FromName(_discordClient, ":nobodyvotes:"))).Count(x =>
                                                                                                                x.Id != _discordClient.CurrentUser.Id && !x.IsBot);
                var pollResultText = new StringBuilder();
                pollResultText.Append(lang.PollResultsStart).Append(" **");
                if (yesVotes > noVotes)
                {
                    pollResultText.Append(lang.PollResultsResultYes);
                }
                else if (yesVotes == noVotes)
                {
                    pollResultText.Append(lang.PollResultsResultUndecided);
                }
                else
                {
                    pollResultText.Append(lang.PollResultsResultNo);
                }

                pollResultText.Append("**\n").Append(lang.PollResultsResultYes).Append(':').Append(yesVotes).Append(' ').Append(lang.PollResultsResultNo).Append(':').Append(noVotes).Append(' ').Append(lang.PollResultsResultUndecided).Append(": ")
                .Append(channel.Guild.Members.Count(x => !x.Value.IsBot) - (yesVotes + noVotes));
                bob.WithDescription(pollResultText.ToString());
                await msg.ModifyAsync(bob.Build());
            }
            @event.Handled = true;
        }
        public EventDetailPage(PlannedEvent pEvent, GoogleRoute route)
        {
            InitializeComponent();
            viewModel                = new EventDetailViewModel(pEvent, route);
            BindingContext           = viewModel;
            StepList.ItemsSource     = viewModel.stepModels;
            AccuracyList.ItemsSource = viewModel.routeStatList;

            AccuracyList.ItemTapped += (object sender, ItemTappedEventArgs e) => {
                if (e.Item == null)
                {
                    return;
                }
                Task.Delay(500);
                if (sender is ListView lv)
                {
                    lv.SelectedItem = null;
                }
                Database.currentAccModel = (e.Item as EventDetailViewModel.StatisticModel).AccuracyPerformances;
                loadStatisticsDetail();
            };

            StepList.ItemTapped += (object sender, ItemTappedEventArgs e) => {
                if (e.Item == null)
                {
                    return;
                }
                Task.Delay(500);
                if (sender is ListView lv)
                {
                    lv.SelectedItem = null;
                }
            };
            initLocation(pEvent);
            drawPolylines(route);
        }
示例#11
0
 public void AddObjectToQueue(PlannedEvent plannedEvent)
 {
     plannedEvent.NextStateTick = CurrentTick + DayNightCycle.HalfDayLength - (int)((DayNightCycle.HalfDayLength / 10) * Game.Random.NextDouble());
     _queue.Add(plannedEvent);
 }
示例#12
0
 public void RemoveObjectFromQueue(PlannedEvent plannedEvent)
 {
     _queue.Remove(plannedEvent);
 }