This commit is contained in:
SepehrYahyaee
2026-04-27 17:03:29 +03:30
parent c2f996cc28
commit e90f8dc33c
5 changed files with 288 additions and 28 deletions

View File

@@ -3,6 +3,7 @@ import {
HttpException,
InternalServerErrorException,
Param,
Query,
Post,
Patch,
Put,
@@ -22,7 +23,11 @@ import { Roles } from "src/decorators/roles.decorator";
import { CurrentUser } from "src/decorators/user.decorator";
import { RoleEnum } from "src/Types&Enums/role.enum";
import { ClaimRequestManagementService } from "./claim-request-management.service";
import { SelectOuterPartsV2Dto, SelectOuterPartsV2ResponseDto } from "./dto/select-outer-parts-v2.dto";
import {
OuterPartCatalogItemDto,
SelectOuterPartsV2Dto,
SelectOuterPartsV2ResponseDto,
} from "./dto/select-outer-parts-v2.dto";
import { SelectOtherPartsV2Dto, SelectOtherPartsV2ResponseDto } from "./dto/select-other-parts-v2.dto";
import { GetCaptureRequirementsV2ResponseDto } from "./dto/capture-requirements-v2.dto";
import { UploadRequiredDocumentV2Dto, UploadRequiredDocumentV2ResponseDto } from "./dto/upload-document-v2.dto";
@@ -35,6 +40,7 @@ import { GetMyClaimsV2ResponseDto } from "./dto/my-claims-v2.dto";
import { ClaimDetailsV2ResponseDto } from "./dto/claim-details-v2.dto";
import { UserObjectionV2Dto } from "./dto/user-objection-v2.dto";
import { UserRatingDto } from "./dto/user-rating.dto";
import { ClaimVehicleTypeV2 } from "src/static/outer-car-parts-catalog";
@ApiTags("claim-request-management (v2)")
@Controller("v2/claim-request-management")
@@ -250,6 +256,23 @@ export class ClaimRequestManagementV2Controller {
/**
* V2 API: Select damaged outer car parts (Step 2 of claim workflow)
*/
@Get("outer-parts-catalog")
@ApiOperation({
summary: "Get outer parts catalog (V2)",
description:
"Returns outer-damage parts with id/key/side. Optional `carType` filter returns only that type catalog.",
})
@ApiResponse({
status: 200,
description: "Outer parts catalog",
type: [OuterPartCatalogItemDto],
})
async getOuterPartsCatalog(
@Query("carType") carType?: ClaimVehicleTypeV2,
): Promise<OuterPartCatalogItemDto[]> {
return this.claimRequestManagementService.getOuterPartsCatalogV2(carType);
}
@Patch("select-outer-parts/:claimRequestId")
@ApiOperation({
summary: "Select Damaged Outer Car Parts (V2 - Step 2)",
@@ -284,41 +307,35 @@ export class ClaimRequestManagementV2Controller {
})
@ApiBody({
type: SelectOuterPartsV2Dto,
description: "Array of selected damaged outer parts",
description:
"Selected vehicle type + selected outer part IDs from catalog",
examples: {
example1: {
summary: "Minor front damage",
summary: "Sedan - minor front damage",
value: {
selectedParts: ["hood", "front_bumper", "front_right_fender"],
carType: "sedan",
selectedPartIds: [19, 21, 16],
},
},
example2: {
summary: "Side impact damage",
summary: "SUV - left side impact",
value: {
selectedParts: [
"front_left_door",
"rear_left_door",
"front_left_fender",
"rear_left_fender",
],
carType: "suv",
selectedPartIds: [102, 103, 104, 107],
},
},
example3: {
summary: "Rear-end collision",
summary: "Hatchback - rear-end collision",
value: {
selectedParts: ["rear_bumper", "trunk", "rear_right_fender"],
carType: "hatchback",
selectedPartIds: [225, 226, 210],
},
},
example4: {
summary: "Multiple damage areas",
summary: "Pickup - two sides + roof",
value: {
selectedParts: [
"hood",
"front_bumper",
"front_right_door",
"rear_bumper",
"trunk",
],
carType: "pickup",
selectedPartIds: [319, 312, 330],
},
},
},