using FastEndpoints; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Framework.ResponseStandard; using GB5Shared.FastEndPoint; using PartnerBLL.PartnerSync; using static GB5Shared.GB5Constant.Constant; namespace PartnerSL.EndPoints.PartnerSync { public class ProvisionPartnerSync : BaseEndpoint> { private readonly IPartnerSyncBLL _bll; public ProvisionPartnerSync(IPartnerSyncBLL bll) => _bll = bll; public override void Configure() { Post("/PartnerSync/ProvisionPartnerSync"); AllowAnonymous(); } public record ProvisionPartnerSyncParameters( [property: FromHeader] string Login, [property: FromBody] ProvisionPartnerSyncRequest Request ); public class ProvisionPartnerSyncRequest { public int PartnerId { get; set; } public int TargetDbInstanceId { get; set; } public int CentralDbInstanceId { get; set; } } protected override string? GetCacheKey(ProvisionPartnerSyncParameters req, LoginDTO loginDTO) => null; protected override async Task> ExecuteAsync( ProvisionPartnerSyncParameters req, LoginDTO loginDTO, CancellationToken ct) { try { var result = await _bll.ProvisionPartnerSync( req.Request.PartnerId, req.Request.TargetDbInstanceId, req.Request.CentralDbInstanceId, 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); } } } }