Skip to content

Commit 459a2e1

Browse files
th-273: - businessId from business/driver endpoint (#275)
Co-authored-by: Alina Kupchyk <[email protected]>
1 parent b8857cd commit 459a2e1

17 files changed

+102
-146
lines changed

backend/src/packages/business/business.controller.ts

Lines changed: 32 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,14 @@ import { type ILogger } from '~/libs/packages/logger/logger.js';
99
import { AuthStrategy } from '~/packages/auth/libs/enums/enums.js';
1010

1111
import {
12-
type BusinessGetAllDriversRequestParameters,
1312
type DriverCreateUpdateRequestDto,
14-
type DriverUpdateDeleteRequestParameters,
13+
type DriverRequestParameters,
1514
} from '../drivers/drivers.js';
1615
import {
1716
driverCreateUpdateRequestBody,
18-
driverGetParameters,
19-
driverUpdateDeleteParameters,
17+
driverParameters,
2018
} from '../drivers/libs/validation-schemas/validation-schemas.js';
19+
import { type UserEntityObjectWithGroupT } from '../users/users.js';
2120
import { type BusinessService } from './business.service.js';
2221
import { BusinessApiPath } from './libs/enums/enums.js';
2322
import {
@@ -328,7 +327,7 @@ class BusinessController extends Controller {
328327
this.createDriver(
329328
options as ApiHandlerOptions<{
330329
body: DriverCreateUpdateRequestDto;
331-
params: { businessId: number };
330+
user: UserEntityObjectWithGroupT;
332331
}>,
333332
),
334333
});
@@ -339,13 +338,14 @@ class BusinessController extends Controller {
339338
authStrategy: defaultStrategies,
340339
validation: {
341340
body: driverCreateUpdateRequestBody,
342-
params: driverUpdateDeleteParameters,
341+
params: driverParameters,
343342
},
344343
handler: (options) =>
345344
this.updateDriver(
346345
options as ApiHandlerOptions<{
347346
body: DriverCreateUpdateRequestDto;
348-
params: DriverUpdateDeleteRequestParameters;
347+
params: DriverRequestParameters;
348+
user: UserEntityObjectWithGroupT;
349349
}>,
350350
),
351351
});
@@ -354,13 +354,10 @@ class BusinessController extends Controller {
354354
path: BusinessApiPath.DRIVERS,
355355
method: 'GET',
356356
authStrategy: defaultStrategies,
357-
validation: {
358-
params: driverGetParameters,
359-
},
360357
handler: (options) =>
361358
this.findAllDrivers(
362359
options as ApiHandlerOptions<{
363-
params: BusinessGetAllDriversRequestParameters;
360+
user: UserEntityObjectWithGroupT;
364361
}>,
365362
),
366363
});
@@ -370,12 +367,13 @@ class BusinessController extends Controller {
370367
method: 'DELETE',
371368
authStrategy: defaultStrategies,
372369
validation: {
373-
params: driverUpdateDeleteParameters,
370+
params: driverParameters,
374371
},
375372
handler: (options) =>
376373
this.deleteDriver(
377374
options as ApiHandlerOptions<{
378-
params: DriverUpdateDeleteRequestParameters;
375+
params: DriverRequestParameters;
376+
user: UserEntityObjectWithGroupT;
379377
}>,
380378
),
381379
});
@@ -586,20 +584,12 @@ class BusinessController extends Controller {
586584

587585
/**
588586
* @swagger
589-
* /business/{businessId}/drivers:
587+
* /business/drivers:
590588
* post:
591589
* tags:
592590
* - business/driver
593591
* summary: Create driver
594592
* description: Create driver
595-
* parameters:
596-
* - in: path
597-
* name: businessId
598-
* schema:
599-
* type: integer
600-
* required: true
601-
* description: Numeric ID of the business to create driver
602-
* example: 1
603593
* requestBody:
604594
* content:
605595
* application/json:
@@ -650,13 +640,13 @@ class BusinessController extends Controller {
650640
private async createDriver(
651641
options: ApiHandlerOptions<{
652642
body: DriverCreateUpdateRequestDto;
653-
params: { businessId: number };
643+
user: UserEntityObjectWithGroupT;
654644
}>,
655645
): Promise<ApiHandlerResponse> {
656-
const createdDriver = await this.businessService.createDriver({
657-
payload: options.body,
658-
businessId: options.params.businessId,
659-
});
646+
const createdDriver = await this.businessService.createDriver(
647+
options.body,
648+
options.user.id,
649+
);
660650

661651
return {
662652
status: HttpCode.CREATED,
@@ -666,21 +656,14 @@ class BusinessController extends Controller {
666656

667657
/**
668658
* @swagger
669-
* /business/{businessId}/driver/{driverId}:
659+
* /business/driver/{driverId}:
670660
* put:
671661
* tags:
672662
* - business/driver
673663
* summary: Update driver
674664
* description: Update driver
675665
* parameters:
676666
* - in: path
677-
* name: businessId
678-
* schema:
679-
* type: integer
680-
* required: true
681-
* description: Numeric ID of the business to update drivers
682-
* example: 1
683-
* - in: path
684667
* name: driverId
685668
* schema:
686669
* type: integer
@@ -729,13 +712,15 @@ class BusinessController extends Controller {
729712
private async updateDriver(
730713
options: ApiHandlerOptions<{
731714
body: DriverCreateUpdateRequestDto;
732-
params: DriverUpdateDeleteRequestParameters;
715+
params: DriverRequestParameters;
716+
user: UserEntityObjectWithGroupT;
733717
}>,
734718
): Promise<ApiHandlerResponse> {
735-
const updatedDriver = await this.businessService.updateDriver({
736-
driverId: options.params.driverId,
737-
payload: options.body,
738-
});
719+
const updatedDriver = await this.businessService.updateDriver(
720+
options.body,
721+
options.params.driverId,
722+
options.user.id,
723+
);
739724

740725
return {
741726
status: HttpCode.OK,
@@ -745,20 +730,12 @@ class BusinessController extends Controller {
745730

746731
/**
747732
* @swagger
748-
* /business/{businessId}/drivers:
733+
* /business/drivers:
749734
* get:
750735
* tags:
751736
* - business/driver
752737
* summary: Find all drivers
753738
* description: Find all drivers
754-
* parameters:
755-
* - in: path
756-
* name: businessId
757-
* schema:
758-
* type: integer
759-
* required: true
760-
* description: Numeric ID of the business to find drivers
761-
* example: 1
762739
* security:
763740
* - bearerAuth: []
764741
* responses:
@@ -774,11 +751,11 @@ class BusinessController extends Controller {
774751

775752
private async findAllDrivers(
776753
options: ApiHandlerOptions<{
777-
params: BusinessGetAllDriversRequestParameters;
754+
user: UserEntityObjectWithGroupT;
778755
}>,
779756
): Promise<ApiHandlerResponse> {
780757
const drivers = await this.businessService.findAllDriversByBusinessId(
781-
options.params.businessId,
758+
options.user.id,
782759
);
783760

784761
return {
@@ -789,21 +766,14 @@ class BusinessController extends Controller {
789766

790767
/**
791768
* @swagger
792-
* /business/{businessId}/driver/{driverId}:
769+
* /business/driver/{driverId}:
793770
* delete:
794771
* tags:
795772
* - business/driver
796773
* summary: Delete driver
797774
* description: Delete driver
798775
* parameters:
799776
* - in: path
800-
* name: businessId
801-
* schema:
802-
* type: integer
803-
* required: true
804-
* description: Numeric ID of the business to delete drivers
805-
* example: 1
806-
* - in: path
807777
* name: driverId
808778
* schema:
809779
* type: integer
@@ -831,11 +801,13 @@ class BusinessController extends Controller {
831801

832802
private async deleteDriver(
833803
options: ApiHandlerOptions<{
834-
params: DriverUpdateDeleteRequestParameters;
804+
params: DriverRequestParameters;
805+
user: UserEntityObjectWithGroupT;
835806
}>,
836807
): Promise<ApiHandlerResponse> {
837808
const deletionResult = await this.businessService.deleteDriver(
838809
options.params.driverId,
810+
options.user.id,
839811
);
840812

841813
return {

backend/src/packages/business/business.service.ts

Lines changed: 52 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,10 @@ import { UserGroupKey } from '~/packages/users/libs/enums/enums.js';
55

66
import { type DriverService } from '../drivers/driver.service.js';
77
import {
8-
type DriverAddPayload,
98
type DriverAddResponseWithGroup,
9+
type DriverCreateUpdateRequestDto,
1010
type DriverCreateUpdateResponseDto,
1111
type DriverGetAllResponseDto,
12-
type DriverUpdatePayload,
1312
} from '../drivers/drivers.js';
1413
import { type ShiftEntity } from '../shifts/shift.js';
1514
import { type UserEntityT } from '../users/users.js';
@@ -130,40 +129,74 @@ class BusinessService implements IService {
130129
return await this.businessRepository.delete(id);
131130
}
132131

133-
public async createDriver({
134-
payload,
135-
businessId,
136-
}: DriverAddPayload): Promise<DriverAddResponseWithGroup> {
137-
const doesBusinessExist = await this.findById(businessId);
132+
public async createDriver(
133+
payload: DriverCreateUpdateRequestDto,
134+
ownerId: number,
135+
): Promise<DriverAddResponseWithGroup> {
136+
const business = await this.findByOwnerId(ownerId);
138137

139-
if (!doesBusinessExist) {
138+
if (!business) {
140139
throw new HttpError({
141140
status: HttpCode.BAD_REQUEST,
142141
message: HttpMessage.BUSINESS_DOES_NOT_EXIST,
143142
});
144143
}
145144

146-
return await this.driverService.create({ payload, businessId });
145+
return await this.driverService.create({
146+
payload,
147+
businessId: business.id,
148+
});
147149
}
148150

149-
public updateDriver({
150-
driverId,
151-
payload,
152-
}: DriverUpdatePayload): Promise<DriverCreateUpdateResponseDto> {
153-
return this.driverService.update({
151+
public async updateDriver(
152+
payload: DriverCreateUpdateRequestDto,
153+
driverId: number,
154+
ownerId: number,
155+
): Promise<DriverCreateUpdateResponseDto> {
156+
const business = await this.findByOwnerId(ownerId);
157+
158+
if (!business) {
159+
throw new HttpError({
160+
status: HttpCode.BAD_REQUEST,
161+
message: HttpMessage.BUSINESS_DOES_NOT_EXIST,
162+
});
163+
}
164+
165+
return await this.driverService.update({
154166
driverId,
155167
payload,
156168
});
157169
}
158170

159-
public findAllDriversByBusinessId(
160-
id: number,
171+
public async findAllDriversByBusinessId(
172+
ownerId: number,
161173
): Promise<DriverGetAllResponseDto> {
162-
return this.driverService.findAllByBusinessId(id);
174+
const business = await this.findByOwnerId(ownerId);
175+
176+
if (!business) {
177+
throw new HttpError({
178+
status: HttpCode.BAD_REQUEST,
179+
message: HttpMessage.BUSINESS_DOES_NOT_EXIST,
180+
});
181+
}
182+
183+
return await this.driverService.findAllByBusinessId(business.id);
163184
}
164185

165-
public deleteDriver(driverId: number): Promise<boolean> {
166-
return this.driverService.delete(driverId);
186+
public async deleteDriver(
187+
driverId: number,
188+
ownerId: number,
189+
): Promise<boolean> {
190+
const business = await this.findByOwnerId(ownerId);
191+
192+
if (!business) {
193+
throw new HttpError({
194+
status: HttpCode.BAD_REQUEST,
195+
message: HttpMessage.BUSINESS_DOES_NOT_EXIST,
196+
});
197+
}
198+
199+
return await this.driverService.delete(driverId);
167200
}
168201

169202
public checkisDriverBelongedToBusiness({

backend/src/packages/drivers/drivers.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,12 @@ const driverService = new DriverService({
1616

1717
export { driverRepository, driverService };
1818
export {
19-
type BusinessGetAllDriversRequestParameters,
2019
type DriverAddPayload,
2120
type DriverAddResponseWithGroup,
2221
type DriverCreateUpdateRequestDto,
2322
type DriverCreateUpdateResponseDto,
2423
type DriverEntity,
2524
type DriverGetAllResponseDto,
26-
type DriverGetRequestParameters,
27-
type DriverUpdateDeleteRequestParameters,
25+
type DriverRequestParameters,
2826
type DriverUpdatePayload,
2927
} from './libs/types/types.js';
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
export { type DriverAddResponseWithGroup } from './driver-add-response-with-group.type.js';
22
export {
3-
type BusinessGetAllDriversRequestParameters,
43
type DriverAddPayload,
54
type DriverCreateUpdateRequestDto,
65
type DriverCreateUpdateResponseDto,
76
type DriverEntity,
87
type DriverGetAllResponseDto,
9-
type DriverGetRequestParameters,
10-
type DriverUpdateDeleteRequestParameters,
8+
type DriverRequestParameters,
119
type DriverUpdatePayload,
1210
} from 'shared/build/index.js';
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
export {
22
driverCreateUpdateRequestBody,
3-
driverGetParameters,
4-
driverUpdateDeleteParameters,
3+
driverParameters,
54
} from 'shared/build/index.js';

shared/src/index.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,19 +71,16 @@ export {
7171
BusinessValidationMessage,
7272
} from './packages/business/business.js';
7373
export {
74-
type BusinessGetAllDriversRequestParameters,
7574
type DriverAddPayload,
7675
type DriverCreateUpdateRequestDto,
7776
type DriverCreateUpdateResponseDto,
7877
type DriverEntity,
7978
type DriverGetAllResponseDto,
80-
type DriverGetRequestParameters,
81-
type DriverUpdateDeleteRequestParameters,
79+
type DriverRequestParameters,
8280
type DriverUpdatePayload,
8381
DriverApiPath,
8482
driverCreateUpdateRequestBody,
85-
driverGetParameters,
86-
driverUpdateDeleteParameters,
83+
driverParameters,
8784
DriverValidationMessage,
8885
} from './packages/drivers/drivers.js';
8986
export {

0 commit comments

Comments
 (0)