@@ -6,13 +6,15 @@ import {
6
6
} from '~/libs/packages/controller/controller.js' ;
7
7
import { HttpCode } from '~/libs/packages/http/http.js' ;
8
8
import { type ILogger } from '~/libs/packages/logger/logger.js' ;
9
+ import { type MapService } from '~/packages/map/map.service.js' ;
9
10
import { type OrderService } from '~/packages/orders/order.service.js' ;
10
11
11
12
import { AuthStrategy } from '../auth/auth.js' ;
12
13
import { type UserEntityObjectWithGroupT } from '../users/users.js' ;
13
14
import { OrdersApiPath } from './libs/enums/enums.js' ;
14
15
import {
15
16
type Id ,
17
+ type OrderCalculatePriceRequestDto ,
16
18
type OrderCreateRequestDto ,
17
19
type OrderResponseDto ,
18
20
type OrderUpdateRequestDto ,
@@ -200,16 +202,21 @@ import {
200
202
class OrderController extends Controller {
201
203
private orderService : OrderService ;
202
204
205
+ private mapService : MapService ;
206
+
203
207
public constructor ( {
204
208
logger,
205
209
orderService,
210
+ mapService,
206
211
} : {
207
212
logger : ILogger ;
208
213
orderService : OrderService ;
214
+ mapService : MapService ;
209
215
} ) {
210
216
super ( logger , ApiPath . ORDERS ) ;
211
217
212
218
this . orderService = orderService ;
219
+ this . mapService = mapService ;
213
220
214
221
this . addRoute ( {
215
222
path : OrdersApiPath . ROOT ,
@@ -291,6 +298,19 @@ class OrderController extends Controller {
291
298
} > ,
292
299
) ,
293
300
} ) ;
301
+
302
+ this . addRoute ( {
303
+ path : OrdersApiPath . CALCULATE_PRICE ,
304
+ method : 'POST' ,
305
+ authStrategy : AuthStrategy . INJECT_USER ,
306
+ handler : ( options ) =>
307
+ this . calculatePrice (
308
+ options as ApiHandlerOptions < {
309
+ body : OrderCalculatePriceRequestDto ;
310
+ user : UserEntityObjectWithGroupT | null ;
311
+ } > ,
312
+ ) ,
313
+ } ) ;
294
314
}
295
315
296
316
/**
@@ -574,6 +594,20 @@ class OrderController extends Controller {
574
594
} ) ,
575
595
} ;
576
596
}
597
+
598
+ private async calculatePrice (
599
+ options : ApiHandlerOptions < {
600
+ body : OrderCalculatePriceRequestDto ;
601
+ user : UserEntityObjectWithGroupT | null ;
602
+ } > ,
603
+ ) : Promise < ApiHandlerResponse > {
604
+ return {
605
+ status : HttpCode . OK ,
606
+ payload : await this . mapService . getPriceByDistance ( {
607
+ ...options . body ,
608
+ } ) ,
609
+ } ;
610
+ }
577
611
}
578
612
579
613
export { OrderController } ;
0 commit comments