using CMSDAL.CustomCode.Site; using CMSDAL.DTO.Site; using GB5Shared.DTO.Framework.Login; using GB5Shared.Telemetry; namespace CMSBLL.Site; public class SiteResolverBLL : ISiteResolverBLL { private const byte SITESTATUS_ACTIVE = 1; private readonly ISiteDomainDAL _siteDomainDal; public SiteResolverBLL(ISiteDomainDAL siteDomainDal) => _siteDomainDal = siteDomainDal; public async Task ResolveByDomainAsync(string domainName, LoginDTO loginDTO, CancellationToken ct = default) { try { GB5Trace.Step("resolve-site-by-domain", new { domainName }); if (string.IsNullOrWhiteSpace(domainName)) return null; var resolution = await _siteDomainDal.ResolveSiteByDomainAsync(domainName.Trim().ToLowerInvariant(), loginDTO, ct); if (resolution is null) return null; if (resolution.SiteStatus != SITESTATUS_ACTIVE) return null; return resolution; } catch (Exception ex) { GB5Trace.MarkFailed("resolve-site-by-domain-failed", ex); throw; } } }