using adas_core.Application.Exceptions; using adas_core.Application.Repositories.Interfaces; using adas_core.Application.Services.Interfaces; using adas_core.Domain.Enums; using adas_core.Domain.Models.MongoModels; using Microsoft.Extensions.Logging; using MongoDB.Bson; namespace adas_core.Application.Services; public class ServiceConfigService( IServiceConfigRepository serviceConfigRepository, ILogger logger) : IServiceConfigService { private readonly ILogger _logger = logger; /// /// Retrieves a by its identifier, attempting lookup by the string id first /// and falling back to an lookup when the initial query returns no result. /// /// The identifier of the service configuration to retrieve. May be a string id or a valid ObjectId representation. /// The matching , or null when no record is found for the provided id. /// Thrown when the resource cannot be found after attempting both the string id and the parsed lookup. public async Task Get(string id) { var result = await serviceConfigRepository.FindById(id); if (result == null && ObjectId.TryParse(id, out var oid)) result = await serviceConfigRepository.FindById(oid) ?? throw new NotFoundException(HttpEnum.ErrorMessage.NotFoundResourceMissing); _logger.LogDebug("ServiceConfig {id} found: {result}", id, result != null); return result; } }