using CMSMicroservice.Application.Common.FileManager;
using CMSMicroservice.Protobuf.Protos.ImageResolver;
using Grpc.Core;

namespace CMSMicroservice.WebApi.Services;

/// <summary>
/// سرویس اختصاصی resolve تصاویر — مسیر نسبی را به base64 data-URI تبدیل می‌کند.
/// FrontOffice از طریق این سرویس تمام تصاویر دینامیک را دریافت می‌کند.
/// </summary>
public class ImageResolverService : ImageResolverContract.ImageResolverContractBase
{
    private readonly IFileManager _fileManager;

    public ImageResolverService(IFileManager fileManager)
    {
        _fileManager = fileManager;
    }

    public override Task<ResolveImagesResponse> ResolveImages(ResolveImagesRequest request, ServerCallContext context)
    {
        var response = new ResolveImagesResponse();

        foreach (var path in request.Paths)
        {
            var dataUri = string.Empty;

            if (!string.IsNullOrWhiteSpace(path))
            {
                dataUri = _fileManager.ResolveImageUrl(path);
            }

            response.Images.Add(new ResolvedImage
            {
                OriginalPath = path ?? string.Empty,
                DataUri = dataUri ?? string.Empty
            });
        }

        return Task.FromResult(response);
    }
}
