Skip to content

Commit 4158d71

Browse files
albsbzalbsbz
andauthored
th-219: Customer Journey Implement Order screen (#222)
* th-219: + status component * th-219: + add order screen * th-219: + add order screen * th-126: - order share files * th-219: * shared folder types * th-219: * socket service * th-219: * socket emit * th-219: + liste events * th-219: * styles * th-219: * styles * th-219: * styles * th-219: - package-lock * th-219: * map height * th-219: * map height * th-219: * package-lock * th-219: * package.json * th-219: + reversed geocoding * th-219: * merge conflict * th-219: * order response * th-219: + distance and duration calculation * th-219: + truck position update * th-219: + truck arrival time update * th-219: + ticker * th-219: * rename component * th-219: * moved deps to components * th-219: * fixed styles * th-219: * fixe merge conflicts * th-219: + google deps * th-219: - comments * th-219: + map hook * th-219: + panto * th-219: * map smooth update * th-219: - mocks * th-219: * styles * th-219: + unsubscribe sockets on page leave * th-219: * logger message * th-219: * conditionals * th-219: * subcomponents structure * th-219: * replaced factory with class * th-219: * moved map to connector * th-219: * types fixed * th-219: * replaced factory with class * th-219: * helpers * th-219: * helpers * th-219: * map center * th-219: * added hooks * th-219: * enums --------- Co-authored-by: albsbz <[email protected]>
1 parent 4d6b780 commit 4158d71

File tree

101 files changed

+1740
-198
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

101 files changed

+1740
-198
lines changed

backend/src/libs/packages/socket/libs/enums/enums.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export { SocketRoom } from './socket-room.js';
22
export {
33
ClientToServerEvent,
4+
RoomPrefix,
45
ServerToClientEvent,
56
ServerToClientResponseStatus,
67
SocketError,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export {
22
type ClientToServerEventParameter,
3+
type OrderResponseDto,
34
ServerToClientEvent,
45
} from 'shared/build/index.js';

backend/src/libs/packages/socket/socket.service.ts

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { type FastifyInstance } from 'fastify/types/instance';
2+
import { type ServerToClientEventParameter } from 'shared/build/index.js';
23
import { type Server, type Socket, Server as SocketServer } from 'socket.io';
34

45
import { type GeolocationCacheSocketService } from '~/libs/packages/geolocation-cache/geolocation-cache.js';
@@ -10,11 +11,13 @@ import { type UserService } from '~/packages/users/user.service';
1011

1112
import {
1213
ClientToServerEvent,
14+
RoomPrefix,
1315
SocketError,
1416
SocketRoom,
1517
} from './libs/enums/enums.js';
1618
import {
1719
type ClientToServerEventParameter,
20+
type OrderResponseDto,
1821
ServerToClientEvent,
1922
} from './libs/types/types.js';
2023

@@ -69,6 +72,54 @@ class SocketService {
6972
socket.on(ClientToServerEvent.LEAVE_HOME_ROOM, () =>
7073
socket.leave(SocketRoom.HOME_ROOM),
7174
);
75+
socket.on(
76+
ClientToServerEvent.SUBSCRIBE_ORDER_UPDATES,
77+
async ({
78+
orderId,
79+
}: FirstParameter<
80+
ClientToServerEventParameter[typeof ClientToServerEvent.SUBSCRIBE_ORDER_UPDATES]
81+
>) => {
82+
await socket.join(`${RoomPrefix.ORDER}${orderId}`);
83+
logger.info(
84+
`${socket.id} connected to ${RoomPrefix.ORDER}${orderId}`,
85+
);
86+
},
87+
);
88+
socket.on(
89+
ClientToServerEvent.UNSUBSCRIBE_ORDER_UPDATES,
90+
async ({
91+
orderId,
92+
}: FirstParameter<
93+
ClientToServerEventParameter[typeof ClientToServerEvent.UNSUBSCRIBE_ORDER_UPDATES]
94+
>) => {
95+
await socket.leave(`${RoomPrefix.ORDER}${orderId}`);
96+
logger.info(`${socket.id} left ${RoomPrefix.ORDER}${orderId}`);
97+
},
98+
);
99+
socket.on(
100+
ClientToServerEvent.SUBSCRIBE_TRUCK_UPDATES,
101+
async ({
102+
truckId,
103+
}: FirstParameter<
104+
ClientToServerEventParameter[typeof ClientToServerEvent.SUBSCRIBE_TRUCK_UPDATES]
105+
>) => {
106+
await socket.join(`${RoomPrefix.TRUCK}${truckId}`);
107+
logger.info(
108+
`${socket.id} connected to ${RoomPrefix.TRUCK}${truckId}`,
109+
);
110+
},
111+
);
112+
socket.on(
113+
ClientToServerEvent.UNSUBSCRIBE_TRUCK_UPDATES,
114+
async ({
115+
truckId,
116+
}: FirstParameter<
117+
ClientToServerEventParameter[typeof ClientToServerEvent.UNSUBSCRIBE_TRUCK_UPDATES]
118+
>) => {
119+
await socket.leave(`${RoomPrefix.TRUCK}${truckId}`);
120+
logger.info(`${socket.id} left ${RoomPrefix.TRUCK}${truckId}`);
121+
},
122+
);
72123

73124
socket.on(
74125
ClientToServerEvent.AUTHORIZE_DRIVER,
@@ -94,6 +145,26 @@ class SocketService {
94145
);
95146
});
96147
}
148+
149+
public notifyOrderUpdate(
150+
id: OrderResponseDto['id'],
151+
order: OrderResponseDto,
152+
): void {
153+
this.io
154+
?.to(`${RoomPrefix.ORDER}${id}`)
155+
.emit(ServerToClientEvent.ORDER_UPDATED, order);
156+
}
157+
158+
public notifyCustomerForTruckLocationUpdate(
159+
truckId: number,
160+
truckLocation: Parameters<
161+
ServerToClientEventParameter[typeof ServerToClientEvent.TRUCK_LOCATION_UPDATED]
162+
>[0],
163+
): void {
164+
this.io
165+
?.to(`${RoomPrefix.TRUCK}${truckId}`)
166+
.emit(ServerToClientEvent.TRUCK_LOCATION_UPDATED, truckLocation);
167+
}
97168
}
98169

99170
export { SocketService };

backend/src/packages/orders/libs/enums/enums.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export {
2+
ClientToServerEvent,
23
OrdersApiPath,
34
OrderStatus,
45
UserGroupKey,

backend/src/packages/orders/libs/types/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ export {
1010
type OrderCalculatePriceRequestDto,
1111
type OrderCalculatePriceResponseDto,
1212
type OrderCreateRequestDto,
13-
type OrderEntityT,
14-
type OrderFindByIdResponseDto,
13+
type OrderEntity,
1514
type OrderResponseDto,
1615
type OrderUpdateRequestDto,
1716
} from 'shared/build/index.js';

backend/src/packages/orders/order.entity.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { type ShiftEntityT } from '../shifts/shift.js';
55
import { type TruckEntityT } from '../trucks/libs/types/types.js';
66
import {
77
type DriverInfo,
8-
type OrderEntityT,
8+
type OrderEntity as OrderEntityT,
99
type OrderResponseDto,
1010
} from './libs/types/types.js';
1111

backend/src/packages/orders/order.repository.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { type UserEntityT } from '../users/users.js';
88
import { combineFilters } from './libs/helpers/combine-filters.js';
99
import {
1010
type OrderDatabaseModel,
11-
type OrderEntityT as OrderEntityT,
11+
type OrderEntity as OrderEntityT,
1212
} from './libs/types/types.js';
1313

1414
class OrderRepository implements Omit<IRepository, 'find'> {

backend/src/packages/orders/order.service.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { HttpMessage } from '~/libs/enums/enums.js';
22
import { NotFoundError } from '~/libs/exceptions/exceptions.js';
33
import { type IService } from '~/libs/interfaces/interfaces.js';
4+
import { type SocketService } from '~/libs/packages/socket/socket.service.js';
45

56
import { type BusinessService } from '../business/business.service.js';
67
import { type DriverService } from '../drivers/driver.service.js';
@@ -11,7 +12,7 @@ import { type UserEntityObjectWithGroupT } from '../users/users.js';
1112
import { OrderStatus, UserGroupKey } from './libs/enums/enums.js';
1213
import {
1314
type OrderCreateRequestDto,
14-
type OrderEntityT as OrderEntityT,
15+
type OrderEntity as OrderEntityT,
1516
type OrderResponseDto,
1617
type OrderUpdateRequestDto,
1718
} from './libs/types/types.js';
@@ -31,20 +32,24 @@ class OrderService implements Omit<IService, 'find'> {
3132

3233
private userService: UserService;
3334

35+
private socketService: SocketService;
36+
3437
public constructor({
3538
businessService,
3639
orderRepository,
3740
driverService,
3841
shiftService,
3942
truckService,
4043
userService,
44+
socket,
4145
}: {
4246
orderRepository: OrderRepository;
4347
businessService: BusinessService;
4448
driverService: DriverService;
4549
shiftService: ShiftService;
4650
truckService: TruckService;
4751
userService: UserService;
52+
socket: SocketService;
4853
}) {
4954
this.orderRepository = orderRepository;
5055

@@ -57,6 +62,8 @@ class OrderService implements Omit<IService, 'find'> {
5762
this.truckService = truckService;
5863

5964
this.userService = userService;
65+
66+
this.socketService = socket;
6067
}
6168

6269
public async create(
@@ -220,7 +227,10 @@ class OrderService implements Omit<IService, 'find'> {
220227
truck: { id: truck.id, licensePlateNumber: truck.licensePlateNumber },
221228
};
222229

223-
return OrderEntity.initialize(orderExtended).toObject();
230+
const order = OrderEntity.initialize(orderExtended).toObject();
231+
this.socketService.notifyOrderUpdate(order.id, order);
232+
233+
return order;
224234
}
225235

226236
public async findAllBusinessOrders(

backend/src/packages/orders/orders.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { database, schema } from '~/libs/packages/database/database.js';
22
import { logger } from '~/libs/packages/logger/logger.js';
3+
import { socket } from '~/libs/packages/socket/socket.js';
34

45
import { businessService } from '../business/business.js';
56
import { driverService } from '../drivers/drivers.js';
@@ -19,6 +20,7 @@ const orderService = new OrderService({
1920
shiftService,
2021
truckService,
2122
userService,
23+
socket,
2224
});
2325
const orderController = new OrderController({
2426
logger,

frontend/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,15 @@
2020
"@fortawesome/fontawesome-svg-core": "6.4.2",
2121
"@fortawesome/free-solid-svg-icons": "6.4.2",
2222
"@fortawesome/react-fontawesome": "0.2.0",
23+
"@googlemaps/js-api-loader": "1.16.2",
2324
"@hookform/resolvers": "2.9.11",
2425
"@react-google-maps/api": "2.19.2",
2526
"@reduxjs/toolkit": "1.9.3",
26-
"@vitejs/plugin-react": "4.0.4",
2727
"@rollup/pluginutils": "5.0.4",
2828
"@svgr/core": "8.1.0",
2929
"@tanstack/react-table": "8.9.3",
3030
"balloon-css": "1.2.0",
31+
"@vitejs/plugin-react": "4.0.4",
3132
"clsx": "2.0.0",
3233
"modern-normalize": "2.0.0",
3334
"react": "18.2.0",

0 commit comments

Comments
 (0)