
using Microsoft.AspNetCore.Hosting;
using Tiobon.Core.Common.DB.Dapper.Extensions;

namespace Tiobon.Core.Common.DB.Dapper.BaseProvider.ServerMapPath;

public interface IPathProvider : IDependency
{
    string MapPath(string path);
    string MapPath(string path, bool rootPath);
    IWebHostEnvironment GetHostingEnvironment();
}

public class PathProvider : IPathProvider
{
    private IWebHostEnvironment _hostingEnvironment;

    public PathProvider(IWebHostEnvironment environment)
    {
        _hostingEnvironment = environment;
    }
    public IWebHostEnvironment GetHostingEnvironment()
    {
        return _hostingEnvironment;
    }

    public string MapPath(string path)
    {
        return MapPath(path, false);
    }
    /// <summary>
    /// 
    /// </summary>
    /// <param name="path"></param>
    /// <param name="rootPath">获取wwwroot路径</param>
    /// <returns></returns>
    public string MapPath(string path, bool rootPath)
    {
        if (rootPath)
        {
            if (_hostingEnvironment.WebRootPath == null)
            {
                _hostingEnvironment.WebRootPath = _hostingEnvironment.ContentRootPath + "/wwwroot".ReplacePath();
            }
            return Path.Combine(_hostingEnvironment.WebRootPath, path).ReplacePath();
        }
        return Path.Combine(_hostingEnvironment.ContentRootPath, path).ReplacePath();
    }
}
