Showing one reservation
This commit is contained in:
		@ -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{})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user