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 : $"
|
");
+ 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 = $"";
+ 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;
}