Showing one reservation

This commit is contained in:
2024-07-24 22:23:31 +02:00
parent dafd6f21c0
commit 845f3a5836
7 changed files with 136 additions and 1 deletions

View File

@ -539,6 +539,36 @@ func (m *Repository) AdminAllReservations(w http.ResponseWriter, r *http.Request
})
}
// AdminShowReservation shows the detail of a reservation
func (m *Repository) AdminShowReservation(w http.ResponseWriter, r *http.Request) {
exploded := strings.Split(r.RequestURI, "/")
id, err := strconv.Atoi(exploded[4])
if err != nil {
helpers.ServerError(w, err)
}
src := exploded[3]
stringMap := make(map[string]string)
stringMap["src"] = src
// get reservation from the database
res, err := m.DB.GetReservationByID(id)
if err != nil {
helpers.ServerError(w, err)
}
data := make(map[string]interface{})
data["reservation"] = res
render.Template(w, r, "admin-reservations-show.page.tmpl", &models.TemplateData{
StringMap: stringMap,
Data: data,
Form: forms.New(nil),
})
}
// AdminReservationsCalendar displays the reservation calendar
func (m *Repository) AdminReservationsCalendar(w http.ResponseWriter, r *http.Request) {
render.Template(w, r, "admin-reservations-calendar.page.tmpl", &models.TemplateData{})
}

View File

@ -306,3 +306,39 @@ func (m *postgresDBRepo) AllNewReservations() ([]models.Reservation, error) {
return reservations, nil
}
// GetReservationByID returns one reservation by ID
func (m *postgresDBRepo) GetReservationByID(id int) (models.Reservation, error) {
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
var res models.Reservation
query := `select r.id, r.first_name, r.last_name, r.email, r.phone,
r.start_date, r.end_date, r.room_id, r.created_at,
r.updated_at, r.processed, rm.id, rm.room_name
from reservations r
left join rooms rm on (r.room_id = rm.id)
where r.id = $1`
row := m.DB.QueryRowContext(ctx, query, id)
err := row.Scan(
&res.ID,
&res.FirstName,
&res.LastName,
&res.Email,
&res.Phone,
&res.StartDate,
&res.EndDate,
&res.RoomID,
&res.CreatedAt,
&res.UpdatedAt,
&res.Processed,
&res.Room.ID,
&res.Room.RoomName,
)
if err != nil {
return res, err
}
return res, nil
}

View File

@ -95,3 +95,10 @@ func (m *testDBRepo) AllNewReservations() ([]models.Reservation, error) {
return reservations, nil
}
// GetReservationByID returns one reservation by ID
func (m *testDBRepo) GetReservationByID(id int) (models.Reservation, error) {
var res models.Reservation
return res, nil
}

View File

@ -18,4 +18,5 @@ type DatabaseRepo interface {
Authenticate(email, testPassword string) (int, string, error)
AllReservations() ([]models.Reservation, error)
AllNewReservations() ([]models.Reservation, error)
GetReservationByID(id int) (models.Reservation, error)
}