Initial import into Gitea
This commit is contained in:
38
Management/Controllers/Admin/AdminCampaignsController.cs
Normal file
38
Management/Controllers/Admin/AdminCampaignsController.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using Management.Data;
|
||||
using Management.Security;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Text.Json;
|
||||
|
||||
namespace Management.Controllers.Admin;
|
||||
|
||||
/// <summary>
|
||||
/// Admin endpoints for campaign (initiative) management.
|
||||
/// Lists initiatives across all clients with their channel campaign details.
|
||||
/// Requires Admin role.
|
||||
///
|
||||
/// ENDPOINTS:
|
||||
/// GET /api/admin/campaigns - List all initiatives with channels
|
||||
/// GET /api/admin/campaigns/{id} - Get initiative detail with channels
|
||||
/// </summary>
|
||||
[ApiController]
|
||||
[Route("api/admin/campaigns")]
|
||||
public sealed class AdminCampaignsController : AdminControllerBase
|
||||
{
|
||||
public AdminCampaignsController(SqlService sql, ClientContext client, ILogger<AdminCampaignsController> log)
|
||||
: base(sql, client, log) { }
|
||||
|
||||
/// <summary>
|
||||
/// List all initiatives across all clients, with nested channel campaigns.
|
||||
/// Optional filters: status, clientId, dateFrom, dateTo.
|
||||
/// </summary>
|
||||
[HttpPost("list")]
|
||||
public Task<IActionResult> List([FromBody] JsonElement body, CancellationToken ct)
|
||||
=> CallProc("spAdminCampaigns", "list", body.ToString(), ct);
|
||||
|
||||
/// <summary>
|
||||
/// Get initiative by ID with full channel campaign details.
|
||||
/// </summary>
|
||||
[HttpGet("{initiativeId:long}")]
|
||||
public Task<IActionResult> Get(long initiativeId, CancellationToken ct)
|
||||
=> CallProc("spAdminCampaigns", "get", new { initiativeId }, ct);
|
||||
}
|
||||
Reference in New Issue
Block a user