diff --git a/src/controllers/ContactController.ts b/src/controllers/ContactController.ts
index 75a9c26..f9fc752 100644
--- a/src/controllers/ContactController.ts
+++ b/src/controllers/ContactController.ts
@@ -1,7 +1,9 @@
-import { JsonController } from 'routing-controllers';
-import { OpenAPI } from 'routing-controllers-openapi';
+import { Authorized, Get, JsonController, OnUndefined, Param } from 'routing-controllers';
+import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
import { getConnectionManager, Repository } from 'typeorm';
+import { GroupContactNotFoundError } from '../errors/GroupContactErrors';
import { GroupContact } from '../models/entities/GroupContact';
+import { ResponseGroupContact } from '../models/responses/ResponseGroupContact';
@JsonController('/contacts')
@OpenAPI({ security: [{ "AuthToken": [] }, { "RefreshTokenCookie": [] }] })
@@ -15,30 +17,30 @@ export class ContactController {
this.contactRepository = getConnectionManager().get().getRepository(GroupContact);
}
- // @Get()
- // @Authorized("DONOR:GET")
- // @ResponseSchema(ResponseDonor, { isArray: true })
- // @OpenAPI({ description: 'Lists all contact.
This includes the contact\'s current donation amount.' })
- // async getAll() {
- // let responseDonors: ResponseDonor[] = new Array();
- // const contacts = await this.contactRepository.find({ relations: ['donations', 'donations.runner', 'donations.runner.scans', 'donations.runner.scans.track'] });
- // contacts.forEach(contact => {
- // responseDonors.push(new ResponseDonor(contact));
- // });
- // return responseDonors;
- // }
+ @Get()
+ @Authorized("CONTACT:GET")
+ @ResponseSchema(ResponseGroupContact, { isArray: true })
+ @OpenAPI({ description: 'Lists all contacts.
This includes the contact\'s associated groups.' })
+ async getAll() {
+ let responseContacts: ResponseGroupContact[] = new Array();
+ const contacts = await this.contactRepository.find({ relations: ['groups'] });
+ contacts.forEach(contact => {
+ responseContacts.push(contact.toResponse());
+ });
+ return responseContacts;
+ }
- // @Get('/:id')
- // @Authorized("DONOR:GET")
- // @ResponseSchema(ResponseDonor)
- // @ResponseSchema(DonorNotFoundError, { statusCode: 404 })
- // @OnUndefined(DonorNotFoundError)
- // @OpenAPI({ description: 'Lists all information about the contact whose id got provided.
This includes the contact\'s current donation amount.' })
- // async getOne(@Param('id') id: number) {
- // let contact = await this.contactRepository.findOne({ id: id }, { relations: ['donations', 'donations.runner', 'donations.runner.scans', 'donations.runner.scans.track'] })
- // if (!contact) { throw new DonorNotFoundError(); }
- // return new ResponseDonor(contact);
- // }
+ @Get('/:id')
+ @Authorized("DONOR:GET")
+ @ResponseSchema(ResponseGroupContact)
+ @ResponseSchema(GroupContactNotFoundError, { statusCode: 404 })
+ @OnUndefined(GroupContactNotFoundError)
+ @OpenAPI({ description: 'Lists all information about the contact whose id got provided.
This includes the contact\'s associated groups.' })
+ async getOne(@Param('id') id: number) {
+ let contact = await this.contactRepository.findOne({ id: id }, { relations: ['groups'] })
+ if (!contact) { throw new GroupContactNotFoundError(); }
+ return contact.toResponse();
+ }
// @Post()
// @Authorized("DONOR:CREATE")