using FastEndpoints; using GB5Shared.DTO.Framework.Login; using GB5Shared.DTO.Framework.ResponseStandard; using GB5Shared.FastEndPoint; using SkillManagementBLL.SkillDomain; using SkillManagementDAL.DTO.SkillDomain; using static GB5Shared.GB5Constant.Constant; namespace SkillManagementSL.EndPoints.SkillDomain { public class SaveSkillDomain : BaseEndpoint> { private readonly ISkillDomainBLL _bll; public SaveSkillDomain(ISkillDomainBLL bll) { _bll = bll; } public override void Configure() { Post("/SkillDomain/SaveSkillDomain"); AllowAnonymous(); } public record SaveSkillDomainParameters( [property: FromHeader] string Login, [property: FromBody] SkillDomainDTO SkillDomainDTO ); protected override string? GetCacheKey(SaveSkillDomainParameters req, LoginDTO login) => $"Skill:Domain:{login.ClientId}:{req.SkillDomainDTO.DomainId}"; protected override bool ShouldInvalidateCache(SaveSkillDomainParameters req, LoginDTO login) => true; protected override async Task> ExecuteAsync( SaveSkillDomainParameters req, LoginDTO login, CancellationToken ct) { var result = await _bll.Save(req.SkillDomainDTO, login, ct); return await GB5Shared.ResponseStandard.Response.CreateSuccessResponse(result, CacheKeyLevel.NOT_REQUIRED, login); } } }