From a3e97b31e2298d95e7deebd71268095b8ed5e9dc Mon Sep 17 00:00:00 2001 From: sephrat <34862846+sephrat@users.noreply.github.com> Date: Fri, 25 Feb 2022 14:17:37 +0100 Subject: [PATCH] feat(email-notifications): Add a link to Ombi details page in email notifications (#4517) [skip ci] --- .../EmailBasicTemplate.cs | 23 +++++++++++++++++-- .../IEmailBasicTemplate.cs | 2 +- .../Agents/EmailNotification.cs | 2 +- .../NotificationMessageContent.cs | 1 + .../NotificationMessageCurlys.cs | 22 ++++++++++++++++++ .../NotificationMessageResolver.cs | 1 + 6 files changed, 47 insertions(+), 4 deletions(-) diff --git a/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs b/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs index 455c2d182..4bac4b3d8 100644 --- a/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs +++ b/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs @@ -31,16 +31,35 @@ namespace Ombi.Notifications.Templates private const string DateKey = "{@DATENOW}"; private const string Logo = "{@LOGO}"; - public string LoadTemplate(string subject, string body, string imgsrc = default(string), string logo = default(string)) + public string LoadTemplate(string subject, string body, string imgsrc = default(string), string logo = default(string), string url = default(string)) { var sb = new StringBuilder(File.ReadAllText(TemplateLocation)); sb.Replace(SubjectKey, subject); sb.Replace(BodyKey, body); sb.Replace(DateKey, DateTime.Now.ToString("f")); - sb.Replace(Poster, string.IsNullOrEmpty(imgsrc) ? string.Empty : $"\"Poster\""); + sb.Replace(Poster, GetPosterContent(imgsrc, url)); sb.Replace(Logo, string.IsNullOrEmpty(logo) ? OmbiLogo : logo); return sb.ToString(); } + + private string GetPosterContent(string imgsrc, string url) { + string posterContent; + + if (string.IsNullOrEmpty(imgsrc)) + { + posterContent = string.Empty; + } + else + { + posterContent = $"\"Poster\""; + if (!string.IsNullOrEmpty(url)) + { + posterContent = $"{posterContent}"; + } + posterContent = $"{posterContent}"; + } + return posterContent; + } } } diff --git a/src/Ombi.Notifications.Templates/IEmailBasicTemplate.cs b/src/Ombi.Notifications.Templates/IEmailBasicTemplate.cs index 99d7c881a..0a68c0e6b 100644 --- a/src/Ombi.Notifications.Templates/IEmailBasicTemplate.cs +++ b/src/Ombi.Notifications.Templates/IEmailBasicTemplate.cs @@ -2,7 +2,7 @@ { public interface IEmailBasicTemplate { - string LoadTemplate(string subject, string body, string img = default(string), string logo = default(string)); + string LoadTemplate(string subject, string body, string img = default(string), string logo = default(string), string url = default(string)); string TemplateLocation { get; } } } \ No newline at end of file diff --git a/src/Ombi.Notifications/Agents/EmailNotification.cs b/src/Ombi.Notifications/Agents/EmailNotification.cs index cb96fcdb6..92ec766c3 100644 --- a/src/Ombi.Notifications/Agents/EmailNotification.cs +++ b/src/Ombi.Notifications/Agents/EmailNotification.cs @@ -64,7 +64,7 @@ namespace Ombi.Notifications.Agents return null; } var email = new EmailBasicTemplate(); - var html = email.LoadTemplate(parsed.Subject, parsed.Message, parsed.Image, Customization.Logo); + var html = email.LoadTemplate(parsed.Subject, parsed.Message, parsed.Image, Customization.Logo, parsed.DetailsUrl); var message = new NotificationMessage diff --git a/src/Ombi.Notifications/NotificationMessageContent.cs b/src/Ombi.Notifications/NotificationMessageContent.cs index 901b3bcb2..7141bbedd 100644 --- a/src/Ombi.Notifications/NotificationMessageContent.cs +++ b/src/Ombi.Notifications/NotificationMessageContent.cs @@ -7,6 +7,7 @@ namespace Ombi.Notifications public bool Disabled { get; set; } public string Subject { get; set; } public string Message { get; set; } + public string DetailsUrl { get; set; } public string Image { get; set; } public IReadOnlyDictionary Data { get; set; } } diff --git a/src/Ombi.Notifications/NotificationMessageCurlys.cs b/src/Ombi.Notifications/NotificationMessageCurlys.cs index 1e8469eac..7696c9c16 100644 --- a/src/Ombi.Notifications/NotificationMessageCurlys.cs +++ b/src/Ombi.Notifications/NotificationMessageCurlys.cs @@ -152,6 +152,7 @@ namespace Ombi.Notifications RequestId = req?.Id.ToString(); RequestedUser = req?.RequestedUser?.UserName; RequestedDate = req?.RequestedDate.ToString("D"); + DetailsUrl = GetDetailsUrl(s, req); if (Type.IsNullOrEmpty()) { @@ -217,6 +218,26 @@ namespace Ombi.Notifications } } + private string GetDetailsUrl(CustomizationSettings s, BaseRequest req) + { + if (string.IsNullOrEmpty(s.ApplicationUrl)) + { + return string.Empty; + } + + switch (req) + { + case MovieRequests movieRequest: + return $"{s.ApplicationUrl}/details/movie/{movieRequest.TheMovieDbId}"; + case ChildRequests tvRequest: + return $"{s.ApplicationUrl}/details/tv/{tvRequest.ParentRequest.ExternalProviderId}"; + case AlbumRequest albumRequest: + return $"{s.ApplicationUrl}/details/artist/{albumRequest.ForeignArtistId}"; + default: + return string.Empty; + } + } + private void CalculateRequestStatus(BaseRequest req) { RequestStatus = string.Empty; @@ -258,6 +279,7 @@ namespace Ombi.Notifications public string Year { get; set; } public string EpisodesList { get; set; } public string SeasonsList { get; set; } + public string DetailsUrl { get; set; } public string PosterImage { get; set; } public string ApplicationName { get; set; } public string ApplicationUrl { get; set; } diff --git a/src/Ombi.Notifications/NotificationMessageResolver.cs b/src/Ombi.Notifications/NotificationMessageResolver.cs index fe6102eda..5475f1a97 100644 --- a/src/Ombi.Notifications/NotificationMessageResolver.cs +++ b/src/Ombi.Notifications/NotificationMessageResolver.cs @@ -26,6 +26,7 @@ namespace Ombi.Notifications { var content = Resolve(notification.Message, notification.Subject, c.Curlys); content.Image = c.PosterImage; + content.DetailsUrl = c.DetailsUrl; return content; }