public async Task AddEvent(CommandContext ctx) { var thirdStep = new TextStep("Who will be taking part in this event?", null); var secondStep = new TextStep("What is the Event name?", thirdStep); var firstStep = new DateTimeStep("What is the date/time you wish this event to take place on?\nStyle of Response Needed: DD/MM/YYYY HH:MM", secondStep); var newEvent = new EventList(); firstStep.OnValidResult += (result) => newEvent.DateTime = $"{result}"; secondStep.OnValidResult += (result) => newEvent.EventName = $"{result}"; thirdStep.OnValidResult += (result) => newEvent.Attendees = $"{result}"; var inputDialogueHandler = new DialogueHandler( ctx.Client, ctx.Channel, ctx.User, firstStep ); bool succeeded = await inputDialogueHandler.ProcessDialogue().ConfigureAwait(false); if (!succeeded) { return; } await _eventService.CreateNewEvent(newEvent).ConfigureAwait(false); //Change this to -6 or -7 depending on DST var parsedTimeDate = DateTime.Parse(newEvent.DateTime).AddHours(-5); var embed = new DiscordEmbedBuilder { Title = "Event Created:", Color = DiscordColor.DarkRed, Description = $"Date/Time: {parsedTimeDate.ToShortDateString()} at {parsedTimeDate.ToShortTimeString()} (CST)\n\nEvent Name: {newEvent.EventName}\n\nAttendees: {newEvent.Attendees}", }; embed.AddField("MST:", $"{parsedTimeDate.AddHours(-2).ToLongDateString()} at {parsedTimeDate.AddHours(-2).ToShortTimeString()}"); embed.AddField("GMT:", $"{parsedTimeDate.AddHours(5).ToLongDateString()} at {parsedTimeDate.AddHours(5).ToShortTimeString()}"); embed.WithFooter($"Event ID: {newEvent.Id}"); var eventChannel = ctx.Guild.GetChannel(808076578725822474); await ctx.Channel.SendMessageAsync(embed : embed).ConfigureAwait(false); var eventMessage = await eventChannel.SendMessageAsync(embed : embed).ConfigureAwait(false); newEvent.EventChannelId = eventChannel.Id; newEvent.EventMessageId = eventMessage.Id; await _eventService.EditEvent(newEvent); }
public async Task ScheduleMeeting(CommandContext context) { var newMeeting = new Meeting() { CreatorUserId = context.Message.Author.Id.ToString(), GuildId = context.Guild.Id.ToString() }; var dateTimeStep = new DateTimeStep("Enter summary", null); var timeboxStep = new TimeboxStep("Enter timebox", dateTimeStep); var meetingTypeStep = new MeetingTypeStep("Enter meeting type", timeboxStep); var titleStep = new TitleStep("Enter meeting type", meetingTypeStep); titleStep.OnValidResult += (result) => newMeeting.Title = result; meetingTypeStep.OnValidResult += (result) => newMeeting.MeetingType = result; timeboxStep.OnValidResult += (result) => newMeeting.Timebox = result; dateTimeStep.OnValidResult += (result) => newMeeting.DateTime = result; // open dm // var dm = await context.Member.CreateDmChannelAsync().ConfigureAwait(false); var meetingScheduler = new MeetingSchedulerHandler( context.Client, context.Channel, context.User, titleStep ); var succeeded = await meetingScheduler.ProcessReportLogger().ConfigureAwait(false); if (!succeeded) { return; } await _dbContext.AddAsync(newMeeting).ConfigureAwait(false); await _dbContext.SaveChangesAsync().ConfigureAwait(false); await context.Channel.SendMessageAsync("Report successfully saved to database").ConfigureAwait(false); }