parent
de824375d3
commit
3b06d1a6ef
@ -1,7 +1,10 @@
|
|||||||
import { IsEmail, IsNotEmpty, IsObject, IsOptional, IsPhoneNumber, IsString } from 'class-validator';
|
import { IsEmail, IsNotEmpty, IsObject, IsOptional, IsPhoneNumber, IsString } from 'class-validator';
|
||||||
|
import { getConnectionManager } from 'typeorm';
|
||||||
import { config } from '../../../config';
|
import { config } from '../../../config';
|
||||||
|
import { RunnerGroupNotFoundError } from '../../../errors/RunnerGroupErrors';
|
||||||
import { Address } from '../../entities/Address';
|
import { Address } from '../../entities/Address';
|
||||||
import { GroupContact } from '../../entities/GroupContact';
|
import { GroupContact } from '../../entities/GroupContact';
|
||||||
|
import { RunnerGroup } from '../../entities/RunnerGroup';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This classed is used to create a new Group entity from a json body (post request).
|
* This classed is used to create a new Group entity from a json body (post request).
|
||||||
@ -50,6 +53,30 @@ export class CreateGroupContact {
|
|||||||
@IsEmail()
|
@IsEmail()
|
||||||
email?: string;
|
email?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new contacts's groups' ids.
|
||||||
|
* You can provide either one groupId or an array of groupIDs.
|
||||||
|
*/
|
||||||
|
@IsOptional()
|
||||||
|
groups?: number[] | number
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get's all groups for this contact by their id's;
|
||||||
|
*/
|
||||||
|
public async getGroups(): Promise<RunnerGroup[]> {
|
||||||
|
if (!this.groups) { return null; }
|
||||||
|
let groups = new Array<RunnerGroup>();
|
||||||
|
if (!Array.isArray(this.groups)) {
|
||||||
|
this.groups = [this.groups]
|
||||||
|
}
|
||||||
|
for (let group of this.groups) {
|
||||||
|
let found = await getConnectionManager().get().getRepository(RunnerGroup).findOne({ id: group });
|
||||||
|
if (!found) { throw new RunnerGroupNotFoundError(); }
|
||||||
|
groups.push(found);
|
||||||
|
}
|
||||||
|
return groups;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new Address entity from this.
|
* Creates a new Address entity from this.
|
||||||
@ -63,6 +90,8 @@ export class CreateGroupContact {
|
|||||||
newContact.phone = this.phone;
|
newContact.phone = this.phone;
|
||||||
newContact.address = this.address;
|
newContact.address = this.address;
|
||||||
Address.validate(newContact.address);
|
Address.validate(newContact.address);
|
||||||
|
newContact.groups = await this.getGroups();
|
||||||
|
|
||||||
return newContact;
|
return newContact;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user