Inserting Room Restrictions
This commit is contained in:
parent
bb7fcbccb7
commit
74e9fee942
@ -95,15 +95,18 @@ func (m *Repository) PostMakeReservation(w http.ResponseWriter, r *http.Request)
|
|||||||
startDate, err := time.Parse(layout, sd)
|
startDate, err := time.Parse(layout, sd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
helpers.ServerError(w, err)
|
helpers.ServerError(w, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
endDate, err := time.Parse(layout, ed)
|
endDate, err := time.Parse(layout, ed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
helpers.ServerError(w, err)
|
helpers.ServerError(w, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
roomId, err := strconv.Atoi(r.Form.Get("room_id"))
|
roomId, err := strconv.Atoi(r.Form.Get("room_id"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
helpers.ServerError(w, err)
|
helpers.ServerError(w, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
reservation := models.Reservation{
|
reservation := models.Reservation{
|
||||||
@ -133,9 +136,25 @@ func (m *Repository) PostMakeReservation(w http.ResponseWriter, r *http.Request)
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = m.DB.InsertReservation(reservation)
|
newReservationID, err := m.DB.InsertReservation(reservation)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
helpers.ServerError(w, err)
|
helpers.ServerError(w, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
restriction := models.RoomRestriction{
|
||||||
|
StartDate: startDate,
|
||||||
|
EndDate: endDate,
|
||||||
|
ID: 0,
|
||||||
|
RoomID: roomId,
|
||||||
|
ReservationID: newReservationID,
|
||||||
|
RestrictionID: 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
err = m.DB.InsertRoomRestriction(restriction)
|
||||||
|
if err != nil {
|
||||||
|
helpers.ServerError(w, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
m.App.Session.Put(r.Context(), "reservation", reservation)
|
m.App.Session.Put(r.Context(), "reservation", reservation)
|
||||||
|
@ -55,6 +55,6 @@ type RoomRestriction struct {
|
|||||||
Restriction Restriction
|
Restriction Restriction
|
||||||
ID int
|
ID int
|
||||||
RoomID int
|
RoomID int
|
||||||
ReservationId int
|
ReservationID int
|
||||||
RestrictionID int
|
RestrictionID int
|
||||||
}
|
}
|
||||||
|
@ -11,16 +11,53 @@ func (m *postgresDBRepo) AllUsers() bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// InsertReservation inserts a reservation into the database
|
// InsertReservation inserts a reservation into the database
|
||||||
func (m *postgresDBRepo) InsertReservation(res models.Reservation) error {
|
func (m *postgresDBRepo) InsertReservation(res models.Reservation) (int, error) {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
|
var newId int
|
||||||
// statement
|
// statement
|
||||||
stmt := `insert into reservations (first_name, last_name, email, phone,
|
stmt := `insert into reservations (first_name, last_name, email, phone,
|
||||||
start_date, end_date, room_id, created_at, updated_at)
|
start_date, end_date, room_id, created_at, updated_at)
|
||||||
values ($1, $2, $3, $4, $5, $6, $7, $8, $9)`
|
values ($1, $2, $3, $4, $5, $6, $7, $8, $9) returning id`
|
||||||
|
|
||||||
_, err := m.DB.ExecContext(ctx, stmt, res.FirstName, res.LastName, res.Email, res.Phone,
|
row := m.DB.QueryRowContext(ctx, stmt,
|
||||||
res.StartDate, res.EndDate, res.RoomID, res.CreatedAt, res.UpdatedAt)
|
res.FirstName,
|
||||||
|
res.LastName,
|
||||||
|
res.Email,
|
||||||
|
res.Phone,
|
||||||
|
res.StartDate,
|
||||||
|
res.EndDate,
|
||||||
|
res.RoomID,
|
||||||
|
time.Now(),
|
||||||
|
time.Now())
|
||||||
|
|
||||||
|
err := row.Scan(&newId)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return newId, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertRoomRestriction inserts a room restriction into the database
|
||||||
|
func (m *postgresDBRepo) InsertRoomRestriction(r models.RoomRestriction) error {
|
||||||
|
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
||||||
|
defer cancel()
|
||||||
|
|
||||||
|
stmt := `insert into room_restrictions (
|
||||||
|
start_date, end_date, room_id, reservation_id, restriction_id,
|
||||||
|
created_at, updated_at)
|
||||||
|
values ($1, $2, $3, $4, $5, $6, $7)`
|
||||||
|
|
||||||
|
_, err := m.DB.ExecContext(ctx, stmt,
|
||||||
|
r.StartDate,
|
||||||
|
r.EndDate,
|
||||||
|
r.RoomID,
|
||||||
|
r.ReservationID,
|
||||||
|
r.RestrictionID,
|
||||||
|
time.Now(),
|
||||||
|
time.Now())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -5,5 +5,6 @@ import "go-udemy-web-1/internal/models"
|
|||||||
type DatabaseRepo interface {
|
type DatabaseRepo interface {
|
||||||
AllUsers() bool
|
AllUsers() bool
|
||||||
|
|
||||||
InsertReservation(res models.Reservation) error
|
InsertReservation(res models.Reservation) (int, error)
|
||||||
|
InsertRoomRestriction(res models.RoomRestriction) error
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user