using AdminBLL.Replicate; using FastEndpoints; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Framework.ResponseStandard; using GB5Shared.FastEndPoint; using static GB5Shared.GB5Constant.Constant; namespace AdminSL.EndPoints.Replicate { // GB4 source: Unisoft.AdminService.IGb4ImportExportService.ReplicateProcess // (GB4Solution/ServiceLayer/AdminService/IGb4ImportExport.cs) // [OperationContract(Name = "Replicate")] // [WebInvoke(UriTemplate = "/Replicate/?ReplicateId={ReplicateId}&WriteinQueue={WriteinQueue}", Method = "GET", ...)] // ResponseStandardDTO ReplicateProcess(int ReplicateId, int WriteinQueue); public class ReplicateProcess : BaseEndpoint> { private readonly IReplicateBLL _ReplicateBLL; public ReplicateProcess(IReplicateBLL replicateBLL) { _ReplicateBLL = replicateBLL; } public override void Configure() { Get("/Replicate/Process"); AllowAnonymous(); } public record ReplicateProcessParameters( [property: FromHeader] string Login, [property: QueryParam] int ReplicateId, [property: QueryParam] int WriteinQueue ); // Write/process-trigger endpoint — no cache key. protected override string? GetCacheKey(ReplicateProcessParameters req, LoginDTO LoginDTO) => null; protected override async Task> ExecuteAsync(ReplicateProcessParameters req, LoginDTO LoginDTO, CancellationToken ct) { try { var Result = await _ReplicateBLL.ReplicateProcessAsync(req.ReplicateId, req.WriteinQueue, LoginDTO!, ct); return await GB5Shared.ResponseStandard.Response.CreateSuccessResponse(Result, CacheKeyLevel.NOT_REQUIRED, LoginDTO); } catch (Exception ex) { return await GB5Shared.ResponseStandard.Response.CreateExceptionError(ex, CacheKeyLevel.NOT_REQUIRED, LoginDTO, ex.Message, 500); } } } }