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<ServiceConfigService> logger)
    : IServiceConfigService
{
    private readonly ILogger<ServiceConfigService> _logger = logger;


    public async Task<ServiceConfig?> 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;
    }
}