@@ -2,22 +2,18 @@ package com.example.route
22
33import com.example.dto.FoodDto
44import com.example.service.OrderService.Companion.orderService
5- import com.example.util.Constants.INVALID_ORDER_ITEM_ID
6- import com.example.util.Constants.INVALID_USER_ID
5+ import com.example.util.ext.getValueFromParameters
76import io.ktor.http.*
87import io.ktor.server.application.*
98import io.ktor.server.request.*
109import io.ktor.server.response.*
1110import io.ktor.server.routing.*
12- import java.util.UUID
11+ import java.util.*
1312
1413fun Application.orderRoute () {
1514 routing {
1615 post(" /orders/{userId}/items" ) {
17- val userId = call.parameters[" userId" ].let { UUID .fromString(it) } ? : run {
18- call.respond(HttpStatusCode .BadRequest , INVALID_USER_ID )
19- return @post
20- }
16+ val userId = call.getValueFromParameters(" userId" , UUID ::fromString)
2117 val foodDto = call.receive<FoodDto >()
2218 orderService.addFoodToOrder(userId, foodDto, 1 ).fold(
2319 onSuccess = { orderId -> call.respond(HttpStatusCode .OK , orderId) },
@@ -26,11 +22,7 @@ fun Application.orderRoute() {
2622 }
2723
2824 post(" /orders/items/{itemId}" ) {
29- val itemId = call.parameters[" itemId" ]?.toIntOrNull() ? : run {
30- call.respond(HttpStatusCode .BadRequest , INVALID_ORDER_ITEM_ID )
31- return @post
32- }
33-
25+ val itemId = call.getValueFromParameters(" itemId" , String ::toInt)
3426 val quantity = call.receive<Int >()
3527 orderService.updateItemInOrder(itemId, quantity).fold(
3628 onSuccess = { item -> call.respond(HttpStatusCode .OK , item) },
@@ -39,36 +31,32 @@ fun Application.orderRoute() {
3931 }
4032
4133 get(" /orders/{userId}" ) {
42- val userId = call.parameters[" userId" ].let { UUID .fromString(it) } ? : run {
43- call.respond(HttpStatusCode .BadRequest , INVALID_USER_ID )
44- return @get
45- }
34+ val userId = call.getValueFromParameters(" userId" , UUID ::fromString)
4635 orderService.getActiveOrder(userId).fold(
4736 onSuccess = { getActiveOrderDto -> call.respond(getActiveOrderDto) },
4837 onFailure = { call.respond(HttpStatusCode .NotFound , it.message ? : " No active order found" ) }
4938 )
5039 }
5140
41+ get(" /orders/{userId}/complete" ) {
42+ val userId = call.getValueFromParameters(" userId" , UUID ::fromString)
43+ orderService.completeCurrentOrder(userId).fold(
44+ onSuccess = { call.respond(HttpStatusCode .OK , true ) },
45+ onFailure = { call.respond(HttpStatusCode .InternalServerError , it.message ? : " Unknown error" ) }
46+ )
47+ }
48+
5249 delete(" /orders/{userId}/current" ) {
53- val userId = call.parameters[" userId" ].let { UUID .fromString(it) } ? : run {
54- call.respond(HttpStatusCode .BadRequest , INVALID_USER_ID )
55- return @delete
56- }
50+ val userId = call.getValueFromParameters(" userId" , UUID ::fromString)
5751 orderService.deleteCurrentOrder(userId).fold(
5852 onSuccess = { call.respond(HttpStatusCode .OK , true ) },
5953 onFailure = { call.respond(HttpStatusCode .InternalServerError , it.message ? : " Unknown error" ) }
6054 )
6155 }
6256
6357 delete(" /orders/{userId}/{orderId}" ) {
64- val userId = call.parameters[" userId" ].let { UUID .fromString(it) } ? : run {
65- call.respond(HttpStatusCode .BadRequest , INVALID_USER_ID )
66- return @delete
67- }
68- val orderId = call.parameters[" orderId" ]?.toIntOrNull() ? : run {
69- call.respond(HttpStatusCode .BadRequest , " Invalid order id" )
70- return @delete
71- }
58+ val userId = call.getValueFromParameters(" userId" , UUID ::fromString)
59+ val orderId = call.getValueFromParameters(" orderId" , String ::toInt)
7260 orderService.deleteOrder(userId, orderId).fold(
7361 onSuccess = { call.respond(HttpStatusCode .OK , true ) },
7462 onFailure = { call.respond(HttpStatusCode .InternalServerError , it.message ? : " Unknown error" ) }
0 commit comments