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); }
public async Task InitializeReportLogger(CommandContext context) { var newReport = new Report() { UserId = context.Message.Author.Id.ToString(), GuildId = context.Guild.Id.ToString(), Date = DateTime.Now.ToString("dddd, dd MMMM HH:mm") }; var summaryStep = new SummaryStep("Enter summary", null); var timeboxStep = new TimeboxStep("Enter timebox", summaryStep); var meetingTypeStep = new MeetingTypeStep("Enter meeting type", timeboxStep); meetingTypeStep.OnValidResult += (result) => newReport.MeetingType = result; summaryStep.OnValidResult += (result) => newReport.Summary = result; timeboxStep.OnValidResult += (result) => newReport.Timebox = result; // open dm // var dm = await context.Member.CreateDmChannelAsync().ConfigureAwait(false); var reportLogger = new ReportLoggerHandler( context.Client, context.Channel, context.User, meetingTypeStep ); var succeeded = await reportLogger.ProcessReportLogger().ConfigureAwait(false); if (!succeeded) { return; } await _dbContext.AddAsync(newReport).ConfigureAwait(false); await _dbContext.SaveChangesAsync().ConfigureAwait(false); await context.Channel.SendMessageAsync("Report successfully saved to database").ConfigureAwait(false); }