diff --git a/src/controllers/DonationController.ts b/src/controllers/DonationController.ts index a5cc7d9..44f94ab 100644 --- a/src/controllers/DonationController.ts +++ b/src/controllers/DonationController.ts @@ -3,6 +3,8 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { getConnectionManager, Repository } from 'typeorm'; import { DonationNotFoundError } from '../errors/DonationErrors'; import { DonorNotFoundError } from '../errors/DonorErrors'; +import { RunnerNotFoundError } from '../errors/RunnerErrors'; +import { CreateDistanceDonation } from '../models/actions/create/CreateDistanceDonation'; import { CreateFixedDonation } from '../models/actions/create/CreateFixedDonation'; import { DistanceDonation } from '../models/entities/DistanceDonation'; import { Donation } from '../models/entities/Donation'; @@ -65,16 +67,17 @@ export class DonationController { return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['donor'] })).toResponse(); } - // @Post("/trackscans") - // @UseBefore(ScanAuth) - // @ResponseSchema(ResponseTrackScan) - // @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) - // @OpenAPI({ description: 'Create a new track scan (for "normal" scans use /scans instead).
Please remember that to provide the scan\'s card\'s station\'s id.', security: [{ "ScanApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) - // async postTrackScans(@Body({ validate: true }) createScan: CreateTrackScan) { - // let scan = await createScan.toEntity(); - // scan = await this.trackScanRepository.save(scan); - // return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse(); - // } + @Post('/distance') + @Authorized("DONATION:CREATE") + @ResponseSchema(ResponseDistanceDonation) + @ResponseSchema(DonorNotFoundError, { statusCode: 404 }) + @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) + @OpenAPI({ description: 'Create a distance donation (not fixed donation - use /donations/fixed instead).
Please rmemember to provide the donation\'s donors\'s and runner\s ids and amount per distance (kilometer).' }) + async postDistance(@Body({ validate: true }) createDonation: CreateDistanceDonation) { + let donation = await createDonation.toEntity(); + donation = await this.distanceDonationRepository.save(donation); + return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse(); + } // @Put('/:id') // @Authorized("SCAN:UPDATE")