refactor(integration-bpjs): update validation logic for accident-related fields

This commit is contained in:
riefive
2025-10-24 13:12:40 +07:00
parent fb3e10bd11
commit ae995fef1d
+120 -105
View File
@@ -123,111 +123,126 @@ const IntegrationBpjsSchema = z
classPaySource: z.string({ required_error: ERROR_MESSAGES.required.classPaySource }).optional(),
responsiblePerson: z.string({ required_error: ERROR_MESSAGES.required.responsiblePerson }).optional(),
})
// .refine(
// (data) => {
// return data.trafficAccident !== '' && data.accidentDate && data.accidentDate.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.accidentDate,
// path: ['accidentDate'],
// },
// )
// .refine(
// (data) => {
// return data.trafficAccident !== '' && data.accidentProvince && data.accidentProvince.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.accidentProvince,
// path: ['accidentProvince'],
// },
// )
// .refine(
// (data) => {
// return data.trafficAccident !== '' && data.accidentCity && data.accidentCity.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.accidentCity,
// path: ['accidentCity'],
// },
// )
// .refine(
// (data) => {
// return data.trafficAccident !== '' && data.accidentDistrict && data.accidentDistrict.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.accidentDistrict,
// path: ['accidentDistrict'],
// },
// )
// .refine(
// (data) => {
// return data.trafficAccident !== '' && data.suplesi && data.suplesi.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.suplesi,
// path: ['suplesi'],
// },
// )
// .refine(
// (data) => {
// return (
// data.trafficAccident !== '' &&
// data.suplesi?.trim() === 'yes' &&
// data.suplesiNumber &&
// data.suplesiNumber.trim() !== ''
// )
// },
// {
// message: ERROR_MESSAGES.required.suplesiNumber,
// path: ['suplesiNumber'],
// },
// )
// .refine(
// (data) => {
// return data.serviceType === '1' && data.classLevel && data.classLevel.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.classLevel,
// path: ['classLevel'],
// },
// )
// .refine(
// (data) => {
// return data.serviceType === '1' && data.classLevelUpgrade && data.classLevelUpgrade.trim() !== ''
// },
// {
// message: ERROR_MESSAGES.required.classLevelUpgrade,
// path: ['classLevelUpgrade'],
// },
// )
// .refine(
// (data) => {
// return (
// data.serviceType === '1' &&
// data.classLevelUpgrade?.trim() !== '' &&
// data.classPaySource &&
// data.classPaySource.trim() !== ''
// )
// },
// {
// message: ERROR_MESSAGES.required.classLevelUpgrade,
// path: ['classPaySource'],
// },
// )
// .refine(
// (data) => {
// return (
// data.serviceType === '1' &&
// data.classPaySource?.trim() !== '' &&
// data.responsiblePerson &&
// data.responsiblePerson.trim() !== ''
// )
// },
// {
// message: ERROR_MESSAGES.required.responsiblePerson,
// path: ['responsiblePerson'],
// },
// )
.refine(
(data) => {
if (data.trafficAccident && data.trafficAccident.trim() !== '') {
return data.accidentDate && data.accidentDate.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.accidentDate,
path: ['accidentDate'],
},
)
.refine(
(data) => {
if (data.trafficAccident && data.trafficAccident.trim() !== '') {
return data.accidentProvince && data.accidentProvince.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.accidentProvince,
path: ['accidentProvince'],
},
)
.refine(
(data) => {
if (data.trafficAccident && data.trafficAccident.trim() !== '') {
return data.accidentCity && data.accidentCity.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.accidentCity,
path: ['accidentCity'],
},
)
.refine(
(data) => {
if (data.trafficAccident && data.trafficAccident.trim() !== '') {
return data.accidentDistrict && data.accidentDistrict.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.accidentDistrict,
path: ['accidentDistrict'],
},
)
.refine(
(data) => {
if (data.trafficAccident && data.trafficAccident.trim() !== '') {
return data.suplesi && data.suplesi.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.suplesi,
path: ['suplesi'],
},
)
.refine(
(data) => {
if (data.trafficAccident && data.trafficAccident.trim() !== '' && data.suplesi?.trim() === 'yes') {
return data.suplesiNumber && data.suplesiNumber.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.suplesiNumber,
path: ['suplesiNumber'],
},
)
.refine(
(data) => {
if (data.serviceType === '1') {
return data.classLevel && data.classLevel.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.classLevel,
path: ['classLevel'],
},
)
.refine(
(data) => {
if (data.serviceType === '1') {
return data.classLevelUpgrade && data.classLevelUpgrade.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.classLevelUpgrade,
path: ['classLevelUpgrade'],
},
)
.refine(
(data) => {
if (data.serviceType === '1' && data.classLevelUpgrade?.trim() !== '') {
return data.classPaySource && data.classPaySource.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.classPaySource,
path: ['classPaySource'],
},
)
.refine(
(data) => {
if (data.serviceType === '1' && data.classPaySource?.trim() !== '') {
return data.responsiblePerson && data.responsiblePerson.trim() !== ''
}
return true
},
{
message: ERROR_MESSAGES.required.responsiblePerson,
path: ['responsiblePerson'],
},
)
type IntegrationBpjsFormData = z.infer<typeof IntegrationBpjsSchema>