Skip to content

Commit 9c5f60c

Browse files
committed
Season object status can be overridden per season
1 parent f0e249a commit 9c5f60c

5 files changed

Lines changed: 90 additions & 11 deletions

File tree

SeatsioDotNet.Test/Events/ChangeObjectStatusInBatchTest.cs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,22 @@ public async Task OverrideSeasonStatus()
127127
Assert.Equal(EventObjectInfo.Free, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
128128
}
129129

130+
[Fact]
131+
public async Task OverrideSeasonStatusWithSeason()
132+
{
133+
var chartKey = CreateTestChart();
134+
var season = await Client.Seasons.CreateAsync(chartKey, null, null, null, new[] {"event1"});
135+
await Client.Events.BookAsync(season.Key, new[] {"A-1"});
136+
137+
var result = await Client.Events.ChangeObjectStatusAsync(new[]
138+
{
139+
new StatusChangeRequest(type: StatusChangeRequest.OVERRIDE_SEASON_STATUS, eventKey: "event1", objects: new[] {"A-1"}, season: season.Key),
140+
});
141+
142+
Assert.Equal(EventObjectInfo.Free, result[0].Objects["A-1"].Status);
143+
Assert.Equal(EventObjectInfo.Free, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
144+
}
145+
130146
[Fact]
131147
public async Task UseSeasonStatus()
132148
{
@@ -144,6 +160,23 @@ public async Task UseSeasonStatus()
144160
Assert.Equal(EventObjectInfo.Booked, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
145161
}
146162

163+
[Fact]
164+
public async Task UseSeasonStatusWithSeason()
165+
{
166+
var chartKey = CreateTestChart();
167+
var season = await Client.Seasons.CreateAsync(chartKey, null, null, null, new[] {"event1"});
168+
await Client.Events.BookAsync(season.Key, new[] {"A-1"});
169+
await Client.Events.OverrideSeasonObjectStatusAsync("event1", new[] {"A-1"});
170+
171+
var result = await Client.Events.ChangeObjectStatusAsync(new[]
172+
{
173+
new StatusChangeRequest(type: StatusChangeRequest.USE_SEASON_STATUS, eventKey: "event1", objects: new[] {"A-1"}, season: season.Key),
174+
});
175+
176+
Assert.Equal(EventObjectInfo.Booked, result[0].Objects["A-1"].Status);
177+
Assert.Equal(EventObjectInfo.Booked, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
178+
}
179+
147180
[Fact]
148181
public async Task ResaleListingId()
149182
{

SeatsioDotNet.Test/Events/OverrideSeasonObjectStatusTest.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,19 @@ public async Task Test()
1818
Assert.Equal(EventObjectInfo.Free, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
1919
Assert.Equal(EventObjectInfo.Free, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-2")).Status);
2020
}
21+
22+
[Fact]
23+
public async Task WithSeason()
24+
{
25+
var chartKey = CreateTestChart();
26+
var season = await Client.Seasons.CreateAsync(chartKey, null, null, null, new[] {"event1"});
27+
await Client.Events.BookAsync(season.Key, new[] {"A-1", "A-2"});
28+
29+
await Client.Events.OverrideSeasonObjectStatusAsync("event1", new[] {"A-1", "A-2"}, season: season.Key);
30+
31+
Assert.Equal(EventObjectInfo.Free, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
32+
Assert.Equal(EventObjectInfo.Free, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-2")).Status);
33+
}
2134
}
22-
}
35+
}
36+

SeatsioDotNet.Test/Events/UseSeasonObjectStatusTest.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,20 @@ public async Task Test()
1919
Assert.Equal(EventObjectInfo.Booked, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
2020
Assert.Equal(EventObjectInfo.Booked, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-2")).Status);
2121
}
22+
23+
[Fact]
24+
public async Task WithSeason()
25+
{
26+
var chartKey = CreateTestChart();
27+
var season = await Client.Seasons.CreateAsync(chartKey, null, null, null, new[] {"event1"});
28+
await Client.Events.BookAsync(season.Key, new[] {"A-1", "A-2"});
29+
await Client.Events.OverrideSeasonObjectStatusAsync("event1", new[] {"A-1", "A-2"});
30+
31+
await Client.Events.UseSeasonObjectStatusAsync("event1", new[] {"A-1", "A-2"}, season: season.Key);
32+
33+
Assert.Equal(EventObjectInfo.Booked, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-1")).Status);
34+
Assert.Equal(EventObjectInfo.Booked, (await Client.Events.RetrieveObjectInfoAsync("event1", "A-2")).Status);
35+
}
2236
}
23-
}
37+
}
38+

SeatsioDotNet/Events/Events.cs

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ public async Task<List<ChangeObjectStatusResult>> ChangeObjectStatusAsync(Status
373373
{
374374
var serializedRequests = requests.Select(r => ChangeObjectStatusRequest(r.Type, r.EventKey, r.Objects, r.Status,
375375
r.HoldToken, r.OrderId, r.KeepExtraData, r.IgnoreChannels, r.ChannelKeys,
376-
r.AllowedPreviousStatuses, r.RejectedPreviousStatuses, r.ResaleListingId));
376+
r.AllowedPreviousStatuses, r.RejectedPreviousStatuses, r.ResaleListingId, r.Season));
377377
var restRequest = new RestRequest("/events/actions/change-object-status", Method.Post)
378378
.AddQueryParameter("expand", "objects")
379379
.AddJsonBody(new Dictionary<string, object> {{"statusChanges", serializedRequests}});
@@ -382,10 +382,10 @@ public async Task<List<ChangeObjectStatusResult>> ChangeObjectStatusAsync(Status
382382

383383
private Dictionary<string, object> ChangeObjectStatusRequest(string type, string evnt, IEnumerable<ObjectProperties> objects,
384384
string status, string holdToken, string orderId, bool? keepExtraData, bool? ignoreChannels = null,
385-
string[] channelKeys = null, string[] allowedPreviousStatuses = null, string[] rejectedPreviousStatuses = null, string resaleListingId = null)
385+
string[] channelKeys = null, string[] allowedPreviousStatuses = null, string[] rejectedPreviousStatuses = null, string resaleListingId = null, string season = null)
386386
{
387387
var request = ChangeObjectStatusRequest(type, objects, status, holdToken, orderId, keepExtraData, ignoreChannels,
388-
channelKeys, allowedPreviousStatuses, rejectedPreviousStatuses, resaleListingId);
388+
channelKeys, allowedPreviousStatuses, rejectedPreviousStatuses, resaleListingId, season);
389389
request.Add("event", evnt);
390390
return request;
391391
}
@@ -403,7 +403,7 @@ private Dictionary<string, object> ChangeObjectStatusRequest(string type, IEnume
403403

404404
private Dictionary<string, object> ChangeObjectStatusRequest(string type, IEnumerable<ObjectProperties> objects,
405405
string status, string holdToken, string orderId, bool? keepExtraData, bool? ignoreChannels = null,
406-
string[] channelKeys = null, string[] allowedPreviousStatuses = null, string[] rejectedPreviousStatuses = null, string resaleListingId = null)
406+
string[] channelKeys = null, string[] allowedPreviousStatuses = null, string[] rejectedPreviousStatuses = null, string resaleListingId = null, string season = null)
407407
{
408408
var requestBody = new Dictionary<string, object>()
409409
{
@@ -456,6 +456,11 @@ private Dictionary<string, object> ChangeObjectStatusRequest(string type, IEnume
456456
requestBody.Add("resaleListingId", resaleListingId);
457457
}
458458

459+
if (season != null)
460+
{
461+
requestBody.Add("season", season);
462+
}
463+
459464
return requestBody;
460465
}
461466

@@ -500,19 +505,29 @@ public async Task<BestAvailableResult> ChangeObjectStatusAsync(string eventKey,
500505
return AssertOk(await _restClient.ExecuteAsync<BestAvailableResult>(restRequest, cancellationToken));
501506
}
502507

503-
public async Task OverrideSeasonObjectStatusAsync(string eventKey, string[] objects, CancellationToken cancellationToken = default)
508+
public async Task OverrideSeasonObjectStatusAsync(string eventKey, string[] objects, string season = null, CancellationToken cancellationToken = default)
504509
{
510+
var requestBody = new Dictionary<string, object> {{"objects", objects}};
511+
if (season != null)
512+
{
513+
requestBody.Add("season", season);
514+
}
505515
var restRequest = new RestRequest("/events/{key}/actions/override-season-status", Method.Post)
506516
.AddUrlSegment("key", eventKey)
507-
.AddJsonBody(new {objects});
517+
.AddJsonBody(requestBody);
508518
AssertOk(await _restClient.ExecuteAsync<BestAvailableResult>(restRequest, cancellationToken));
509519
}
510520

511-
public async Task UseSeasonObjectStatusAsync(string eventKey, string[] objects, CancellationToken cancellationToken = default)
521+
public async Task UseSeasonObjectStatusAsync(string eventKey, string[] objects, string season = null, CancellationToken cancellationToken = default)
512522
{
523+
var requestBody = new Dictionary<string, object> {{"objects", objects}};
524+
if (season != null)
525+
{
526+
requestBody.Add("season", season);
527+
}
513528
var restRequest = new RestRequest("/events/{key}/actions/use-season-status", Method.Post)
514529
.AddUrlSegment("key", eventKey)
515-
.AddJsonBody(new {objects});
530+
.AddJsonBody(requestBody);
516531
AssertOk(await _restClient.ExecuteAsync<BestAvailableResult>(restRequest, cancellationToken));
517532
}
518533

SeatsioDotNet/Events/StatusChangeRequest.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@ public class StatusChangeRequest
2222
public string[] AllowedPreviousStatuses { get; }
2323
public string[] RejectedPreviousStatuses { get; }
2424
public string ResaleListingId { get; }
25+
public string Season { get; }
2526

2627
public StatusChangeRequest(string type = CHANGE_STATUS_TO, string eventKey = null, IEnumerable<string> objects = null, string status = null,
2728
string holdToken = null, string orderId = null, bool? keepExtraData = null, bool? ignoreChannels = null, string[] channelKeys = null,
28-
string[] allowedPreviousStatuses = null, string[] rejectedPreviousStatuses = null, string resaleListingId = null)
29+
string[] allowedPreviousStatuses = null, string[] rejectedPreviousStatuses = null, string resaleListingId = null, string season = null)
2930
{
3031
Type = type;
3132
EventKey = eventKey;
@@ -39,5 +40,6 @@ public StatusChangeRequest(string type = CHANGE_STATUS_TO, string eventKey = nul
3940
AllowedPreviousStatuses = allowedPreviousStatuses;
4041
RejectedPreviousStatuses = rejectedPreviousStatuses;
4142
ResaleListingId = resaleListingId;
43+
Season = season;
4244
}
4345
}

0 commit comments

Comments
 (0)