parent
f245840cde
commit
9dc9ce37d8
57
src/errors/AddressErrors.ts
Normal file
57
src/errors/AddressErrors.ts
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
import { IsString } from 'class-validator';
|
||||||
|
import { BadRequestError } from 'routing-controllers';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error to throw when an address's postal code fails validation.
|
||||||
|
*/
|
||||||
|
export class AddressPostalCodeInvalidError extends BadRequestError {
|
||||||
|
@IsString()
|
||||||
|
name = "AddressPostalCodeInvalidError"
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
message = "The postal code you provided is invalid. \n Please check if your postal code follows the postal code validation guidelines."
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error to throw when an non-empty address's first line isn't set.
|
||||||
|
*/
|
||||||
|
export class AddressFirstLineEmptyError extends BadRequestError {
|
||||||
|
@IsString()
|
||||||
|
name = "AddressFirstLineEmptyError"
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
message = "You provided a empty first address line. \n If you want an empty address please set all propertys to null. \n For non-empty addresses the following fields have to be set: address1, postalcode, city, country"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error to throw when an non-empty address's postal code isn't set.
|
||||||
|
*/
|
||||||
|
export class AddressPostalCodeEmptyError extends BadRequestError {
|
||||||
|
@IsString()
|
||||||
|
name = "AddressPostalCodeEmptyError"
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
message = "You provided a empty postal code. \n If you want an empty address please set all propertys to null. \n For non-empty addresses the following fields have to be set: address1, postalcode, city, country"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error to throw when an non-empty address's city isn't set.
|
||||||
|
*/
|
||||||
|
export class AddressCityEmptyError extends BadRequestError {
|
||||||
|
@IsString()
|
||||||
|
name = "AddressCityEmptyError"
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
message = "You provided a empty city. \n If you want an empty address please set all propertys to null. \n For non-empty addresses the following fields have to be set: address1, postalcode, city, country"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error to throw when an non-empty address's country isn't set.
|
||||||
|
*/
|
||||||
|
export class AddressCountryEmptyError extends BadRequestError {
|
||||||
|
@IsString()
|
||||||
|
name = "AddressCountryEmptyError"
|
||||||
|
|
||||||
|
@IsString()
|
||||||
|
message = "You provided a empty country. \n If you want an empty address please set all propertys to null. \n For non-empty addresses the following fields have to be set: address1, postalcode, city, country"
|
||||||
|
}
|
@ -29,7 +29,7 @@ export class CreateDonor extends CreateParticipant {
|
|||||||
newDonor.email = this.email;
|
newDonor.email = this.email;
|
||||||
newDonor.receiptNeeded = this.receiptNeeded;
|
newDonor.receiptNeeded = this.receiptNeeded;
|
||||||
newDonor.address = this.address;
|
newDonor.address = this.address;
|
||||||
|
Address.validate(newDonor.address);
|
||||||
if (this.receiptNeeded == true && Address.isValidAddress(newDonor.address) == false) {
|
if (this.receiptNeeded == true && Address.isValidAddress(newDonor.address) == false) {
|
||||||
throw new DonorReceiptAddressNeededError()
|
throw new DonorReceiptAddressNeededError()
|
||||||
}
|
}
|
||||||
|
@ -62,6 +62,7 @@ export class CreateGroupContact {
|
|||||||
contact.email = this.email;
|
contact.email = this.email;
|
||||||
contact.phone = this.phone;
|
contact.phone = this.phone;
|
||||||
contact.address = this.address;
|
contact.address = this.address;
|
||||||
return null;
|
Address.validate(contact.address);
|
||||||
|
return contact;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ import { getConnectionManager } from 'typeorm';
|
|||||||
import { RunnerGroupNotFoundError } from '../../../errors/RunnerGroupErrors';
|
import { RunnerGroupNotFoundError } from '../../../errors/RunnerGroupErrors';
|
||||||
import { RunnerOrganisationWrongTypeError } from '../../../errors/RunnerOrganisationErrors';
|
import { RunnerOrganisationWrongTypeError } from '../../../errors/RunnerOrganisationErrors';
|
||||||
import { RunnerTeamNeedsParentError } from '../../../errors/RunnerTeamErrors';
|
import { RunnerTeamNeedsParentError } from '../../../errors/RunnerTeamErrors';
|
||||||
|
import { Address } from '../../entities/Address';
|
||||||
import { Runner } from '../../entities/Runner';
|
import { Runner } from '../../entities/Runner';
|
||||||
import { RunnerGroup } from '../../entities/RunnerGroup';
|
import { RunnerGroup } from '../../entities/RunnerGroup';
|
||||||
import { CreateParticipant } from './CreateParticipant';
|
import { CreateParticipant } from './CreateParticipant';
|
||||||
@ -31,6 +32,7 @@ export class CreateRunner extends CreateParticipant {
|
|||||||
newRunner.email = this.email;
|
newRunner.email = this.email;
|
||||||
newRunner.group = await this.getGroup();
|
newRunner.group = await this.getGroup();
|
||||||
newRunner.address = this.address;
|
newRunner.address = this.address;
|
||||||
|
Address.validate(newRunner.address);
|
||||||
|
|
||||||
return newRunner;
|
return newRunner;
|
||||||
}
|
}
|
||||||
|
@ -23,6 +23,7 @@ export class CreateRunnerOrganisation extends CreateRunnerGroup {
|
|||||||
newRunnerOrganisation.name = this.name;
|
newRunnerOrganisation.name = this.name;
|
||||||
newRunnerOrganisation.contact = await this.getContact();
|
newRunnerOrganisation.contact = await this.getContact();
|
||||||
newRunnerOrganisation.address = this.address;
|
newRunnerOrganisation.address = this.address;
|
||||||
|
Address.validate(newRunnerOrganisation.address);
|
||||||
|
|
||||||
return newRunnerOrganisation;
|
return newRunnerOrganisation;
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ export class UpdateDonor extends CreateParticipant {
|
|||||||
donor.email = this.email;
|
donor.email = this.email;
|
||||||
donor.receiptNeeded = this.receiptNeeded;
|
donor.receiptNeeded = this.receiptNeeded;
|
||||||
donor.address = this.address;
|
donor.address = this.address;
|
||||||
|
Address.validate(donor.address);
|
||||||
if (this.receiptNeeded == true && Address.isValidAddress(donor.address) == false) {
|
if (this.receiptNeeded == true && Address.isValidAddress(donor.address) == false) {
|
||||||
throw new DonorReceiptAddressNeededError()
|
throw new DonorReceiptAddressNeededError()
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ import { IsInt, IsPositive } from 'class-validator';
|
|||||||
import { getConnectionManager } from 'typeorm';
|
import { getConnectionManager } from 'typeorm';
|
||||||
import { RunnerGroupNotFoundError } from '../../../errors/RunnerGroupErrors';
|
import { RunnerGroupNotFoundError } from '../../../errors/RunnerGroupErrors';
|
||||||
import { RunnerTeamNeedsParentError } from '../../../errors/RunnerTeamErrors';
|
import { RunnerTeamNeedsParentError } from '../../../errors/RunnerTeamErrors';
|
||||||
|
import { Address } from '../../entities/Address';
|
||||||
import { Runner } from '../../entities/Runner';
|
import { Runner } from '../../entities/Runner';
|
||||||
import { RunnerGroup } from '../../entities/RunnerGroup';
|
import { RunnerGroup } from '../../entities/RunnerGroup';
|
||||||
import { CreateParticipant } from '../create/CreateParticipant';
|
import { CreateParticipant } from '../create/CreateParticipant';
|
||||||
@ -36,6 +37,7 @@ export class UpdateRunner extends CreateParticipant {
|
|||||||
runner.email = this.email;
|
runner.email = this.email;
|
||||||
runner.group = await this.getGroup();
|
runner.group = await this.getGroup();
|
||||||
runner.address = this.address;
|
runner.address = this.address;
|
||||||
|
Address.validate(runner.address);
|
||||||
|
|
||||||
return runner;
|
return runner;
|
||||||
}
|
}
|
||||||
|
@ -30,6 +30,7 @@ export class UpdateRunnerOrganisation extends CreateRunnerGroup {
|
|||||||
organisation.name = this.name;
|
organisation.name = this.name;
|
||||||
organisation.contact = await this.getContact();
|
organisation.contact = await this.getContact();
|
||||||
organisation.address = this.address;
|
organisation.address = this.address;
|
||||||
|
Address.validate(organisation.address);
|
||||||
|
|
||||||
return organisation;
|
return organisation;
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import {
|
|||||||
import { Column } from "typeorm";
|
import { Column } from "typeorm";
|
||||||
import ValidatorJS from 'validator';
|
import ValidatorJS from 'validator';
|
||||||
import { config } from '../../config';
|
import { config } from '../../config';
|
||||||
|
import { AddressCityEmptyError, AddressCountryEmptyError, AddressFirstLineEmptyError, AddressPostalCodeEmptyError, AddressPostalCodeInvalidError } from '../../errors/AddressErrors';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the Address class.
|
* Defines the Address class.
|
||||||
@ -66,4 +67,19 @@ export class Address {
|
|||||||
if (ValidatorJS.isPostalCode(address.postalcode, config.postalcode_validation_countrycode) == false) { return false; }
|
if (ValidatorJS.isPostalCode(address.postalcode, config.postalcode_validation_countrycode) == false) { return false; }
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function validates addresses.
|
||||||
|
* This is a workaround for non-existant class validation for embedded entities.
|
||||||
|
* @param address The address that shall get validated.
|
||||||
|
*/
|
||||||
|
public static validate(address: Address) {
|
||||||
|
if (address == null) { return; }
|
||||||
|
if (address.address1 == null && address.city == null && address.country == null && address.postalcode == null) { return; }
|
||||||
|
if (address.address1 == null) { throw new AddressFirstLineEmptyError(); }
|
||||||
|
if (address.postalcode == null) { throw new AddressPostalCodeEmptyError(); }
|
||||||
|
if (address.city == null) { throw new AddressCityEmptyError(); }
|
||||||
|
if (address.country == null) { throw new AddressCountryEmptyError(); }
|
||||||
|
if (ValidatorJS.isPostalCode(address.postalcode.toString(), config.postalcode_validation_countrycode) == false) { throw new AddressPostalCodeInvalidError(); }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user