using Dapr; using IDMSDAL.Interfaces; using GB5Shared.DTO.Framework.Login; using Microsoft.AspNetCore.Mvc; namespace IDMSSL.Background; [ApiController] public class SeedingSubscriber : ControllerBase { private readonly IEngagementDAL _EngagementDAL; private readonly ILogger _Logger; public SeedingSubscriber(IEngagementDAL engagementDAL, ILogger logger) { _EngagementDAL = engagementDAL; _Logger = logger; } [Topic("pubsub", "idms.engagement.seeding.requested")] [HttpPost("/IDMS/Seeding/HandleSeedingRequested")] public async Task HandleSeedingRequestedAsync( [FromBody] SeedingRequestedEvent evt, CancellationToken ct) { // TODO(Phase2): Invoke PIE via Dapr service invocation to get module content, // then bulk-insert into delivery_item table for the given domain. // Update engagement_module.seeding_status = 'Complete' or 'Failed'. // See IDMS spec section 4 for seeding job design. _Logger.LogInformation( "Seeding requested for engagement {EngagementId} domain {DomainCode}", evt.EngagementId, evt.DomainCode); return Ok(); } public record SeedingRequestedEvent(Guid EngagementId, string TenantId, string DomainCode); }