Skip to content

Commit

Permalink
store the price in a float to translate later
Browse files Browse the repository at this point in the history
  • Loading branch information
fearoffish committed Dec 4, 2023
1 parent b267c4d commit 559d186
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 45 deletions.
51 changes: 21 additions & 30 deletions apiserver/server_billable_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,6 @@ func BillableEventsHandler(store eventio.BillableEventReader, consolidatedStore

// Assume rows is a slice of event data
taskEvents := make(map[string]*eventio.BillableEvent)
var totalTaskEvents int
var totalNonTaskEvents int

next := rows.Next()
for next {
Expand All @@ -85,9 +83,6 @@ func BillableEventsHandler(store eventio.BillableEventReader, consolidatedStore
// Set the key as a combination of Org GUID and Space GUID
key := fmt.Sprintf("%s-%s", row.OrgGUID, row.SpaceGUID)

// Increase the count of total task events
totalTaskEvents++

// Convert the price values to float
priceInc, _ := strconv.ParseFloat(row.Price.IncVAT, 64)
priceEx, _ := strconv.ParseFloat(row.Price.ExVAT, 64)
Expand All @@ -104,25 +99,22 @@ func BillableEventsHandler(store eventio.BillableEventReader, consolidatedStore
OrgGUID: row.OrgGUID,
OrgName: row.OrgName,
SpaceGUID: row.SpaceGUID,
SpaceName: row.SpaceName,
SpaceName: "all",
PlanGUID: row.PlanGUID,
PlanName: row.PlanName,
QuotaDefinitionGUID: row.QuotaDefinitionGUID,
Price: eventio.Price{
Details: row.Price.Details,
IncVAT: fmt.Sprintf("%.2f", priceInc),
ExVAT: fmt.Sprintf("%.2f", priceEx),
Details: row.Price.Details,
FloatIncVAT: priceInc,
FloatExVAT: priceEx,
},
}
taskEvents[key] = event
} else {
// Add this priceInc to event.Price.IncVAT
currentPriceInc, _ := strconv.ParseFloat(event.Price.IncVAT, 64)
currentPriceEx, _ := strconv.ParseFloat(event.Price.ExVAT, 64)
event.Price.IncVAT = fmt.Sprintf("%.2f", currentPriceInc+priceInc)
event.Price.ExVAT = fmt.Sprintf("%.2f", currentPriceEx+priceEx)
event.Price.FloatIncVAT = event.Price.FloatIncVAT + priceInc
event.Price.FloatExVAT = event.Price.FloatExVAT + priceEx
}
totalNonTaskEvents++

// Skip the event as we will group them all into one event at the end
next = rows.Next()
Expand All @@ -149,23 +141,22 @@ func BillableEventsHandler(store eventio.BillableEventReader, consolidatedStore
next = rows.Next()
c.Response().Flush()
}
// Now we need to send all the task events
if totalTaskEvents != 0 {
// loop over each task event and send it
for _, event := range taskEvents {
b, err := json.Marshal(event)
if err != nil {
return err
}
// send the delimiter
if _, err := c.Response().Write([]byte(",\n")); err != nil {
return err
}
if _, err := c.Response().Write(b); err != nil {
return err
}
c.Response().Flush()
// loop over each task event and send it
for _, event := range taskEvents {
event.Price.IncVAT = fmt.Sprintf("%.2f", event.Price.FloatIncVAT)
event.Price.ExVAT = fmt.Sprintf("%.2f", event.Price.FloatExVAT)
b, err := json.Marshal(event)
if err != nil {
return err
}
// send the delimiter
if _, err := c.Response().Write([]byte(",\n")); err != nil {
return err
}
if _, err := c.Response().Write(b); err != nil {
return err
}
c.Response().Flush()
}

return nil
Expand Down
25 changes: 13 additions & 12 deletions apiserver/server_billable_handler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -422,7 +422,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "app",
ResourceName: "app-1",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePrice,
}
fakeTaskEvent := &eventio.BillableEvent{
Expand All @@ -431,7 +431,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "task",
ResourceName: "task-1",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePrice,
}
fakeRows.EventReturnsOnCall(0, fakeAppEvent, nil)
Expand Down Expand Up @@ -477,7 +477,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceName: "Total Task Events",
ResourceType: "task",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: eventio.Price{
IncVAT: "10.00",
ExVAT: "8.00",
Expand Down Expand Up @@ -526,7 +526,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "app",
ResourceName: "app-1",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePriceOrg1,
}
fakeTaskEvent1Org1 := &eventio.BillableEvent{
Expand All @@ -535,7 +535,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "task",
ResourceName: "task-1",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePriceOrg1,
}
fakeAppEventOrg2 := &eventio.BillableEvent{
Expand All @@ -544,7 +544,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "app",
ResourceName: "app-1",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePriceOrg2,
}
fakeTaskEvent1Org2 := &eventio.BillableEvent{
Expand All @@ -553,7 +553,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "task",
ResourceName: "task-1",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePriceOrg2,
}
fakeTaskEvent2Org2 := &eventio.BillableEvent{
Expand All @@ -562,7 +562,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceType: "task",
ResourceName: "task-2",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: fakePriceOrg2,
}
fakeRows.EventReturnsOnCall(0, fakeAppEventOrg1, nil)
Expand Down Expand Up @@ -617,7 +617,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceName: "Total Task Events",
ResourceType: "task",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: eventio.Price{
IncVAT: "10.00",
ExVAT: "8.00",
Expand All @@ -632,7 +632,7 @@ var _ = Describe("BillableEventsHandler", func() {
ResourceName: "Total Task Events",
ResourceType: "task",
SpaceGUID: "space-guid",
SpaceName: "space-name",
SpaceName: "all",
Price: eventio.Price{
IncVAT: "10.00",
ExVAT: "8.00",
Expand All @@ -646,9 +646,10 @@ var _ = Describe("BillableEventsHandler", func() {
taskEventsOrg2,
}

eventsJSON, _ := json.MarshalIndent(events, "", " ")
var actualEvents []*eventio.BillableEvent
json.Unmarshal(res.Body.Bytes(), &actualEvents)

Expect(res.Body).To(MatchJSON(string(eventsJSON)))
Expect(actualEvents).To(ConsistOf(events))
Expect(res.Code).To(Equal(200))
Expect(res.Header().Get("Content-Type")).To(Equal("application/json; charset=UTF-8"))
})
Expand Down
8 changes: 5 additions & 3 deletions eventio/event_billable.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,11 @@ type PriceComponent struct {
}

type Price struct {
IncVAT string `json:"inc_vat"`
ExVAT string `json:"ex_vat"`
Details []PriceComponent `json:"details"`
IncVAT string `json:"inc_vat"`
ExVAT string `json:"ex_vat"`
FloatIncVAT float64 `json:"-"`
FloatExVAT float64 `json:"-"`
Details []PriceComponent `json:"details"`
}

type BillableEvent struct {
Expand Down

0 comments on commit 559d186

Please sign in to comment.