using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.AspNetCore.Mvc.Rendering; using ListmonkIntegration.Services; using ListmonkIntegration.Models; namespace ListmonkIntegration.Pages.Templates { public class CreateModel : PageModel { private readonly IListmonkService _listmonkService; private readonly ILogger _logger; [BindProperty] public string TemplateName { get; set; } = string.Empty; [BindProperty] public string Subject { get; set; } = string.Empty; [BindProperty] public string Body { get; set; } = string.Empty; [BindProperty] public int? SelectedListId { get; set; } public SelectList Lists { get; set; } = new SelectList(Enumerable.Empty()); public string? DebugInfo { get; set; } public CreateModel(IListmonkService listmonkService, ILogger logger) { _listmonkService = listmonkService; _logger = logger; } public async Task OnGetAsync() { _logger.LogInformation("OnGetAsync called, loading lists..."); await LoadListsAsync(); } public async Task OnPostAsync() { if (string.IsNullOrWhiteSpace(TemplateName) || string.IsNullOrWhiteSpace(Subject) || string.IsNullOrWhiteSpace(Body)) { TempData["ErrorMessage"] = "Заполните все обязательные поля"; await LoadListsAsync(); return Page(); } try { _logger.LogInformation($"Creating template: {TemplateName}"); var templateId = await _listmonkService.CreateTemplateAsync( TemplateName, Subject, Body ); _logger.LogInformation($"Template created successfully with ID: {templateId}"); TempData["SuccessMessage"] = $"Шаблон \"{TemplateName}\" успешно создан!"; return RedirectToPage("/Campaigns/Index"); } catch (Exception ex) { _logger.LogError(ex, "Error creating template"); TempData["ErrorMessage"] = $"Ошибка при создании шаблона: {ex.Message}"; await LoadListsAsync(); return Page(); } } private async Task LoadListsAsync() { try { _logger.LogInformation("Calling GetListsAsync..."); var lists = await _listmonkService.GetListsAsync(); _logger.LogInformation($"Got {lists.Count} lists from Listmonk"); foreach (var list in lists) { _logger.LogInformation($" List: ID={list.Id}, Name={list.Name}, Subscribers={list.SubscriberCount}"); } Lists = new SelectList(lists, "Id", "Name"); DebugInfo = $"Загружено списков: {lists.Count}"; } catch (Exception ex) { _logger.LogError(ex, "Error loading lists"); DebugInfo = $"Ошибка загрузки списков: {ex.Message}"; Lists = new SelectList(Enumerable.Empty()); } } } }