using AsbCloudApp.Data;
using Microsoft.Extensions.Configuration;

namespace AsbCloudInfrastructure.Services.Email;


class DrillingMailBodyFactory : BaseFactory
{

    public DrillingMailBodyFactory(IConfiguration configuration)
        : base(configuration)
    {
    }

    public override string MakeSubject(WellDto well, string action)
    {
        var subj = $"{well.Deposit}, {well.Cluster}, {well.Caption}. Программа бурения. {action}";
        return subj;
    }

    public string MakeMailBodyForNewPublisher(WellDto well, string publisherName, string documentCategory)
    {
        var drillingProgramHref = MakeDrillingProgramHref(well);

        var body = $"<html><body><h2>Здравствуйте, {publisherName}.</h2>" +
            $"На портале {platformName} началось создание программы бурения скважины {drillingProgramHref}," +
            $" куст {well.Cluster}, месторождение {well.Deposit}." +
            $"<br><br>От вас ожидается загрузка на портал документа «{documentCategory}» в формате excel (*.xlsx)." +
            MakeSignatue() +
            $"</body></html>";
        return body;
    }

    public string MakeMailBodyForApproverNewFile(WellDto well, string approverName, int idFile, string fileName)
    {
        var drillingProgramHref = MakeDrillingProgramHref(well);

        var body = $"<html><body><h2>Здравствуйте, {approverName}.</h2>" +
            $"На портал {platformName} загружен документ {fileName}" +
            $" для согласования при создании программы бурения скважины {drillingProgramHref}, куст ({well.Cluster})" +
            $", месторождение ({well.Deposit}).<br>" +
            MakeSignatue() +
            $"</body></html>";
        return body;
    }

    public string MakeMailBodyForPublisherOnReject(WellDto well, string publisherName, int idFile, string fileName, FileMarkDto fileMark)
    {
        var drillingProgramHref = MakeDrillingProgramHref(well);

        var body = $"<html><body><h2>Здравствуйте, {publisherName}.</h2>" +
            $"На портале {platformName} отклонен загруженный вами документ {fileName} " +
            $" по программе бурения скважины {drillingProgramHref}," +
            $" куст {well.Cluster}, месторождение {well.Deposit}." +
            $" Комментарий согласующего ({fileMark.User?.Name} {fileMark.User?.Surname}):<br>{fileMark.Comment}" +
            MakeSignatue() +
            $"</body></html>";
        return body;
    }

    public string MakeMailBodyForPublisherOnFullAccept(WellDto well, string publisherName, int idFile, string fileName)
    {
        var drillingProgramHref = MakeDrillingProgramHref(well);

        var body = $"<html><body><h2>Здравствуйте, {publisherName}.</h2>" +
            $"На портале {platformName} полностью согласован документ {fileName} " +
            $" по программе бурения скважины {drillingProgramHref}," +
            $" куст {well.Cluster}, месторождение {well.Deposit}." +
            MakeSignatue() +
            $"</body></html>";
        return body;
    }

    private string MakeDrillingProgramHref(WellDto well)
    {
        var drillingProgramUrl = $"{platformUrl}/well/{well.Id}/drillingProgram";
        var drillingProgramHref = MakeHref(drillingProgramUrl, well.Caption);
        return drillingProgramHref;
    }
}