aboutsummaryrefslogtreecommitdiff
path: root/src/Enmarcha.Backend/Services/Processors/Normalisation/ColourProcessor.cs
blob: ee4379beca66787466a7a5e28ad73fdbe7f032cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
    }
}