108 lines
3.5 KiB
C#
108 lines
3.5 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc.RazorPages;
|
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
|
using ListmonkIntegration.Services;
|
|
|
|
namespace ListmonkIntegration.Pages.Campaigns
|
|
{
|
|
public class SendModel : PageModel
|
|
{
|
|
private readonly IListmonkService _listmonkService;
|
|
private readonly ILogger<SendModel> _logger;
|
|
|
|
[BindProperty]
|
|
public string CampaignName { get; set; } = string.Empty;
|
|
|
|
[BindProperty]
|
|
public int? SelectedTemplateId { get; set; }
|
|
|
|
[BindProperty]
|
|
public int? SelectedListId { get; set; }
|
|
|
|
public SelectList Templates { get; set; } = new SelectList(Enumerable.Empty<SelectListItem>());
|
|
public SelectList Lists { get; set; } = new SelectList(Enumerable.Empty<SelectListItem>());
|
|
|
|
public string? ErrorMessage { get; set; }
|
|
public string? SuccessMessage { get; set; }
|
|
|
|
public SendModel(IListmonkService listmonkService, ILogger<SendModel> logger)
|
|
{
|
|
_listmonkService = listmonkService;
|
|
_logger = logger;
|
|
}
|
|
|
|
public async Task OnGetAsync()
|
|
{
|
|
await LoadDataAsync();
|
|
}
|
|
|
|
public async Task<IActionResult> OnPostAsync()
|
|
{
|
|
if (!SelectedTemplateId.HasValue || !SelectedListId.HasValue || string.IsNullOrWhiteSpace(CampaignName))
|
|
{
|
|
ErrorMessage = "Çàïîëíèòå âñå ïîëÿ";
|
|
await LoadDataAsync();
|
|
return Page();
|
|
}
|
|
|
|
try
|
|
{
|
|
var templates = await _listmonkService.GetTemplatesAsync();
|
|
var template = templates.FirstOrDefault(t => t.Id == SelectedTemplateId.Value);
|
|
|
|
if (template == null)
|
|
{
|
|
ErrorMessage = "Øàáëîí íå íàéäåí";
|
|
await LoadDataAsync();
|
|
return Page();
|
|
}
|
|
|
|
var campaignId = await _listmonkService.CreateCampaignAsync(
|
|
CampaignName,
|
|
SelectedListId.Value,
|
|
SelectedTemplateId.Value,
|
|
template.Subject
|
|
);
|
|
|
|
var started = await _listmonkService.StartCampaignAsync(campaignId);
|
|
|
|
if (started)
|
|
{
|
|
SuccessMessage = $"Êàìïàíèÿ \"{CampaignName}\" óñïåøíî ñîçäàíà è çàïóùåíà!";
|
|
_logger.LogInformation($"Campaign {campaignId} started successfully");
|
|
}
|
|
else
|
|
{
|
|
ErrorMessage = $"Êàìïàíèÿ ñîçäàíà (ID: {campaignId}), íî íå óäàëîñü çàïóñòèòü";
|
|
}
|
|
|
|
await LoadDataAsync();
|
|
return Page();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Error sending campaign");
|
|
ErrorMessage = $"Îøèáêà: {ex.Message}";
|
|
await LoadDataAsync();
|
|
return Page();
|
|
}
|
|
}
|
|
|
|
private async Task LoadDataAsync()
|
|
{
|
|
try
|
|
{
|
|
var templates = await _listmonkService.GetTemplatesAsync();
|
|
Templates = new SelectList(templates, "Id", "Name");
|
|
|
|
var lists = await _listmonkService.GetListsAsync();
|
|
Lists = new SelectList(lists, "Id", "Name");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_logger.LogError(ex, "Error loading data");
|
|
ErrorMessage = $"Îøèáêà çàãðóçêè äàííûõ: {ex.Message}";
|
|
}
|
|
}
|
|
}
|
|
} |