016
This commit is contained in:
@@ -111,3 +111,33 @@ pub fn (app &App) controller_get_user_bookings(mut ctx Context) veb.Result {
|
|||||||
|
|
||||||
return ctx.html(html)
|
return ctx.html(html)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@['/controller/booking/user/cancel'; post]
|
||||||
|
pub fn (app &App) controller_cancel_booking(mut ctx Context, id int) veb.Result {
|
||||||
|
user_token := ctx.get_cookie('token') or { '' }
|
||||||
|
token := app.auth.find_token(user_token) or {
|
||||||
|
return ctx.html('<div class="alert alert-danger">User not logged in. Please <a href="/login">login</a> to continue.</div>')
|
||||||
|
}
|
||||||
|
|
||||||
|
if token.user_id == 0 {
|
||||||
|
return ctx.html('<div class="alert alert-danger">User not logged in. Please <a href="/login">login</a> to continue.</div>')
|
||||||
|
}
|
||||||
|
|
||||||
|
if id == 0 {
|
||||||
|
return ctx.html('<div class="alert alert-danger">Invalid booking ID</div>')
|
||||||
|
}
|
||||||
|
|
||||||
|
booking := app.service_get_booking(id) or {
|
||||||
|
return ctx.html('<div class="alert alert-danger">Booking not found</div>')
|
||||||
|
}
|
||||||
|
|
||||||
|
if booking.user_id != token.user_id {
|
||||||
|
return ctx.html('<div class="alert alert-danger">Unauthorized</div>')
|
||||||
|
}
|
||||||
|
|
||||||
|
app.service_cancel_booking(id) or {
|
||||||
|
return ctx.html('<div class="alert alert-danger">Error canceling booking: ${err}</div>')
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctx.html('<div class="alert alert-success">Booking canceled successfully!</div>')
|
||||||
|
}
|
||||||
|
@@ -23,3 +23,27 @@ fn (app &App) service_get_user_bookings(user_id int) ![]Booking {
|
|||||||
|
|
||||||
return bookings
|
return bookings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn (app &App) service_cancel_booking(id int) ! {
|
||||||
|
booking := app.service_get_booking(id) or { return error('Booking not found') }
|
||||||
|
|
||||||
|
if booking.status == 'cancelled' {
|
||||||
|
return error('Booking already cancelled')
|
||||||
|
}
|
||||||
|
|
||||||
|
sql app.db {
|
||||||
|
update Booking set status = 'cancelled' where id == id
|
||||||
|
}!
|
||||||
|
}
|
||||||
|
|
||||||
|
fn (app &App) service_get_booking(id int) !Booking {
|
||||||
|
booking := sql app.db {
|
||||||
|
select from Booking where id == id
|
||||||
|
}!
|
||||||
|
|
||||||
|
if booking.len == 0 {
|
||||||
|
return error('Booking not found')
|
||||||
|
}
|
||||||
|
|
||||||
|
return booking[0]
|
||||||
|
}
|
||||||
|
@@ -156,6 +156,8 @@
|
|||||||
<td>
|
<td>
|
||||||
@if flight.bookings[0].status == 'confirmed'
|
@if flight.bookings[0].status == 'confirmed'
|
||||||
<span class="badge bg-success">Confirmed</span>
|
<span class="badge bg-success">Confirmed</span>
|
||||||
|
@else if flight.bookings[0].status == 'cancelled'
|
||||||
|
<span class="badge bg-danger">Cancelled</span>
|
||||||
@else
|
@else
|
||||||
<span class="badge bg-warning">Pending</span>
|
<span class="badge bg-warning">Pending</span>
|
||||||
@end
|
@end
|
||||||
|
Reference in New Issue
Block a user