Skip to content

Commit b7598f1

Browse files
committed
fix: event display logic
1 parent 0320a20 commit b7598f1

5 files changed

Lines changed: 33 additions & 4 deletions

File tree

SgfDevs.Tests/EventDisplayServiceTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using SgfDevs.Dev;
3+
using SgfDevs.Dev.EventSync;
34
using Xunit;
45

56
namespace SgfDevs.Tests;
@@ -60,4 +61,14 @@ public void GetCurrentAndUpcomingEvents_ReturnsOnlyVisibleWindow()
6061
[new DateTime(2026, 5, 6, 18, 30, 0), new DateTime(2026, 6, 3, 18, 30, 0)],
6162
result);
6263
}
64+
65+
[Fact]
66+
public void GetCurrentTime_UsesConfiguredEventTimeZone()
67+
{
68+
var service = new EventDisplayService(EventSyncTimeZoneResolver.Resolve("America/Chicago"));
69+
70+
var result = service.GetCurrentTime(new DateTimeOffset(2026, 5, 6, 20, 46, 0, TimeSpan.Zero));
71+
72+
Assert.Equal(new DateTime(2026, 5, 6, 15, 46, 0), result);
73+
}
6374
}

SgfDevs/Dev/EventDisplayService.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,22 @@ namespace SgfDevs.Dev;
77

88
public class EventDisplayService
99
{
10+
private readonly TimeZoneInfo _eventTimeZone;
11+
12+
public EventDisplayService()
13+
: this(TimeZoneInfo.Local)
14+
{
15+
}
16+
17+
public EventDisplayService(TimeZoneInfo eventTimeZone)
18+
{
19+
_eventTimeZone = eventTimeZone;
20+
}
21+
22+
public DateTime GetCurrentTime() => GetCurrentTime(DateTimeOffset.UtcNow);
23+
24+
public DateTime GetCurrentTime(DateTimeOffset currentTime) => TimeZoneInfo.ConvertTime(currentTime, _eventTimeZone).DateTime;
25+
1026
public bool IsCurrentOrUpcoming(DateTime eventDate, DateTime now) => eventDate.AddHours(1) > now;
1127

1228
public T? GetCurrentOrNextEvent<T>(IEnumerable<T> events, Func<T, DateTime> getDate, DateTime now)

SgfDevs/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
builder.Services.AddScoped<MemberConverter>();
5050
builder.Services.AddScoped<MemberTagDisplayService>();
5151
builder.Services.AddScoped<PresentationPresenterDisplayService>();
52-
builder.Services.AddScoped<EventDisplayService>();
52+
builder.Services.AddScoped(_ => new EventDisplayService(EventSyncTimeZoneResolver.Resolve(builder.Configuration["SGFDevs:EventTimeZoneId"])));
5353
builder.Services.AddScoped<DirectoryHelper>();
5454
builder.Services.AddScoped<NewsletterHelper>();
5555
builder.Services.AddScoped<EventSyncImportFilter>();

SgfDevs/Views/Group.cshtml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,13 @@
77
@inject PresentationPresenterDisplayService _presentationPresenterDisplayService;
88
@inject EventDisplayService _eventDisplayService;
99
@{
10+
var now = _eventDisplayService.GetCurrentTime();
1011
var upcomingPresentations = Umbraco.ContentAtRoot().First().Descendants<Presentation>()
1112
.Where(p => p.Group?.Id == Model.Id)
1213
.Where(p =>
1314
{
1415
var parentEvent = p.Parent<Event>();
15-
return parentEvent != null && _eventDisplayService.IsCurrentOrUpcoming(parentEvent.Date, DateTime.Now);
16+
return parentEvent != null && _eventDisplayService.IsCurrentOrUpcoming(parentEvent.Date, now);
1617
})
1718
.OrderBy(p => p.Parent<Event>()!.Date);
1819
var leaders = (Model.Leaders ?? []).ToArray();

SgfDevs/Views/Home.cshtml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@
1414

1515
@{
1616
Layout = "_Layout";
17+
var now = _eventDisplayService.GetCurrentTime();
1718
//var mapper = AutoMapperConfig.Configure();
18-
var visibleDevNights = _eventDisplayService.GetCurrentAndUpcomingEvents(Model.Descendants<Event>(), d => d.Date, DateTime.Now);
19+
var visibleDevNights = _eventDisplayService.GetCurrentAndUpcomingEvents(Model.Descendants<Event>(), d => d.Date, now);
1920
var nextDevNight = visibleDevNights.FirstOrDefault();
2021
var upcomingDevNights = visibleDevNights.Skip(1).ToList();
21-
var communityEvents = Model.Descendants<CommunityEvent>().Where(d => d.StartTime > DateTime.Today).OrderBy(d => d.StartTime).ToList();
22+
var communityEvents = Model.Descendants<CommunityEvent>().Where(d => d.StartTime > now.Date).OrderBy(d => d.StartTime).ToList();
2223
var allUpcomingEvents = new List<Event>();
2324

2425
var allMembers = _directoryHelper.GetAllMembers().ToList();

0 commit comments

Comments
 (0)