aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs')
-rw-r--r--src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs b/src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs
new file mode 100644
index 0000000..ee4379b
--- /dev/null
+++ b/src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs
@@ -0,0 +1,34 @@
+using Enmarcha.Backend.Helpers;
+
+namespace Enmarcha.Backend.Services.Processors.Normalisation;
+
+public class ColourProcessor : IArrivalsProcessor
+{
+ private readonly FeedService _feedService;
+
+ public ColourProcessor(FeedService feedService)
+ {
+ _feedService = feedService;
+ }
+
+ public Task ProcessAsync(ArrivalsContext context)
+ {
+ var feedId = context.StopId.Split(':')[0];
+ var (fallbackColor, fallbackTextColor) = _feedService.GetFallbackColourForFeed(feedId);
+
+ foreach (var arrival in context.Arrivals)
+ {
+ if (string.IsNullOrEmpty(arrival.Route.Colour) || arrival.Route.Colour == "FFFFFF")
+ {
+ arrival.Route.Colour = fallbackColor;
+ arrival.Route.TextColour = fallbackTextColor;
+ }
+ else if (string.IsNullOrEmpty(arrival.Route.TextColour) || arrival.Route.TextColour == "000000")
+ {
+ arrival.Route.TextColour = ContrastHelper.GetBestTextColour(arrival.Route.Colour);
+ }
+ }
+
+ return Task.CompletedTask;
+ }
+}