Skip to content

Commit

Permalink
Exposed seasonStatusOverriddenQuantity
Browse files Browse the repository at this point in the history
  • Loading branch information
mroloux committed Apr 24, 2024
1 parent 970ddb7 commit 847d2b2
Show file tree
Hide file tree
Showing 10 changed files with 105 additions and 121 deletions.
53 changes: 35 additions & 18 deletions events/event_object_info.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,41 @@
package events

type EventObjectInfo struct {
Status ObjectStatus `json:"status"`
OrderId string `json:"orderId"`
ExtraData ExtraData `json:"extraData"`
Label string `json:"label"`
Labels Labels `json:"labels"`
IDs IDs `json:"ids"`
CategoryLabel string `json:"categoryLabel"`
CategoryKey CategoryKey `json:"categoryKey"`
TicketType string `json:"ticketType"`
ForSale bool `json:"forSale"`
Section string `json:"section"`
Entrance string `json:"entrance"`
NumBooked int `json:"numBooked"`
Capacity int `json:"capacity"`
ObjectType string `json:"objectType"`
LeftNeighbour string `json:"leftNeighbour"`
RightNeighbour string `json:"rightNeighbour"`
HoldToken *string `json:"holdToken"`
Status string `json:"status,omitempty"`
Label string `json:"label,omitempty"`
Labels Labels `json:"labels,omitempty"`
IDs IDs `json:"ids,omitempty"`
CategoryLabel string `json:"categoryLabel,omitempty"`
CategoryKey CategoryKey `json:"categoryKey,omitempty"`
TicketType string `json:"ticketType,omitempty"`
HoldToken string `json:"holdToken,omitempty"`
ObjectType string `json:"objectType,omitempty"`
BookAsAWhole bool `json:"bookAsAWhole"`
OrderId string `json:"orderId,omitempty"`
ForSale bool `json:"forSale"`
Section string `json:"section,omitempty"`
Entrance string `json:"entrance,omitempty"`
Capacity int `json:"capacity"`
NumBooked int `json:"numBooked"`
NumFree int `json:"numFree"`
NumHeld int `json:"numHeld"`
NumSeats int `json:"numSeats"`
ExtraData ExtraData `json:"extraData,omitempty"`
IsAccessible bool `json:"isAccessible"`
IsCompanionSeat bool `json:"isCompanionSeat"`
HasRestrictedView bool `json:"hasRestrictedView"`
DisplayedObjectType string `json:"displayedObjectType,omitempty"`
LeftNeighbour string `json:"leftNeighbour,omitempty"`
RightNeighbour string `json:"rightNeighbour,omitempty"`
IsAvailable bool `json:"isAvailable"`
AvailabilityReason string `json:"availabilityReason,omitempty"`
Channel string `json:"channel,omitempty"`
DistanceToFocalPoint float64 `json:"distanceToFocalPoint"`
Holds map[string]map[string]int `json:"holds,omitempty"`
VariableOccupancy bool `json:"variableOccupancy"`
MinOccupancy int `json:"minOccupancy"`
MaxOccupancy int `json:"maxOccupancy"`
SeasonStatusOverriddenQuantity int `json:"seasonStatusOverriddenQuantity"`
}

type IDs struct {
Expand Down
10 changes: 5 additions & 5 deletions events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,9 @@ type BestAvailableResult struct {
type ObjectStatus string

const (
FREE ObjectStatus = "free"
BOOKED ObjectStatus = "booked"
HELD ObjectStatus = "reservedByToken"
FREE = "free"
BOOKED = "booked"
HELD = "reservedByToken"
)

type StatusChanges struct {
Expand All @@ -76,8 +76,8 @@ type StatusChanges struct {
KeepExtraData bool `json:"keepExtraData"`
IgnoreChannels bool `json:"ignoreChannels"`
ChannelKeys []string `json:"channelKeys,omitempty"`
AllowedPreviousStatuses []ObjectStatus `json:"allowedPreviousStatuses,omitempty"`
RejectedPreviousStatuses []ObjectStatus `json:"rejectedPreviousStatuses,omitempty"`
AllowedPreviousStatuses []string `json:"allowedPreviousStatuses,omitempty"`
RejectedPreviousStatuses []string `json:"rejectedPreviousStatuses,omitempty"`
}

type StatusChangeParams struct {
Expand Down
4 changes: 2 additions & 2 deletions events_test/book_objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ func TestHoldTokens(t *testing.T) {
require.NoError(t, err)

require.Equal(t, events.BOOKED, objects["A-1"].Status)
require.Nil(t, objects["A-1"].HoldToken)
require.Empty(t, objects["A-1"].HoldToken)
require.Equal(t, events.BOOKED, objects["A-2"].Status)
require.Nil(t, objects["A-1"].HoldToken)
require.Empty(t, objects["A-1"].HoldToken)
}

func TestOrderId(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions events_test/change_best_available_object_status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,8 +165,8 @@ func TestChangeBestAvailableObjectStatusWithHoldToken(t *testing.T) {

require.True(t, bestAvailableResult.NextToEachOther)
require.Equal(t, []string{"A-4", "A-5"}, bestAvailableResult.Objects)
require.Equal(t, holdToken.HoldToken, *bestAvailableResult.ObjectDetails["A-4"].HoldToken)
require.Equal(t, holdToken.HoldToken, *bestAvailableResult.ObjectDetails["A-5"].HoldToken)
require.Equal(t, holdToken.HoldToken, bestAvailableResult.ObjectDetails["A-4"].HoldToken)
require.Equal(t, holdToken.HoldToken, bestAvailableResult.ObjectDetails["A-5"].HoldToken)
}

func TestChangeBestAvailableObjectStatusWithChannelsKeys(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions events_test/change_object_status_in_batch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func TestBatchAllowedPreviousStatuses(t *testing.T) {
StatusChanges: events.StatusChanges{
Status: "lolzor",
Objects: []events.ObjectProperties{{ObjectId: "A-1"}},
AllowedPreviousStatuses: []events.ObjectStatus{"MustBeThisStatus"}},
AllowedPreviousStatuses: []string{"MustBeThisStatus"}},
},
)
seatsioError := err.(*shared.SeatsioError)
Expand All @@ -99,7 +99,7 @@ func TestBatchRejectedPreviousStatuses(t *testing.T) {
require.NoError(t, err)

_, err = client.Events.ChangeObjectStatusInBatch(
events.StatusChangeInBatchParams{Event: event.Key, StatusChanges: events.StatusChanges{Status: "lolzor", Objects: []events.ObjectProperties{{ObjectId: "A-1"}}, RejectedPreviousStatuses: []events.ObjectStatus{events.FREE}}},
events.StatusChangeInBatchParams{Event: event.Key, StatusChanges: events.StatusChanges{Status: "lolzor", Objects: []events.ObjectProperties{{ObjectId: "A-1"}}, RejectedPreviousStatuses: []string{events.FREE}}},
)
seatsioError := err.(*shared.SeatsioError)
require.Equal(t, "ILLEGAL_STATUS_CHANGE", seatsioError.Code)
Expand Down
4 changes: 2 additions & 2 deletions events_test/change_object_status_multiple_events_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ func TestAllowedPreviousStatuses(t *testing.T) {
StatusChanges: events.StatusChanges{
Status: events.BOOKED,
Objects: []events.ObjectProperties{{ObjectId: "A-1"}},
AllowedPreviousStatuses: []events.ObjectStatus{"MustBeThisStatus"},
AllowedPreviousStatuses: []string{"MustBeThisStatus"},
},
})
seatsioErr := err.(*shared.SeatsioError)
Expand All @@ -201,7 +201,7 @@ func TestRejectedPreviousStatuses(t *testing.T) {
StatusChanges: events.StatusChanges{
Status: events.BOOKED,
Objects: []events.ObjectProperties{{ObjectId: "A-1"}},
RejectedPreviousStatuses: []events.ObjectStatus{events.FREE},
RejectedPreviousStatuses: []string{events.FREE},
},
})
seatsioErr := err.(*shared.SeatsioError)
Expand Down
10 changes: 6 additions & 4 deletions events_test/change_object_status_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ func TestChangeObjectStatusWithObjectDetails(t *testing.T) {
objects, err := client.Events.ChangeObjectStatus([]string{event.Key}, []string{"A-1"}, "foo")
require.NoError(t, err)

var status events.ObjectStatus = "foo"
var status = "foo"
require.Len(t, objects.Objects, 1)
eventObjectInfo := objects.Objects["A-1"]
require.Equal(t, status, eventObjectInfo.Status)
Expand All @@ -55,6 +55,8 @@ func TestChangeObjectStatusWithObjectDetails(t *testing.T) {
require.Nil(t, eventObjectInfo.ExtraData)
require.Empty(t, eventObjectInfo.LeftNeighbour)
require.Equal(t, "A-2", eventObjectInfo.RightNeighbour)
require.Empty(t, eventObjectInfo.HoldToken)
require.Equal(t, 0, eventObjectInfo.SeasonStatusOverriddenQuantity)
}

func TestChangeObjectStatusWithHoldToken(t *testing.T) {
Expand All @@ -79,7 +81,7 @@ func TestChangeObjectStatusWithHoldToken(t *testing.T) {
require.NoError(t, err)

require.Equal(t, events.HELD, objects.Objects["A-1"].Status)
require.Equal(t, holdToken.HoldToken, *objects.Objects["A-1"].HoldToken)
require.Equal(t, holdToken.HoldToken, objects.Objects["A-1"].HoldToken)
}

func TestChangeObjectStatusWithExtraData(t *testing.T) {
Expand Down Expand Up @@ -267,7 +269,7 @@ func TestChangeObjectStatusWithAllowedPreviousStatus(t *testing.T) {
Objects: []events.ObjectProperties{
{ObjectId: "A-1"},
},
AllowedPreviousStatuses: []events.ObjectStatus{"onlyAllowedPreviousStatus"},
AllowedPreviousStatuses: []string{"onlyAllowedPreviousStatus"},
},
})

Expand All @@ -289,7 +291,7 @@ func TestChangeObjectStatusWithRejectedPreviousStatus(t *testing.T) {
Objects: []events.ObjectProperties{
{ObjectId: "A-1"},
},
RejectedPreviousStatuses: []events.ObjectStatus{"free"},
RejectedPreviousStatuses: []string{"free"},
},
})

Expand Down
4 changes: 2 additions & 2 deletions events_test/release_objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func TestWithHoldToken(t *testing.T) {
retrieveObjectInfo, err := client.Events.RetrieveObjectInfo(event.Key, "A-1", "A-2")
require.NoError(t, err)
require.Equal(t, events.FREE, retrieveObjectInfo["A-1"].Status)
require.Nil(t, retrieveObjectInfo["A-2"].HoldToken)
require.Empty(t, retrieveObjectInfo["A-2"].HoldToken)
}

func TestWithOrderId(t *testing.T) {
Expand Down Expand Up @@ -198,5 +198,5 @@ func TestBestAvailable(t *testing.T) {
retrieveObjectInfo, err := client.Events.RetrieveObjectInfo(event.Key, "C-4", "C-5")
require.NoError(t, err)
require.Equal(t, events.FREE, retrieveObjectInfo["C-4"].Status)
require.Nil(t, retrieveObjectInfo["C-5"].HoldToken)
require.Empty(t, retrieveObjectInfo["C-5"].HoldToken)
}
86 changes: 15 additions & 71 deletions reports/event_reports.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package reports

import (
"github.com/imroc/req/v3"
"github.com/seatsio/seatsio-go/v6/events"
"github.com/seatsio/seatsio-go/v6/shared"
)

Expand Down Expand Up @@ -46,71 +47,14 @@ const (
NoCategory string = "NO_CATEGORY"
NotAvailable string = "not_available"
NotForSale string = "not_for_sale"
Free string = "free"
Booked string = "booked"
Held string = "reservedByToken"
)

type LabelAndType struct {
Label string `json:"label,omitempty"`
LabelType string `json:"type,omitempty"`
}

type Labels struct {
Own LabelAndType `json:"own,omitempty"`
Parent LabelAndType `json:"parent,omitempty"`
Section string `json:"section,omitempty"`
}

type IDs struct {
Own string `json:"own,omitempty"`
Parent string `json:"parent,omitempty"`
Section string `json:"section,omitempty"`
}

type EventObjectInfo struct {
Status string `json:"status,omitempty"`
Label string `json:"label,omitempty"`
Labels Labels `json:"labels,omitempty"`
IDs IDs `json:"ids,omitempty"`
CategoryLabel string `json:"categoryLabel,omitempty"`
CategoryKey string `json:"categoryKey,omitempty"`
TicketType string `json:"ticketType,omitempty"`
HoldToken string `json:"holdToken,omitempty"`
ObjectType string `json:"objectType,omitempty"`
BookAsAWhole bool `json:"bookAsAWhole"`
OrderId string `json:"orderId,omitempty"`
ForSale bool `json:"forSale"`
Section string `json:"section,omitempty"`
Entrance string `json:"entrance,omitempty"`
Capacity int `json:"capacity"`
NumBooked int `json:"numBooked"`
NumFree int `json:"numFree"`
NumHeld int `json:"numHeld"`
NumSeats int `json:"numSeats"`
ExtraData map[string]interface{} `json:"extraData,omitempty"`
IsAccessible bool `json:"isAccessible"`
IsCompanionSeat bool `json:"isCompanionSeat"`
HasRestrictedView bool `json:"hasRestrictedView"`
DisplayedObjectType string `json:"displayedObjectType,omitempty"`
LeftNeighbour string `json:"leftNeighbour,omitempty"`
RightNeighbour string `json:"rightNeighbour,omitempty"`
IsAvailable bool `json:"isAvailable"`
AvailabilityReason string `json:"availabilityReason,omitempty"`
Channel string `json:"channel,omitempty"`
DistanceToFocalPoint float64 `json:"distanceToFocalPoint"`
Holds map[string]map[string]int `json:"holds,omitempty"`
VariableOccupancy bool `json:"variableOccupancy"`
MinOccupancy int `json:"minOccupancy"`
MaxOccupancy int `json:"maxOccupancy"`
}

type DetailedEventReport struct {
Items map[string][]EventObjectInfo
Items map[string][]events.EventObjectInfo
}

func (reports *EventReports) fetchReport(eventKey string, reportType string) (*DetailedEventReport, error) {
var report map[string][]EventObjectInfo
var report map[string][]events.EventObjectInfo
result, err := reports.Client.R().
SetSuccessResult(&report).
SetPathParam("eventKey", eventKey).
Expand All @@ -119,8 +63,8 @@ func (reports *EventReports) fetchReport(eventKey string, reportType string) (*D
return shared.AssertOk(result, err, &DetailedEventReport{Items: report})
}

func (reports *EventReports) fetchReportWithFilter(eventKey string, reportType string, filter string) ([]EventObjectInfo, error) {
var report map[string][]EventObjectInfo
func (reports *EventReports) fetchReportWithFilter(eventKey string, reportType string, filter string) ([]events.EventObjectInfo, error) {
var report map[string][]events.EventObjectInfo
result, err := reports.Client.R().
SetSuccessResult(&report).
SetPathParam("eventKey", eventKey).
Expand All @@ -143,79 +87,79 @@ func (reports *EventReports) ByAvailabilityReason(eventKey string) (*DetailedEve
return reports.fetchReport(eventKey, "byAvailabilityReason")
}

func (reports *EventReports) BySpecificAvailabilityReason(eventKey string, reason string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificAvailabilityReason(eventKey string, reason string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byAvailabilityReason", reason)
}

func (reports *EventReports) ByAvailability(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byAvailability")
}

func (reports *EventReports) BySpecificAvailability(eventKey string, availability string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificAvailability(eventKey string, availability string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byAvailability", availability)
}

func (reports *EventReports) ByStatus(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byStatus")
}

func (reports *EventReports) BySpecificStatus(eventKey string, status string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificStatus(eventKey string, status string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byStatus", status)
}

func (reports *EventReports) ByCategoryLabel(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byCategoryLabel")
}

func (reports *EventReports) BySpecificCategoryLabel(eventKey string, label string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificCategoryLabel(eventKey string, label string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byCategoryLabel", label)
}

func (reports *EventReports) ByCategoryKey(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byCategoryKey")
}

func (reports *EventReports) BySpecificCategoryKey(eventKey string, key string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificCategoryKey(eventKey string, key string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byCategoryKey", key)
}

func (reports *EventReports) ByLabel(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byLabel")
}

func (reports *EventReports) BySpecificLabel(eventKey string, label string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificLabel(eventKey string, label string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byLabel", label)
}

func (reports *EventReports) ByOrderId(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byOrderId")
}

func (reports *EventReports) BySpecificOrderId(eventKey string, orderId string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificOrderId(eventKey string, orderId string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byOrderId", orderId)
}

func (reports *EventReports) BySection(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "bySection")
}

func (reports *EventReports) BySpecificSection(eventKey string, section string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificSection(eventKey string, section string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "bySection", section)
}

func (reports *EventReports) ByChannel(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byChannel")
}

func (reports *EventReports) BySpecificChannel(eventKey string, channel string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificChannel(eventKey string, channel string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byChannel", channel)
}

func (reports *EventReports) ByObjectType(eventKey string) (*DetailedEventReport, error) {
return reports.fetchReport(eventKey, "byObjectType")
}

func (reports *EventReports) BySpecificObjectType(eventKey string, objectType string) ([]EventObjectInfo, error) {
func (reports *EventReports) BySpecificObjectType(eventKey string, objectType string) ([]events.EventObjectInfo, error) {
return reports.fetchReportWithFilter(eventKey, "byObjectType", objectType)
}

Expand Down
Loading

0 comments on commit 847d2b2

Please sign in to comment.