using BotPages.Core;
using BotPages.Core.Messaging;
using System.Xml;
namespace Demo.Pages;
///
/// Страница ввода деталей заявки.
/// Страница с параметрами и получением состояния.
///
public sealed class DetailsPage : StatefullPage
{
[Statefull("Request")]
private Models.Request Request;
public override Task OnEnter(PageContext ctx, DetailsArgs args, CancellationToken ct)
{
Request = new()
{
Title = args.Title,
};
return new MessageBuilder(ctx)
.Text($"Заголовок: {args.Title}\nДобавьте детали или нажмите Далее.")
.Inline(new InlineButton("Далее", "next"), new InlineButton("Назад", "back"))
.Reply("Отмена")
.SendAsync(ct);
}
public override async Task OnButton(PageContext ctx, string payload, CancellationToken ct)
{
switch (payload)
{
case "next":
{
await SaveState(ctx, ct);
await ctx.Navigation.GoToAsync(ctx, ct);
break;
}
case "back":
{
await ctx.Navigation.GoToAsync(ctx, ct);
break;
}
};
}
public override async Task OnText(PageContext ctx, string text, CancellationToken ct)
{
Request.Details = text;
await SaveState(ctx, ct);
await ctx.Navigation.GoToAsync(ctx, ct);
}
}
///
/// Аргументы для страницы DetailsPage.
///
public sealed class DetailsArgs
{
public string Title { get; set; } = "";
}