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;
///
/// Implements , coordinating service configuration operations by persisting data through and emitting diagnostics via .
///
///
/// The class receives its collaborator and via the primary constructor parameters and .
///
///
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;
}
}