Cleaning up our make reservation page and testing everything
This commit is contained in:
@ -70,14 +70,33 @@ func (m *Repository) Majors(w http.ResponseWriter, r *http.Request) {
|
||||
func (m *Repository) MakeReservation(w http.ResponseWriter, r *http.Request) {
|
||||
// For the first time render emptyReservation so that this object is
|
||||
// filled with the info when sent back.
|
||||
var emptyReservation models.Reservation
|
||||
data := make(map[string]interface{})
|
||||
res, ok := m.App.Session.Get(r.Context(), "reservation").(models.Reservation)
|
||||
if !ok {
|
||||
helpers.ServerError(w, errors.New("cannot get reservation from session"))
|
||||
return
|
||||
}
|
||||
|
||||
data["reservation"] = emptyReservation
|
||||
room, err := m.DB.GetRoomById(res.RoomID)
|
||||
if err != nil {
|
||||
helpers.ServerError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
res.Room.RoomName = room.RoomName
|
||||
|
||||
sd := res.StartDate.Format("2006-01-02")
|
||||
ed := res.EndDate.Format("2006-01-02")
|
||||
stringMap := make(map[string]string)
|
||||
stringMap["start_date"] = sd
|
||||
stringMap["end_date"] = ed
|
||||
|
||||
data := make(map[string]interface{})
|
||||
data["reservation"] = res
|
||||
|
||||
render.Template(w, r, "make-reservation.page.tmpl", &models.TemplateData{
|
||||
Form: forms.New(nil),
|
||||
Data: data,
|
||||
Form: forms.New(nil),
|
||||
Data: data,
|
||||
StringMap: stringMap,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -126,3 +126,23 @@ func (m *postgresDBRepo) SearchAvailabilityForAllRooms(start, end time.Time) ([]
|
||||
|
||||
return rooms, nil
|
||||
}
|
||||
|
||||
// GetRoomById gets a room by id
|
||||
func (m *postgresDBRepo) GetRoomById(id int) (models.Room, error) {
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||
defer cancel()
|
||||
|
||||
var room models.Room
|
||||
stmt := `select
|
||||
id, room_name, created_at, updated_at
|
||||
from
|
||||
rooms
|
||||
where id = $1`
|
||||
|
||||
row := m.DB.QueryRowContext(ctx, stmt, id)
|
||||
err := row.Scan(&room.ID, &room.RoomName, &room.CreatedAt, &room.UpdatedAt)
|
||||
if err != nil {
|
||||
return room, err
|
||||
}
|
||||
return room, nil
|
||||
}
|
||||
|
@ -12,4 +12,5 @@ type DatabaseRepo interface {
|
||||
InsertRoomRestriction(res models.RoomRestriction) error
|
||||
SearchAvailabilityByDatesByRoomID(start, end time.Time, roomID int) (bool, error)
|
||||
SearchAvailabilityForAllRooms(start, end time.Time) ([]models.Room, error)
|
||||
GetRoomById(id int) (models.Room, error)
|
||||
}
|
||||
|
Reference in New Issue
Block a user