forked from Yara724/api
886 lines
27 KiB
TypeScript
886 lines
27 KiB
TypeScript
import { Controller, Get, Param, ParseIntPipe, Query, UseGuards } from "@nestjs/common";
|
|
import {
|
|
ApiBearerAuth,
|
|
ApiOkResponse,
|
|
ApiOperation,
|
|
ApiParam,
|
|
ApiQuery,
|
|
ApiTags,
|
|
} from "@nestjs/swagger";
|
|
import { AuthGuard } from "src/common/auth/guards";
|
|
import { LookupsService } from "./lookups.service";
|
|
|
|
@ApiTags("lookups")
|
|
@ApiBearerAuth()
|
|
@UseGuards(AuthGuard)
|
|
@Controller("lookups")
|
|
export class LookupsController {
|
|
constructor(private readonly lookupsService: LookupsService) {}
|
|
|
|
@Get("accident-causes")
|
|
@ApiOkResponse({
|
|
description: "Returns accident causes lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
Caption: { type: "string" },
|
|
Id: { type: "number" },
|
|
IsActive: { type: "number" },
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getAccidentCauses() {
|
|
return await this.lookupsService.getAccidentCauses();
|
|
}
|
|
|
|
@Get("vehicle-hull-accident-types")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.03 hull accident type lookup",
|
|
description:
|
|
"Returns values for base-claim field AccidentTypeId from car/base-info/vehicle-hull-accident-types (not the Tejarat static accident-type list).",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle hull accident types",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getVehicleHullAccidentTypes() {
|
|
return await this.lookupsService.getVehicleHullAccidentTypes();
|
|
}
|
|
|
|
@Get("vehicle-hull-accident-culprit-type")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.03 hull culprit type lookup",
|
|
description:
|
|
"Returns values for base-claim field CulpritTypeId from car/code-list/vehicle-hull-accident-culprit-type (not accident-culprit-type used for ثالث).",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle hull accident culprit types",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getVehicleHullAccidentCulpritType() {
|
|
return await this.lookupsService.getVehicleHullAccidentCulpritType();
|
|
}
|
|
|
|
@Get("vehicle-hull-dmg-kind")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.06 hull damage kind lookup",
|
|
description:
|
|
"Returns values for DmgSections[].DmgKindId from car/code-list/vehicle-hull-dmg-kind.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle hull damage kinds",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getVehicleHullDmgKind() {
|
|
return await this.lookupsService.getVehicleHullDmgKind();
|
|
}
|
|
|
|
@Get("vehicle-hull-dmg-cost-kinds")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.06 hull damage cost kind lookup",
|
|
description:
|
|
"Returns values for DmgSections[].DmgSectionCosts[].DmgCostKindId from car/base-info/vehicle-hull-dmg-cost-kinds.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle hull damage cost kinds",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getVehicleHullDmgCostKinds() {
|
|
return await this.lookupsService.getVehicleHullDmgCostKinds();
|
|
}
|
|
|
|
@Get("vehicle-hull-dmg-accessories/:policyId")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.06 hull policy damage accessories",
|
|
description:
|
|
"Returns rows for DmgSections[].VehicleHullAccessoryId from car/vehicle-hull-policies/{policyId}/dmg-accessories. PolicyId is required (Fanavaran: کد رایانه ریسورس).",
|
|
})
|
|
@ApiParam({
|
|
name: "policyId",
|
|
description: "Fanavaran hull policy Id (same as GEN.03 PolicyId)",
|
|
example: 13764610,
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle hull damage accessories for the policy",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getVehicleHullDmgAccessoriesByPolicyId(
|
|
@Param("policyId", ParseIntPipe) policyId: number,
|
|
) {
|
|
return await this.lookupsService.getVehicleHullDmgAccessoriesByPolicyId(
|
|
policyId,
|
|
);
|
|
}
|
|
|
|
@Get("accident-report-type")
|
|
@ApiOkResponse({
|
|
description: "Returns accident report type lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
},
|
|
},
|
|
})
|
|
async getAccidentReportType() {
|
|
return await this.lookupsService.getAccidentReportType();
|
|
}
|
|
|
|
@Get("vehicle-use-types")
|
|
@ApiOkResponse({
|
|
description: "Returns vehicle use types lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
},
|
|
},
|
|
})
|
|
async getVehicleUseTypes() {
|
|
return await this.lookupsService.getVehicleUseTypes();
|
|
}
|
|
|
|
@Get("dmg-pay-method")
|
|
@ApiOkResponse({
|
|
description: "Returns damage pay method lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
},
|
|
},
|
|
})
|
|
async getDmgPayMethod() {
|
|
return await this.lookupsService.getDmgPayMethod();
|
|
}
|
|
|
|
@Get("driving-licence-types")
|
|
@ApiOperation({
|
|
summary: "Fanavaran driving licence types lookup",
|
|
description:
|
|
"Returns licence type codes from car/base-info/driving-licence-types (BaseURL/Api/BimeApi/v2.0/...). Used for GEN culprit licence type selection.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns driving licence types lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
Caption: { type: "string" },
|
|
Id: { type: "number" },
|
|
IsActive: { type: "number" },
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getDrivingLicenceTypes() {
|
|
return await this.lookupsService.getDrivingLicenceTypes();
|
|
}
|
|
|
|
@Get("accident-culprit-type")
|
|
@ApiOkResponse({
|
|
description: "Returns accident culprit type lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
},
|
|
},
|
|
})
|
|
async getAccidentCulpritType() {
|
|
return await this.lookupsService.getAccidentCulpritType();
|
|
}
|
|
|
|
@Get("inspection-place")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.08 inspection place lookup",
|
|
description:
|
|
"Returns values for expertise payload field InspectionPlaceId from car/code-list/inspection-place.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran inspection place lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getInspectionPlace() {
|
|
return await this.lookupsService.getInspectionPlace();
|
|
}
|
|
|
|
@Get("drop-amount-status")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.08 drop amount status lookup",
|
|
description:
|
|
"Returns values for expertise payload field DropAmountStatus from car/code-list/drop-amount-status.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran drop amount status lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getDropAmountStatus() {
|
|
return await this.lookupsService.getDropAmountStatus();
|
|
}
|
|
|
|
@Get("car-components")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.08 damaged section lookup",
|
|
description:
|
|
"Returns values for DmgSections[].DmgSectionId from car/base-info/car-components.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran car component lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getCarComponents() {
|
|
return await this.lookupsService.getCarComponents();
|
|
}
|
|
|
|
@Get("accident-level")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.08 accident level lookup",
|
|
description:
|
|
"Returns values for DmgSections[].AccidentLevel from car/code-list/accident-level.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran accident level lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getAccidentLevel() {
|
|
return await this.lookupsService.getAccidentLevel();
|
|
}
|
|
|
|
@Get("expert-status")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.08 expert status lookup",
|
|
description:
|
|
"Returns values for expertise response field Status from car/code-list/expert-status.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran expert status lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getExpertStatus() {
|
|
return await this.lookupsService.getExpertStatus();
|
|
}
|
|
|
|
@Get("vehicle-kinds")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.12 vehicle kind lookup",
|
|
description:
|
|
"Returns values for damage case payload field VehicleKindId from car/base-info/vehicle-kinds.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle kinds lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getVehicleKinds() {
|
|
return await this.lookupsService.getVehicleKinds();
|
|
}
|
|
|
|
@Get("person-role")
|
|
@ApiOperation({
|
|
summary: "Fanavaran person role lookup",
|
|
description:
|
|
"Returns person role codes from common/code-list/person-role.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran person role lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
Caption: { type: "string" },
|
|
Id: { type: "number" },
|
|
IsActive: { type: "number" },
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getPersonRole() {
|
|
return await this.lookupsService.getPersonRole();
|
|
}
|
|
|
|
@Get("file-types")
|
|
@ApiOperation({
|
|
summary: "Fanavaran file types lookup",
|
|
description:
|
|
"Returns file type codes from common/base-info/file-types. Use FileTypeId in attachment uploads.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran file types lookup data",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
Caption: { type: "string" },
|
|
Id: { type: "number" },
|
|
IsActive: { type: "number" },
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getFileTypes() {
|
|
return await this.lookupsService.getFileTypes();
|
|
}
|
|
|
|
@Get("cities")
|
|
@ApiOperation({
|
|
summary: "Fanavaran cities lookup",
|
|
description: "Returns city codes from common/base-info/cities.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran cities lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async cities() {
|
|
return await this.lookupsService.getCities();
|
|
}
|
|
|
|
@Get("provinces")
|
|
@ApiOperation({
|
|
summary: "Fanavaran provinces lookup",
|
|
description: "Returns province codes from common/base-info/provinces.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran provinces lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async provinces() {
|
|
return await this.lookupsService.getProvinces();
|
|
}
|
|
|
|
@Get("dmg-case-type")
|
|
@ApiOperation({
|
|
summary: "Fanavaran damage case type lookup",
|
|
description: "Returns damage case type codes from car/code-list/dmg-case-type.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran damage case type lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async dmgCaseType() {
|
|
return await this.lookupsService.getDmgCaseType();
|
|
}
|
|
|
|
@Get("dmg-history-status")
|
|
@ApiOperation({
|
|
summary: "Fanavaran damage history status lookup",
|
|
description:
|
|
"Returns damage history status codes from car/code-list/dmg-case-history-status.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran damage history status lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async dmgHistoryStatus() {
|
|
return await this.lookupsService.getDmgHistoryStatus();
|
|
}
|
|
|
|
@Get("used-place")
|
|
@ApiOperation({
|
|
summary: "Fanavaran used place lookup",
|
|
description: "Returns used place codes from car/code-list/used-place.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran used place lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getUsedPlace() {
|
|
return await this.lookupsService.getUsedPlace();
|
|
}
|
|
|
|
@Get("dmg-business-line")
|
|
@ApiOperation({
|
|
summary: "Fanavaran damage business line lookup",
|
|
description: "Returns damage business line codes from car/code-list/dmg-business-line.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran damage business line lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getDmgBusinessLine() {
|
|
return await this.lookupsService.getDmgBusinessLine();
|
|
}
|
|
|
|
@Get("gender")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 gender lookup",
|
|
description:
|
|
"Returns values for other-people payload field GenderId from common/code-list/gender.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran gender lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getGender() {
|
|
return await this.lookupsService.getGender();
|
|
}
|
|
|
|
@Get("marital-status")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 marital status lookup",
|
|
description:
|
|
"Returns values for other-people payload field MaritalStatus from common/code-list/marital-status.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran marital status lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getMaritalStatus() {
|
|
return await this.lookupsService.getMaritalStatus();
|
|
}
|
|
|
|
@Get("ans")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 yes/no lookup",
|
|
description:
|
|
"Returns values for other-people fields IsIranian / IsValid / IsVerified from common/code-list/ans.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran yes/no (ans) lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getAns() {
|
|
return await this.lookupsService.getAns();
|
|
}
|
|
|
|
@Get("countries")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 countries lookup",
|
|
description:
|
|
"Returns values for other-people payload field NationalityId from common/base-info/countries.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran countries lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getCountries() {
|
|
return await this.lookupsService.getCountries();
|
|
}
|
|
|
|
@Get("person-kind")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 person kind lookup",
|
|
description:
|
|
"Returns values for other-people payload field PersonKindId from common/code-list/person-kind.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran person kind lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getPersonKind() {
|
|
return await this.lookupsService.getPersonKind();
|
|
}
|
|
|
|
@Get("cii-validation-status")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 CII validation status lookup",
|
|
description:
|
|
"Returns values for other-people response fields CIIValidationStatus / CIIMobileStatus from common/code-list/cii-validation-status.",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran CII validation status lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getCiiValidationStatus() {
|
|
return await this.lookupsService.getCiiValidationStatus();
|
|
}
|
|
|
|
@Get("inquiry-by-vin")
|
|
@ApiOperation({
|
|
summary: "Fanavaran vehicle inquiry by VIN",
|
|
description:
|
|
"GET car/vehicles/inquiry-by-vin. Response includes UsedId (AccidentVehicleUsedId), VehicleKindId, plus vehicleKind/used lookup rows. Prefer this over vehicle GET when you already have the VIN.",
|
|
})
|
|
@ApiQuery({
|
|
name: "vin",
|
|
description: "Vehicle Identification Number (VIN)",
|
|
example: "IRNKAEK4150012345",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns Fanavaran vehicle inquiry data for the VIN",
|
|
schema: { type: "object" },
|
|
})
|
|
async inquiryByVin(@Query("vin") vin: string) {
|
|
return await this.lookupsService.inquiryByVin(vin);
|
|
}
|
|
|
|
@Get("inquiry-by-unique-identifier")
|
|
@ApiOperation({
|
|
summary: "Fanavaran party inquiry by national code and birthday",
|
|
description:
|
|
"GET common/parties/inquiry-by-unique-identifier. Use this to resolve GEN.12 DriverId. Pass birthday as 13480313 or 1348/03/13, or birthYear+birthMonth+birthDay.",
|
|
})
|
|
@ApiQuery({ name: "nationalCode", example: "0012345678" })
|
|
@ApiQuery({
|
|
name: "birthday",
|
|
required: false,
|
|
example: "13480313",
|
|
description: "Jalali birthday compact (13480313) or delimited (1348/03/13)",
|
|
})
|
|
@ApiQuery({ name: "birthYear", required: false, example: 1348 })
|
|
@ApiQuery({ name: "birthMonth", required: false, example: 3 })
|
|
@ApiQuery({ name: "birthDay", required: false, example: 13 })
|
|
@ApiOkResponse({
|
|
description: "Fanavaran parties plus picked driverId / insurerId",
|
|
schema: { type: "object" },
|
|
})
|
|
async inquiryByUniqueIdentifier(
|
|
@Query("nationalCode") nationalCode?: string,
|
|
@Query("birthday") birthday?: string,
|
|
@Query("birthYear") birthYear?: string,
|
|
@Query("birthMonth") birthMonth?: string,
|
|
@Query("birthDay") birthDay?: string,
|
|
) {
|
|
return await this.lookupsService.inquiryByUniqueIdentifier({
|
|
nationalCode,
|
|
birthday,
|
|
birthYear,
|
|
birthMonth,
|
|
birthDay,
|
|
});
|
|
}
|
|
|
|
@Get("other-people/:personId")
|
|
@ApiOperation({
|
|
summary: "Fanavaran GEN.44 other person by id",
|
|
description:
|
|
"GET common/other-people/{Id}. Use after parties inquiry misses and GEN.44 create, or to inspect a known person Id.",
|
|
})
|
|
@ApiParam({
|
|
name: "personId",
|
|
description: "Fanavaran other-people Id",
|
|
example: 4553876,
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns the Fanavaran other-person record",
|
|
schema: { type: "object" },
|
|
})
|
|
async otherPersonById(@Param("personId", ParseIntPipe) personId: number) {
|
|
return await this.lookupsService.otherPersonById(personId);
|
|
}
|
|
|
|
@Get("fanavaran")
|
|
@ApiOperation({
|
|
summary: "List configured Fanavaran remote lookups",
|
|
description:
|
|
"Returns the lookup names available through /lookups/fanavaran/{lookupName}.",
|
|
})
|
|
async listFanavaranRemoteLookups() {
|
|
return this.lookupsService.listFanavaranRemoteLookups().map((lookup) => ({
|
|
name: lookup.name,
|
|
cacheFile: lookup.cacheFile,
|
|
url: lookup.url,
|
|
}));
|
|
}
|
|
|
|
@Get("fanavaran/:lookupName")
|
|
@ApiOperation({
|
|
summary: "Fetch a Fanavaran remote lookup by name",
|
|
description:
|
|
"Generic cached Fanavaran lookup fetcher for configured lookup names, including GEN.08 expertise lookups.",
|
|
})
|
|
@ApiParam({
|
|
name: "lookupName",
|
|
description:
|
|
"Configured Fanavaran lookup name, for example inspection-place, drop-amount-status, car-components, accident-level, expert-status",
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns cached or live Fanavaran lookup data",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async getFanavaranRemoteLookup(@Param("lookupName") lookupName: string) {
|
|
return await this.lookupsService.getClientRemoteLookup(lookupName);
|
|
}
|
|
|
|
@Get("accident-way")
|
|
@ApiOkResponse({
|
|
description:
|
|
"Returns accident way options for the add-accident-fields step",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number", example: 9 },
|
|
label: { type: "string", example: "جلو به پهلو" },
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getAccidentWay() {
|
|
return await this.lookupsService.getAccidentWay();
|
|
}
|
|
|
|
@Get("accident-reason")
|
|
@ApiOkResponse({
|
|
description:
|
|
"Returns accident reason options for the add-accident-fields step",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number", example: 23 },
|
|
label: { type: "string", example: "عدم رعايت فاصله جانبی" },
|
|
fanavaran: { type: "number", example: 3 },
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getAccidentReason() {
|
|
return await this.lookupsService.getAccidentReason();
|
|
}
|
|
|
|
@Get("accident-type")
|
|
@ApiOkResponse({
|
|
description:
|
|
"Returns accident type options for the add-accident-fields step",
|
|
schema: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number", example: 3 },
|
|
label: {
|
|
type: "string",
|
|
example: "برخورد یک وسیله نقلیه با وسیله نقلیه پارک شده",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getAccidentType() {
|
|
return await this.lookupsService.getAccidentType();
|
|
}
|
|
|
|
@Get("accident-fields")
|
|
@ApiOkResponse({
|
|
description:
|
|
"Returns all three accident field lookup lists in one call — drop-in replacement for the deprecated expert-blame/request/accident-fields endpoint",
|
|
schema: {
|
|
type: "object",
|
|
properties: {
|
|
client: { type: "string", example: "tejaratno" },
|
|
accidentWay: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number", example: 9 },
|
|
label: { type: "string", example: "جلو به پهلو" },
|
|
},
|
|
},
|
|
},
|
|
accidentReason: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number", example: 23 },
|
|
label: { type: "string", example: "عدم رعايت فاصله جانبی" },
|
|
fanavaran: { type: "number", example: 3 },
|
|
},
|
|
},
|
|
},
|
|
accidentType: {
|
|
type: "array",
|
|
items: {
|
|
type: "object",
|
|
properties: {
|
|
id: { type: "number", example: 3 },
|
|
label: {
|
|
type: "string",
|
|
example: "برخورد یک وسیله نقلیه با وسیله نقلیه پارک شده",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
})
|
|
async getAccidentFields() {
|
|
return await this.lookupsService.getAccidentFields();
|
|
}
|
|
|
|
@Get("my-policies")
|
|
@ApiOperation({
|
|
summary: "My policies inquiry",
|
|
description:
|
|
"Returns the list of policies for the given national code via common/Policies/inquiry-my-policies.",
|
|
})
|
|
@ApiQuery({
|
|
name: "nationalCode",
|
|
description: "National code of the insured person",
|
|
example: "0012345678",
|
|
})
|
|
@ApiQuery({
|
|
name: "insuranceLineId",
|
|
description: "Insurance line ID (default: 5 for car)",
|
|
required: false,
|
|
example: 5,
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns list of policies",
|
|
schema: { type: "array", items: { type: "object" } },
|
|
})
|
|
async myPolicies(
|
|
@Query("nationalCode") nationalCode: string,
|
|
@Query("insuranceLineId") insuranceLineId?: number,
|
|
) {
|
|
return await this.lookupsService.myPolicies(
|
|
nationalCode,
|
|
insuranceLineId ?? 5,
|
|
);
|
|
}
|
|
|
|
@Get("processed-third-party-policy")
|
|
@ApiOperation({
|
|
summary: "Last processed third-party policy for a car",
|
|
description:
|
|
"Lists Fanavaran policies by national code (InsuranceLineId=5), hydrates each with the third-party policy GET and vehicle GET, matches VIN (preferred) and/or the four plaque parts, then returns that car's last policy. VIN/plaque never open the policy list.",
|
|
})
|
|
@ApiQuery({ name: "nationalCode", example: "0012345678" })
|
|
@ApiQuery({ name: "vin", required: false, example: "IRNKAEK4150012345" })
|
|
@ApiQuery({ name: "plaqueLeft", required: false, example: "12" })
|
|
@ApiQuery({ name: "plaqueLetter", required: false, example: "ب" })
|
|
@ApiQuery({ name: "plaqueRight", required: false, example: "345" })
|
|
@ApiQuery({ name: "plaqueSerial", required: false, example: "67" })
|
|
@ApiOkResponse({
|
|
description: "Mapped last third-party policy plus vehicle",
|
|
schema: { type: "object" },
|
|
})
|
|
async processedThirdPartyPolicy(
|
|
@Query("nationalCode") nationalCode?: string,
|
|
@Query("vin") vin?: string,
|
|
@Query("plaqueLeft") plaqueLeft?: string,
|
|
@Query("plaqueLetter") plaqueLetter?: string,
|
|
@Query("plaqueRight") plaqueRight?: string,
|
|
@Query("plaqueSerial") plaqueSerial?: string,
|
|
) {
|
|
return this.lookupsService.findLastProcessedCarPolicy("third-party", {
|
|
nationalCode,
|
|
vin,
|
|
plaqueLeft,
|
|
plaqueLetter,
|
|
plaqueRight,
|
|
plaqueSerial,
|
|
});
|
|
}
|
|
|
|
@Get("processed-body-policy")
|
|
@ApiOperation({
|
|
summary: "Last processed car-body (hull) policy for a car",
|
|
description:
|
|
"Same car-matching flow as processed-third-party-policy, using InsuranceLineId=4 and the hull policy GET. Uses hull ContractId when configured.",
|
|
})
|
|
@ApiQuery({ name: "nationalCode", example: "0012345678" })
|
|
@ApiQuery({ name: "vin", required: false, example: "IRNKAEK4150012345" })
|
|
@ApiQuery({ name: "plaqueLeft", required: false, example: "12" })
|
|
@ApiQuery({ name: "plaqueLetter", required: false, example: "ب" })
|
|
@ApiQuery({ name: "plaqueRight", required: false, example: "345" })
|
|
@ApiQuery({ name: "plaqueSerial", required: false, example: "67" })
|
|
@ApiOkResponse({
|
|
description: "Mapped last body policy plus vehicle",
|
|
schema: { type: "object" },
|
|
})
|
|
async processedBodyPolicy(
|
|
@Query("nationalCode") nationalCode?: string,
|
|
@Query("vin") vin?: string,
|
|
@Query("plaqueLeft") plaqueLeft?: string,
|
|
@Query("plaqueLetter") plaqueLetter?: string,
|
|
@Query("plaqueRight") plaqueRight?: string,
|
|
@Query("plaqueSerial") plaqueSerial?: string,
|
|
) {
|
|
return this.lookupsService.findLastProcessedCarPolicy("car-body", {
|
|
nationalCode,
|
|
vin,
|
|
plaqueLeft,
|
|
plaqueLetter,
|
|
plaqueRight,
|
|
plaqueSerial,
|
|
});
|
|
}
|
|
|
|
@Get("third-party-policy/:policyId")
|
|
@ApiOperation({
|
|
summary: "Third-party car policy inquiry by policy ID",
|
|
description:
|
|
"Returns third-party car insurance policy details for the given policy ID via car/third-party-car-policies/{policyId}.",
|
|
})
|
|
@ApiParam({
|
|
name: "policyId",
|
|
description: "Fanavaran policy ID",
|
|
example: 12345,
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns third-party policy details",
|
|
schema: { type: "object" },
|
|
})
|
|
async thirdPartyPolicyById(
|
|
@Param("policyId", ParseIntPipe) policyId: number,
|
|
) {
|
|
return await this.lookupsService.thirdPartyPolicyById(policyId);
|
|
}
|
|
|
|
@Get("body-policy/:policyId")
|
|
@ApiOperation({
|
|
summary: "Vehicle hull (body) policy inquiry by policy ID",
|
|
description:
|
|
"Returns vehicle hull (body) insurance policy details for the given policy ID via car/vehicle-hull-policies/{policyId}.",
|
|
})
|
|
@ApiParam({
|
|
name: "policyId",
|
|
description: "Fanavaran policy ID",
|
|
example: 12345,
|
|
})
|
|
@ApiOkResponse({
|
|
description: "Returns body policy details",
|
|
schema: { type: "object" },
|
|
})
|
|
async bodyPolicyById(@Param("policyId", ParseIntPipe) policyId: number) {
|
|
return await this.lookupsService.bodyPolicyById(policyId);
|
|
}
|
|
|
|
@Get("vehicle/:vehicleId")
|
|
@ApiOperation({
|
|
summary: "Fanavaran vehicle by id",
|
|
description:
|
|
"GET car/vehicles/{vehicleId} after a third-party/hull policy returns VehicleId. Pass the policy VehicleVersionNo when you need that exact version; omit it for the latest version. Response includes vehicleKind (VehicleGroupId) and used (UsedId) lookup rows.",
|
|
})
|
|
@ApiParam({
|
|
name: "vehicleId",
|
|
description: "Fanavaran vehicle id from the policy VehicleId field",
|
|
example: 3379978,
|
|
})
|
|
@ApiQuery({
|
|
name: "versionNo",
|
|
required: false,
|
|
description:
|
|
"Policy VehicleVersionNo. Omit to fetch the latest vehicle version.",
|
|
example: 2,
|
|
})
|
|
@ApiOkResponse({
|
|
description:
|
|
"Vehicle record plus vehicleKind, used, plaque, and color placeholders",
|
|
schema: { type: "object" },
|
|
})
|
|
async vehicleById(
|
|
@Param("vehicleId", ParseIntPipe) vehicleId: number,
|
|
@Query("versionNo") versionNo?: string,
|
|
) {
|
|
const parsedVersion =
|
|
versionNo == null || String(versionNo).trim() === ""
|
|
? undefined
|
|
: Number(versionNo);
|
|
return await this.lookupsService.vehicleById(
|
|
vehicleId,
|
|
Number.isFinite(parsedVersion) ? parsedVersion : undefined,
|
|
);
|
|
}
|
|
}
|