Skip to content

Commit 465d1bb

Browse files
authored
Merge pull request #7 from Axel77g/feature/create-use-case-implementation-and-refacto-express-part
Feature/create use case implementation and refacto express part
2 parents 7b18752 + d6627f7 commit 465d1bb

File tree

56 files changed

+545
-504
lines changed

Some content is hidden

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

56 files changed

+545
-504
lines changed

backend/src/application/inventoryManagement/usecases/order/UpdateOrderStatusUseCase.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ interface UpdateOrderInput extends IInputUseCase{
99
orderId: string,
1010
status : OrderStatusEnum
1111
}
12-
export type RegisterOrderUseCase = IUseCase<UpdateOrderInput, Result>
12+
export type UpdateOrderStatusUseCase = IUseCase<UpdateOrderInput, Result>
1313

1414
const registerOrderErrors = {
1515
NOT_FOUND_ORDER: NotFoundEntityException.create("Cannot update status for not found order"),
1616
}
1717

18-
export const createUpdateOrderStatusUseCase = (_eventRepository : EventRepository, _orderRepository: OrderRepository) : RegisterOrderUseCase => {
18+
export const createUpdateOrderStatusUseCase = (_eventRepository : EventRepository, _orderRepository: OrderRepository) : UpdateOrderStatusUseCase => {
1919
return async (input: UpdateOrderInput) => {
2020
const orderResponse = await _orderRepository.findOrderById(input.orderId);
2121
if(!orderResponse.success) return orderResponse

backend/src/infrastructure/common/entityMappers/IncidentMapper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {ApplicationException} from "@shared/ApplicationException";
55

66
export class IncidentMapper {
77
static toDomain(incidentEventRaw: any) : Incident | ApplicationException {
8-
const driverLicenceId = DriverLicenseId.create(incidentEventRaw.driverLicenceId)
8+
const driverLicenceId = DriverLicenseId.create(incidentEventRaw.driverLicenseId)
99
if(driverLicenceId instanceof ApplicationException) return driverLicenceId
1010
return Incident.create({
1111
incidentId: incidentEventRaw.incidentId,

backend/src/infrastructure/common/repositories/mongo/AbstractMongoRepository.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {MongoClient} from 'mongodb'
22
import {Result} from "@shared/Result";
3-
import {InternalErrorException} from "@shared/ApplicationException";
3+
import {InternalException} from "@shared/ApplicationException";
44
export abstract class AbstractMongoRepository {
55
protected abstract collectionName: string;
66
public constructor(
@@ -22,7 +22,7 @@ export abstract class AbstractMongoRepository {
2222
await onError();
2323
const message = e instanceof Error ? e.message : defaultMessageError;
2424
console.error("[MONGO ERROR]", e);
25-
return Result.Failure(InternalErrorException.create(message)) as T;
25+
return Result.Failure(InternalException.create(message)) as T;
2626
}
2727
}
2828

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {updateStockRequest} from "@infrastructureCore/requests/inventoryManagement/updateStockRequest";
3+
import {
4+
AddSparePartInStockUseCase,
5+
createAddSparePartInStockUseCase
6+
} from "@application/inventoryManagement/usecases/stock/AddSparePartInStockUseCase";
7+
import {Siret} from "@domain/shared/value-object/Siret";
8+
import {Result} from "@shared/Result";
9+
import {
10+
createGetInventorySparePartUseCase
11+
} from "@application/inventoryManagement/usecases/inventorySparePart/GetInventorySparePartUseCase";
12+
import {
13+
inventorySparePartRepository
14+
} from "@infrastructureCore/repositories/inventoryManagement/inventorySparePartRepository";
15+
import {
16+
inventoryManagementEventRepository
17+
} from "@infrastructureCore/repositories/inventoryManagement/inventoryManagementEventRepository";
18+
19+
export const addSparePartInStockUseCase : UseCaseImplementation<typeof updateStockRequest, AddSparePartInStockUseCase> = async (input) =>{
20+
const siret = Siret.create(input.siret)
21+
if(siret instanceof Error) return Result.Failure(siret)
22+
const _getInventorySparePartUseCase = createGetInventorySparePartUseCase(inventorySparePartRepository)
23+
const useCase = createAddSparePartInStockUseCase(inventoryManagementEventRepository, _getInventorySparePartUseCase)
24+
return useCase({
25+
...input,
26+
siret
27+
})
28+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {sparePartReferenceRequest} from "@infrastructureCore/requests/inventoryManagement/sparePartReferenceRequest";
3+
import {
4+
createGetInventorySparePartUseCase,
5+
GetInventorySparePartUseCase
6+
} from "@application/inventoryManagement/usecases/inventorySparePart/GetInventorySparePartUseCase";
7+
import {
8+
inventorySparePartRepository
9+
} from "@infrastructureCore/repositories/inventoryManagement/inventorySparePartRepository";
10+
11+
export const getInventorySparePartUseCase : UseCaseImplementation<typeof sparePartReferenceRequest, GetInventorySparePartUseCase> = async (input) => {
12+
const useCase = createGetInventorySparePartUseCase(inventorySparePartRepository)
13+
return useCase(input)
14+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {paginatedRequest} from "@infrastructureCore/requests/paginatedRequest";
3+
import {
4+
createListDealerUseCase,
5+
ListDealerUseCase
6+
} from "@application/inventoryManagement/usecases/dealer/listDealerUseCase";
7+
import {dealerRepository} from "@infrastructureCore/repositories/inventoryManagement/dealerRepository";
8+
9+
export const listDealersUseCase : UseCaseImplementation<typeof paginatedRequest, ListDealerUseCase> = async (input) =>{
10+
const useCase = createListDealerUseCase(dealerRepository)
11+
return useCase(input)
12+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {paginatedRequest} from "@infrastructureCore/requests/paginatedRequest";
3+
import {
4+
createListInventorySparePartUseCase,
5+
ListInventorySparePartUseCase
6+
} from "@application/inventoryManagement/usecases/inventorySparePart/ListInventorySparePartUseCase";
7+
import {
8+
inventorySparePartRepository
9+
} from "@infrastructureCore/repositories/inventoryManagement/inventorySparePartRepository";
10+
11+
export const listInventorySparePartUseCase : UseCaseImplementation<typeof paginatedRequest, ListInventorySparePartUseCase> = async (input) => {
12+
const useCase = createListInventorySparePartUseCase(inventorySparePartRepository);
13+
return useCase(input);
14+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {registerDealerRequest} from "@infrastructureCore/requests/inventoryManagement/registerDealerRequest";
3+
import {
4+
createRegisterDealerUseCase,
5+
RegisterDealerUseCase
6+
} from "@application/inventoryManagement/usecases/dealer/RegisterDealerUseCase";
7+
import {Address} from "@domain/shared/value-object/Address";
8+
import {ApplicationException} from "@shared/ApplicationException";
9+
import {Result} from "@shared/Result";
10+
import {Siret} from "@domain/shared/value-object/Siret";
11+
import {
12+
inventoryManagementEventRepository
13+
} from "@infrastructureCore/repositories/inventoryManagement/inventoryManagementEventRepository";
14+
import {dealerRepository} from "@infrastructureCore/repositories/inventoryManagement/dealerRepository";
15+
16+
export const registerDealerUseCase : UseCaseImplementation<typeof registerDealerRequest, RegisterDealerUseCase> = async (input) =>{
17+
const address = Address.create(input.address)
18+
if(address instanceof ApplicationException) return Result.Failure(address)
19+
const siret = Siret.create(input.siret)
20+
if(siret instanceof ApplicationException) return Result.Failure(siret)
21+
const useCase = createRegisterDealerUseCase(inventoryManagementEventRepository,dealerRepository)
22+
return useCase({
23+
siret,
24+
name: input.name,
25+
address,
26+
phoneNumber: input.phoneNumber
27+
})
28+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {
3+
createRegisterOrderUseCase,
4+
RegisterOrderUseCase
5+
} from "@application/inventoryManagement/usecases/order/RegisterOrderUseCase";
6+
import {registerOrderRequest} from "@infrastructureCore/requests/inventoryManagement/registerOrderRequest";
7+
import {Siret} from "@domain/shared/value-object/Siret";
8+
import {ApplicationException} from "@shared/ApplicationException";
9+
import {Result} from "@shared/Result";
10+
import {OrderLine} from "@domain/inventoryManagement/value-object/OrderLine";
11+
import {
12+
inventoryManagementEventRepository
13+
} from "@infrastructureCore/repositories/inventoryManagement/inventoryManagementEventRepository";
14+
import {dealerRepository} from "@infrastructureCore/repositories/inventoryManagement/dealerRepository";
15+
import {
16+
inventorySparePartRepository
17+
} from "@infrastructureCore/repositories/inventoryManagement/inventorySparePartRepository";
18+
19+
export const registerOrderUseCase : UseCaseImplementation<typeof registerOrderRequest, RegisterOrderUseCase> = async (input) =>{
20+
const dealerSiret = Siret.create(input.dealerSiret)
21+
if(dealerSiret instanceof ApplicationException) return Result.Failure(dealerSiret)
22+
const orderLines = input.orderLines.map((line) => OrderLine.create(line))
23+
const error = orderLines.find(line => line instanceof ApplicationException) as ApplicationException | undefined
24+
if(error) return Result.Failure(error)
25+
const useCase = createRegisterOrderUseCase(inventoryManagementEventRepository, dealerRepository, inventorySparePartRepository)
26+
return useCase({
27+
...input,
28+
dealer: dealerSiret,
29+
orderLines: orderLines as OrderLine[]
30+
})
31+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import {UseCaseImplementation} from "@infrastructureCore/useCaseImplementation/UseCaseImplementation";
2+
import {updateStockRequest} from "@infrastructureCore/requests/inventoryManagement/updateStockRequest";
3+
import {
4+
createRemoveSparePartInStockUseCase,
5+
RemoveSparePartInStockUseCase
6+
} from "@application/inventoryManagement/usecases/stock/RemoveSparePartInStockUseCase";
7+
import {Siret} from "@domain/shared/value-object/Siret";
8+
import {Result} from "@shared/Result";
9+
import {ApplicationException} from "@shared/ApplicationException";
10+
import {
11+
inventoryManagementEventRepository
12+
} from "@infrastructureCore/repositories/inventoryManagement/inventoryManagementEventRepository";
13+
import {stockRepository} from "@infrastructureCore/repositories/inventoryManagement/stockRepository";
14+
import {
15+
inventorySparePartRepository
16+
} from "@infrastructureCore/repositories/inventoryManagement/inventorySparePartRepository";
17+
import {notificationServices} from "@infrastructureCore/services/notificationServices";
18+
19+
export const removeSparePartInStockUseCase : UseCaseImplementation<typeof updateStockRequest, RemoveSparePartInStockUseCase> = async (input) =>{
20+
const siret = Siret.create(input.siret)
21+
if(siret instanceof ApplicationException) return Result.Failure(siret)
22+
const useCase = createRemoveSparePartInStockUseCase(
23+
inventoryManagementEventRepository,
24+
stockRepository,
25+
inventorySparePartRepository,
26+
notificationServices
27+
)
28+
return useCase({
29+
...input,
30+
siret
31+
})
32+
}

0 commit comments

Comments
 (0)