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;
        }
    }

}