From f3bf9b3cafa465366e9a6b4e601ffc4ffbeda821 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Fri, 16 Feb 2024 18:08:24 +0100 Subject: [PATCH] create booking service --- internal/booking/service.go | 17 +++++++ internal/server/handler_booking.go | 25 +++------- internal/server/routes.go | 6 +-- internal/views/base_templ.go | 4 +- internal/views/booking_by_id_templ.go | 66 +++++++++++++------------- internal/views/bookings_list_templ.go | 18 +++---- internal/views/bookings_new_templ.go | 10 ++-- internal/views/index_templ.go | 2 +- internal/views/report_section_templ.go | 22 ++++----- internal/views/reports_templ.go | 18 +++---- 10 files changed, 97 insertions(+), 91 deletions(-) diff --git a/internal/booking/service.go b/internal/booking/service.go index a6346f1..06d0a2b 100644 --- a/internal/booking/service.go +++ b/internal/booking/service.go @@ -20,6 +20,23 @@ func (bs Service) All() []*Booking { return bookings } +func (bs Service) Create(From time.Time, To time.Time, Name string, PhoneNumber string, Email string, Platform string, + CustomerNumber int, PlatformFees float64, +) *Booking { + b := &Booking{ + Name: Name, + PhoneNumber: PhoneNumber, + CustomerNumber: CustomerNumber, + Email: Email, + From: From, + To: To, + Platform: Platform, + PlatformFees: PlatformFees, + } + _ = bs.db.Create(b) + return b +} + type Line struct { From time.Time To time.Time diff --git a/internal/server/handler_booking.go b/internal/server/handler_booking.go index 44abc97..640d4db 100644 --- a/internal/server/handler_booking.go +++ b/internal/server/handler_booking.go @@ -37,18 +37,17 @@ func handleListBookingPage(bs *booking.Service) echo.HandlerFunc { } } -func (s Server) handleNewBookingPage() echo.HandlerFunc { +func handleNewBookingPage() echo.HandlerFunc { return func(c echo.Context) error { - component := views.NewBooking(constants.Platforms) - return s.renderTempl(c, http.StatusOK, component) + return renderTempl(c, http.StatusOK, views.NewBooking(constants.Platforms)) } } -func (s Server) handleCreateBooking() echo.HandlerFunc { +func handleCreateBooking(bs *booking.Service) echo.HandlerFunc { return func(c echo.Context) error { type NewBooking struct { From time.Time `json:"from"` - To time.Time `from:"to"` + To time.Time `json:"to"` Name string `form:"name"` PhoneNumber string `form:"phone_number"` Email string `form:"email"` @@ -68,22 +67,12 @@ func (s Server) handleCreateBooking() echo.HandlerFunc { ts, _ = myTime.ParseFromForm(c.FormValue("to")) nb.To = ts - b := &booking.Booking{ - Name: nb.Name, - PhoneNumber: nb.PhoneNumber, - CustomerNumber: nb.CustomerNumber, - Email: nb.Email, - From: nb.From, - To: nb.To, - Platform: nb.Platform, - PlatformFees: nb.PlatformFees, - } - _ = s.db.Create(b) + b := bs.Create(nb.From, nb.To, nb.Name, nb.PhoneNumber, nb.Email, nb.Platform, nb.CustomerNumber, nb.PlatformFees) return c.Redirect(http.StatusSeeOther, fmt.Sprintf("%s/%d", constants.RouteBooking, b.Id)) } } -func (s Server) handleBookingPage() echo.HandlerFunc { +func handleBookingPage(bs *booking.Service) echo.HandlerFunc { return func(c echo.Context) error { idStr := c.Param("id") id, err := strconv.Atoi(idStr) @@ -91,7 +80,7 @@ func (s Server) handleBookingPage() echo.HandlerFunc { return err } b := &booking.Booking{Id: id} - s.db.Preload("Items").First(b) + bs.db.Preload("Items").First(b) bvm := &views.BookingViewModel{ Id: fmt.Sprintf("%04s", strconv.Itoa(b.Id)), diff --git a/internal/server/routes.go b/internal/server/routes.go index 1b8a00b..628f017 100644 --- a/internal/server/routes.go +++ b/internal/server/routes.go @@ -26,9 +26,9 @@ func (s Server) MountHandlers() { // landing page s.Router.GET("/", handleHomePage()) s.Router.GET("/bookings", handleListBookingPage(s.bs)) - s.Router.GET(constants.RouteNewBooking, s.handleNewBookingPage()) - s.Router.POST(constants.RouteNewBooking, s.handleCreateBooking()) - s.Router.GET(fmt.Sprintf("%s/:id", constants.RouteBooking), s.handleBookingPage()) + s.Router.GET("/bookings/new", handleNewBookingPage()) + s.Router.POST("/bookings/new", handleCreateBooking(s.bs)) + s.Router.GET("/bookings/:id", handleBookingPage(s.bs)) s.Router.POST(fmt.Sprintf("%s/:id/items", constants.RouteBooking), s.handleCreateItem()) s.Router.GET("/reports", handleReportsPage()) s.Router.GET("/reports/do", handleComputeReport(s.bs)) diff --git a/internal/views/base_templ.go b/internal/views/base_templ.go index 854b5ff..f5b0f9b 100644 --- a/internal/views/base_templ.go +++ b/internal/views/base_templ.go @@ -23,7 +23,7 @@ func BaseLayout() templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("RentEase | Your Property Management System
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -31,7 +31,7 @@ func BaseLayout() templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 2) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/booking_by_id_templ.go b/internal/views/booking_by_id_templ.go index 8c6834e..10e2b2f 100644 --- a/internal/views/booking_by_id_templ.go +++ b/internal/views/booking_by_id_templ.go @@ -56,7 +56,7 @@ func BookingById(booking *BookingViewModel) templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Booking ID VFNI#") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -69,7 +69,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Manage a booking

Create PDF

Line Items

") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 15) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, item := range booking.Items { - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 22) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
#ItemQuantityPrice (€)Payment MethodPayment StatusSub-total (€)
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 16) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -195,7 +195,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 17) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -208,7 +208,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 18) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -221,7 +221,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 19) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -234,7 +234,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 20) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -247,7 +247,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 21) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -260,12 +260,12 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 23) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -278,7 +278,7 @@ func BookingById(booking *BookingViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Add line
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 33) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/bookings_list_templ.go b/internal/views/bookings_list_templ.go index 178a973..c38485a 100644 --- a/internal/views/bookings_list_templ.go +++ b/internal/views/bookings_list_templ.go @@ -38,12 +38,12 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Bookings

Overview of the activity

") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, b := range bookings { - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 8) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
IDNameTotal (€)FromToPlatform
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 3) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -65,7 +65,7 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 4) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -78,7 +78,7 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 5) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -91,7 +91,7 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 6) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -104,7 +104,7 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 7) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -117,12 +117,12 @@ func ListBookings(bookings []*ListBookingsViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 9) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/bookings_new_templ.go b/internal/views/bookings_new_templ.go index 5a51e06..f0e832b 100644 --- a/internal/views/bookings_new_templ.go +++ b/internal/views/bookings_new_templ.go @@ -29,12 +29,12 @@ func NewBooking(platforms []string) templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

New Booking

Create a new booking

") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 5) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/index_templ.go b/internal/views/index_templ.go index eb3e3bf..abb2259 100644 --- a/internal/views/index_templ.go +++ b/internal/views/index_templ.go @@ -29,7 +29,7 @@ func Index() templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("New Booking ") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/report_section_templ.go b/internal/views/report_section_templ.go index e6de19e..74a628f 100644 --- a/internal/views/report_section_templ.go +++ b/internal/views/report_section_templ.go @@ -34,12 +34,12 @@ func ReportSection(report []*ReportViewModel) templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Your report

") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } for _, row := range report { - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 10) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
IDNameFromToTotal (€)PlatformPlatform Fees
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 3) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -61,7 +61,7 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 4) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -74,7 +74,7 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 5) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -87,7 +87,7 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 6) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -100,7 +100,7 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 7) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -113,7 +113,7 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 8) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -126,7 +126,7 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 9) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -139,12 +139,12 @@ func ReportSection(report []*ReportViewModel) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 11) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/internal/views/reports_templ.go b/internal/views/reports_templ.go index 947f5db..2fde4e4 100644 --- a/internal/views/reports_templ.go +++ b/internal/views/reports_templ.go @@ -33,7 +33,7 @@ func Reports(months []string, m int, year string) templ.Component { templ_7745c5c3_Buffer = templ.GetBuffer() defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Reports

Generate monthly and yearly statements

Period
") + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 9) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err }