Browse Source

Introduce ignoreFields

pull/3230/head
Thomas Kaul 1 year ago
parent
commit
d98f0cdbe1
  1. 4
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts
  2. 12
      apps/client/src/app/util/form.util.ts

4
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.component.ts

@ -460,7 +460,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
comment: this.activityForm.controls['comment'].value,
currency: this.activityForm.controls['currency'].value,
customCurrency: this.activityForm.controls['currencyOfUnitPrice'].value,
date: (this.activityForm.controls['date'].value as Date).toISOString(),
date: this.activityForm.controls['date'].value,
dataSource: this.activityForm.controls['dataSource'].value,
fee: this.activityForm.controls['fee'].value,
quantity: this.activityForm.controls['quantity'].value,
@ -481,6 +481,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
await validateObjectForForm({
classDto: UpdateOrderDto,
form: this.activityForm,
ignoreFields: ['dataSource', 'date'],
object: activity as UpdateOrderDto
});
} else {
@ -490,6 +491,7 @@ export class CreateOrUpdateActivityDialog implements OnDestroy {
await validateObjectForForm({
classDto: CreateOrderDto,
form: this.activityForm,
ignoreFields: ['dataSource', 'date'],
object: activity
});
}

12
apps/client/src/app/util/form.util.ts

@ -5,20 +5,26 @@ import { validate } from 'class-validator';
export async function validateObjectForForm<T>({
classDto,
form,
ignoreFields = [],
object
}: {
classDto: { new (): T };
form: FormGroup;
ignoreFields?: string[];
object: T;
}): Promise<void> {
const objectInstance = plainToInstance(classDto, object);
const errors = await validate(objectInstance as object);
if (errors.length === 0) {
const nonIgnoredErrors = errors.filter(({ property }) => {
return !ignoreFields.includes(property);
});
if (nonIgnoredErrors.length === 0) {
return Promise.resolve();
}
for (const { constraints, property } of errors) {
for (const { constraints, property } of nonIgnoredErrors) {
const formControl = form.get(property);
if (formControl) {
@ -28,5 +34,5 @@ export async function validateObjectForForm<T>({
}
}
return Promise.reject(errors);
return Promise.reject(nonIgnoredErrors);
}

Loading…
Cancel
Save