diff --git a/internal/booking/service.go b/internal/booking/service.go
index 387c132..dbabbcf 100644
--- a/internal/booking/service.go
+++ b/internal/booking/service.go
@@ -20,9 +20,16 @@ func NewService(db *gorm.DB) *Service {
return &Service{db: db}
}
-func (bs Service) All() []*Booking {
- bookings := make([]*Booking, 0)
- _ = bs.db.Order("id desc").Find(&bookings)
+func (bs Service) All() []*Line {
+ bookings := make([]*Line, 0)
+ bs.db.Raw(`
+ select bookings.id, customer_name, "from", "to", platform, sum(price) as total
+ from bookings
+ join items on bookings.id = items.booking_id
+ group by bookings.id
+ order by id desc;
+ `).
+ Scan(&bookings)
return bookings
}
diff --git a/internal/server/handle_bookings.go b/internal/server/handle_bookings.go
index 2d66487..962bd3c 100644
--- a/internal/server/handle_bookings.go
+++ b/internal/server/handle_bookings.go
@@ -22,14 +22,15 @@ func handleListBookingPage(bs *booking.Service, hc *config.Host) echo.HandlerFun
return func(c echo.Context) error {
bookings := bs.All()
- bvm := u.Map(bookings, func(b *booking.Booking) *views.ListBookingsViewModel {
+ bvm := u.Map(bookings, func(b *booking.Line) *views.ListBookingsViewModel {
return &views.ListBookingsViewModel{
Id: b.InvoiceNumber(hc),
Url: templ.SafeURL(fmt.Sprintf("%s/%d", constants.RouteBooking, b.Id)),
From: b.From.Format("2006-01-02"),
To: b.To.Format("2006-01-02"),
Platform: b.Platform,
- Name: b.Name,
+ Name: b.CustomerName,
+ Total: strconv.FormatFloat(b.Total, 'f', 2, 64),
}
})
diff --git a/internal/views/bookings_list.templ b/internal/views/bookings_list.templ
index 045406f..dc2061b 100644
--- a/internal/views/bookings_list.templ
+++ b/internal/views/bookings_list.templ
@@ -5,6 +5,7 @@ type ListBookingsViewModel struct {
Url templ.SafeURL
From string
To string
+ Total string
Name string
Platform string
}
@@ -36,7 +37,7 @@ templ ListBookings(bookings []*ListBookingsViewModel) {
{ b.Name } |
- |
+ { b.Total } |
{ b.From } |
{ b.To } |
{ b.Platform } |
diff --git a/internal/views/bookings_list_templ.go b/internal/views/bookings_list_templ.go
index 0c9e6eb..0a1295e 100644
--- a/internal/views/bookings_list_templ.go
+++ b/internal/views/bookings_list_templ.go
@@ -15,6 +15,7 @@ type ListBookingsViewModel struct {
Url templ.SafeURL
From string
To string
+ Total string
Name string
Platform string
}
@@ -59,7 +60,7 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component {
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(b.Id)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 34, Col: 15}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 35, Col: 15}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
@@ -72,20 +73,20 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component {
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(b.Name)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 37, Col: 19}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 38, Col: 19}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" | ")
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
- templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(b.From)
+ templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(b.Total)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 39, Col: 19}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 39, Col: 20}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
@@ -96,9 +97,9 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 string
- templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(b.To)
+ templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(b.From)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 40, Col: 17}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 40, Col: 19}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
@@ -109,14 +110,27 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
- templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(b.Platform)
+ templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(b.To)
if templ_7745c5c3_Err != nil {
- return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 41, Col: 23}
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 41, Col: 17}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" | ")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var9 string
+ templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(b.Platform)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/views/bookings_list.templ`, Line: 42, Col: 23}
+ }
+ _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err