public async Task <bool> ProcessReportLogger()
        {
            while (_currentStep != null)
            {
                _currentStep.OnMessageAdded += (m) => messages.Add(m);
                var isCancled = await _currentStep.ProcessStep(_client, _channel, _user)
                                .ConfigureAwait(false);

                if (isCancled)
                {
                    await DeleteMessagesAsync().ConfigureAwait(false);

                    var cancelEmbed = new DiscordEmbedBuilder
                    {
                        Title = "The report was terminated",
                        Color = DiscordColor.PhthaloGreen
                    };

                    await _channel.SendMessageAsync(embed : cancelEmbed).ConfigureAwait(false);

                    return(false);
                }

                _currentStep = _currentStep.NextStep;
            }
            await DeleteMessagesAsync().ConfigureAwait(false);

            return(true);
        }
 public ReportLoggerHandler(
     DiscordClient client,
     DiscordChannel channel,
     DiscordUser user,
     IReportLoggerStep startingStep)
 {
     _client      = client;
     _channel     = channel;
     _user        = user;
     _currentStep = startingStep;
 }
 public TimeboxStep(string content, IReportLoggerStep nextStep) : base(content, Enums.Step.TimeBox)
 {
     _nextStep = nextStep;
 }
 public MeetingTypeStep(string content, IReportLoggerStep nextStep) : base(content, Enums.Step.MeetingType)
 {
     _nextStep = nextStep;
 }
 public SummaryStep(string content, IReportLoggerStep nextStep) : base(content, Enums.Step.Summary)
 {
     _nextStep = nextStep;
 }