Skip to content
This repository has been archived by the owner on Jul 14, 2024. It is now read-only.

Commit

Permalink
fix: fix order processing
Browse files Browse the repository at this point in the history
  • Loading branch information
GabrielDeSouzza committed Jun 23, 2024
1 parent 082b9c2 commit b87599b
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 28 deletions.
31 changes: 27 additions & 4 deletions src/app/useCases/IncidentUseCases/IncidentUseCases.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import {
type CountFreightIncidentWhereRequestDTO,
} from 'domain/dto/repositories/whereDtos/FreightIncidentRepository.Dto';
import { Incident } from 'domain/entities/OrdersEntities/IncidentEntity/Incident';
import { OrderProcessing } from 'domain/entities/OrdersEntities/OrderProcessing/OrderProcessing';
import { IncidentRepository } from 'domain/repositories/IncidentResitory';

import { type CreateIncidentDTO } from 'app/dtos/IncidentDto/CreateIncidentDto';
Expand Down Expand Up @@ -45,14 +46,36 @@ export class IncidentUseCases {
return this.incidentRepository.findAllIncident(request);
}
async createIncident(data: CreateIncidentDTO) {
await this.orderProcessing.getOrderProcessing({
const order = await this.orderProcessing.getOrderProcessing({
id: data.order_process_id,
});

const newExpense = new Incident({
...data,
const orderProcesingEntity = new OrderProcessing({
created_by: undefined,
driver_id: undefined,
order_processing_number: undefined,
start_at: undefined,
status: 'IN_INCIDENT',
total_distance: undefined,
total_spend_liters: undefined,
total_spending_money: undefined,
updated_by: data.updated_by,
vehicle_id: undefined,
created_at: undefined,
disconnect_legal_order: undefined,
disconnect_physical_customer_order: undefined,
end_at: undefined,
id: undefined,
legal_customer_order_ids: undefined,
physical_customer_order_ids: undefined,
updated_at: new Date(),
});

await this.orderProcessing.updateOrderProcessing(
order.id,
orderProcesingEntity,
);
const newExpense = new Incident({ ...data });

return this.incidentRepository.createIncident(newExpense);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,21 +113,21 @@ export class OrderProcessingUseCases {
await this.vehicleUseCase.getVehicle({
vehicleId: data.vehicle_id,
});
if (data.legal_customer_order_ids.length > 0)
if (data?.legal_customer_order_ids?.length > 0)
for (const legalOrderId of data.legal_customer_order_ids)
await this.legalClientOrderUseCase.getLegalClientOrder({
id: legalOrderId,
});
if (data.physical_customer_order_ids.length > 0)
if (data?.physical_customer_order_ids?.length > 0)
for (const physicalCustomerId of data.legal_customer_order_ids)
await this.physicalCusotmerOrderUseCase.getPhysicalCustomerOrder({
id: physicalCustomerId,
});
if (data.disconnect_legal_order)
if (data?.disconnect_legal_order)
await this.legalClientOrderUseCase.getLegalClientOrder({
id: data.disconnect_legal_order,
});
else if (data.disconnect_physical_customer_order)
else if (data?.disconnect_physical_customer_order)
await this.physicalCusotmerOrderUseCase.getPhysicalCustomerOrder({
id: data.disconnect_physical_customer_order,
});
Expand Down Expand Up @@ -208,6 +208,54 @@ export class OrderProcessingUseCases {

return this.orderProcessingResitory.deleteManyOrderProcessing(ids);
}

async completedOrder(data: GetOrderProcessingDTO, updatedBy: string) {
if (!data.id && !data.order_processing_number && !data.vehicleData)
throw new GraphQLError(
'IS NECESSARY AN ID, ORDER PROCESSING NUMBER OR VEHICLE DATA',
{
extensions: { code: HttpStatus.BAD_REQUEST },
},
);
const orderProcessing =
await this.orderProcessingResitory.findOrderProcessing(data);

if (!orderProcessing)
throw new GraphQLError('ORDER PROCESSING FOR NOT FOUND', {
extensions: { code: HttpStatus.NOT_FOUND },
});

if (orderProcessing.status == 'COMPLETE')
throw new GraphQLError('ORDER PROCESSING HAS ALREADY BEEN COMPLETED', {
extensions: { code: HttpStatus.NOT_FOUND },
});
const orderProcesingEntity = new OrderProcessing({
created_by: undefined,
driver_id: undefined,
order_processing_number: undefined,
start_at: undefined,
status: 'COMPLETE',
total_distance: undefined,
total_spend_liters: undefined,
total_spending_money: undefined,
updated_by: updatedBy,
vehicle_id: undefined,
created_at: undefined,
disconnect_legal_order: undefined,
disconnect_physical_customer_order: undefined,
end_at: undefined,
id: undefined,
legal_customer_order_ids: undefined,
physical_customer_order_ids: undefined,
updated_at: new Date(),
});

return this.orderProcessingResitory.updateOrderProcessing(
orderProcessing.id,
orderProcesingEntity,
);
}

private async verifyOrderProcessingExist(id: string) {
const exist = await this.orderProcessingResitory.findOrderProcessing({
id,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,44 +56,44 @@ export class OrderProcessingPrismaDTO {

public static EntityToPrismaUpdate(orderProcessing: OrderProcessing) {
const orderprocessingUptate: Prisma.OrderProcessingUpdateInput = {
end_at: orderProcessing.end_at,
end_at: orderProcessing?.end_at,

start_at: orderProcessing.start_at,
total_distance: orderProcessing.total_distance,
total_spend_liters: orderProcessing.total_spend_liters,
total_spending_money: orderProcessing.total_spending_money,
updated_at: orderProcessing.updated_at,
status: orderProcessing.status,
start_at: orderProcessing?.start_at,
total_distance: orderProcessing?.total_distance,
total_spend_liters: orderProcessing?.total_spend_liters,
total_spending_money: orderProcessing?.total_spending_money,
updated_at: orderProcessing?.updated_at,
status: orderProcessing?.status,
LegalClientOrder: {
connect:
orderProcessing.legal_customer_order_ids?.length > 0
? orderProcessing.legal_customer_order_ids.map(legalOrderId => ({
id: legalOrderId,
}))
: undefined,
disconnect: orderProcessing.disconnect_legal_order
? { id: orderProcessing.disconnect_legal_order }
disconnect: orderProcessing?.disconnect_legal_order
? { id: orderProcessing?.disconnect_legal_order }
: undefined,
},

PhysicalCustomerOrder: {
connect:
orderProcessing.physical_customer_order_ids?.length > 0
? orderProcessing.physical_customer_order_ids.map(
? orderProcessing.physical_customer_order_ids?.map(
physicalCustomerId => ({ id: physicalCustomerId }),
)
: undefined,
disconnect: orderProcessing.disconnect_physical_customer_order
? { id: orderProcessing.disconnect_physical_customer_order }
disconnect: orderProcessing?.disconnect_physical_customer_order
? { id: orderProcessing?.disconnect_physical_customer_order }
: undefined,
},

Vehicle: {
connect: orderProcessing.vehicle_id
? { id: orderProcessing.vehicle_id }
connect: orderProcessing?.vehicle_id
? { id: orderProcessing?.vehicle_id }
: undefined,
},
OwnDriver: orderProcessing.driver_id
OwnDriver: orderProcessing?.driver_id
? {
connect: { id: orderProcessing.driver_id },
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ export abstract class OrderProcessingModel implements IOrderProcessing {
@Field()
order_processing_number: string;

@Field()
order_processing: string;
@Field()
id: string;
@Field(() => Date)
Expand All @@ -32,7 +30,7 @@ export abstract class OrderProcessingModel implements IOrderProcessing {
total_spending_money: number;
@Field(() => Date)
start_at: Date;
@Field(() => Date)
@Field(() => Date, { nullable: true })
end_at?: Date;
@Field()
driver_id: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ export class OrderProcessingResolver {

return this.orderProcessingUseCase.updateOrderProcessing(id, data);
}

@Mutation(() => [OrderProcessingModel])
async updateManyOrderProcessing(
@Args({ name: 'data', type: () => [OrderProcessingUpdateManyInput] })
Expand All @@ -102,6 +103,16 @@ export class OrderProcessingResolver {
) {
return this.orderProcessingUseCase.deleteManyOrderProcessing(ids);
}

@Mutation(() => OrderProcessingModel)
async completedOrder(
@Args()
data: GetOrderProcessingArgs,
@CurrentUser()
user: User,
) {
return this.orderProcessingUseCase.completedOrder(data, user.id);
}
@ResolveField(() => VehicleCarModel)
async Vehicle(@Parent() orderProcessing: OrderProcessingInput) {
return this.vehicleUseCase.getVehicle({
Expand Down
4 changes: 2 additions & 2 deletions src/infra/graphql/generated/schema.gql
Original file line number Diff line number Diff line change
Expand Up @@ -1570,6 +1570,7 @@ input ManifestWhereInput {
}

type Mutation {
completedOrder(id: String, order_processing: String, vehicleData: GetVehicleTypeArgs): OrderProcessingModel!
createCarrierCompany(data: CarrierCompanyInput!): CarrierCompanyModel!
createCiotForLegalClient(ciotForLegalClientInput: CiotForLegalClientInput!): CiotForLegalClientModel!
createCompanyVehicle(CompanyVehicleInput: CompanyVehicleInput!): CompanyVehicleIModel!
Expand Down Expand Up @@ -1952,9 +1953,8 @@ type OrderProcessingModel {
created_at: Timestamp!
created_by: String!
driver_id: String!
end_at: Timestamp!
end_at: Timestamp
id: String!
order_processing: String!
order_processing_number: String!
start_at: Timestamp!
status: StatusOrder!
Expand Down

0 comments on commit b87599b

Please sign in to comment.