1
0
forked from Yara724/api

Added in-person expert

This commit is contained in:
SepehrYahyaee
2026-02-24 12:16:14 +03:30
parent 0d8858f458
commit 64b6101177
13 changed files with 512 additions and 22 deletions

View File

@@ -34,17 +34,83 @@ import { CreateExpertInitiatedFileDto } from "./dto/expert-initiated.dto";
import { ExpertCompleteThirdPartyFormDto } from "./dto/expert-complete-third-party-form.dto";
import { ExpertCompleteCarBodyFormDto } from "./dto/expert-complete-car-body-form.dto";
import { ExpertAccidentFieldsDto } from "./dto/expert-accident-fields.dto";
import { ExpertCompleteClaimDataDto } from "./dto/expert-complete-claim-data.dto";
import { ClaimRequestManagementService } from "src/claim-request-management/claim-request-management.service";
@ApiTags("expert-initiated-blame")
@Controller("expert-initiated-blame")
@ApiBearerAuth()
@UseGuards(LocalActorAuthGuard, RolesGuard)
@Roles(RoleEnum.EXPERT, RoleEnum.DAMAGE_EXPERT)
@Roles(RoleEnum.FIELD_EXPERT)
export class ExpertInitiatedController {
constructor(
private readonly requestManagementService: RequestManagementService,
private readonly claimRequestManagementService: ClaimRequestManagementService,
) {}
@Get("my-files")
@ApiOperation({
summary: "List my expert-initiated files",
description:
"Returns all blame files created by the current field expert (their panel).",
})
@ApiResponse({ status: 200, description: "List of expert-initiated files" })
async getMyFiles(@CurrentUser() expert: any) {
return await this.requestManagementService.getMyExpertInitiatedFiles(
expert,
);
}
@Post("complete-blame-data/:requestId")
@ApiOperation({
summary: "Submit all blame-needed data",
description:
"Single endpoint to complete blame form: send THIRD_PARTY or CAR_BODY form data according to file type. " +
"Video and voice can be uploaded separately.",
})
@ApiParam({ name: "requestId", description: "ID of the expert-initiated file" })
@ApiBody({
description:
"Send ExpertCompleteThirdPartyFormDto for THIRD_PARTY files or ExpertCompleteCarBodyFormDto for CAR_BODY files (according to file type).",
})
@ApiResponse({ status: 200, description: "Blame form completed successfully" })
async completeBlameData(
@CurrentUser() expert: any,
@Param("requestId") requestId: string,
@Body() formData: any,
) {
return await this.requestManagementService.completeBlameData(
expert,
requestId,
formData,
);
}
@Post("complete-claim-data/:claimRequestId")
@ApiOperation({
summary: "Submit claim-needed data",
description:
"Field expert fills claim data for expert-initiated IN_PERSON files (car part damage, sheba, national code, other parts). " +
"Only the initiating expert can call this.",
})
@ApiParam({
name: "claimRequestId",
description: "ID of the claim file (created from the expert-initiated blame file)",
})
@ApiBody({ type: ExpertCompleteClaimDataDto })
@ApiResponse({ status: 200, description: "Claim data updated successfully" })
async completeClaimData(
@CurrentUser() expert: any,
@Param("claimRequestId") claimRequestId: string,
@Body() dto: ExpertCompleteClaimDataDto,
) {
return await this.claimRequestManagementService.expertCompleteClaimData(
claimRequestId,
expert,
dto,
);
}
@Post("create")
@ApiOperation({
summary: "Create expert-initiated blame file",