From 72c3fc78b3f7a960496fd7737c5aac8e9880db45 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 12 Jan 2021 19:03:33 +0100 Subject: [PATCH] Added the basics for distance donation updateing ref #66 --- src/controllers/DonationController.ts | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/controllers/DonationController.ts b/src/controllers/DonationController.ts index 2d474f6..9bd4b96 100644 --- a/src/controllers/DonationController.ts +++ b/src/controllers/DonationController.ts @@ -87,7 +87,7 @@ export class DonationController { @ResponseSchema(DonorNotFoundError, { statusCode: 404 }) @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) @ResponseSchema(DonationIdsNotMatchingError, { statusCode: 406 }) - @OpenAPI({ description: "Update the fixed donation (not distance donation - use /donations/fixed instead) whose id you provided.
Please remember that ids can't be changed and amounts must be positive." }) + @OpenAPI({ description: "Update the fixed donation (not distance donation - use /donations/distance instead) whose id you provided.
Please remember that ids can't be changed and amounts must be positive." }) async putFixed(@Param('id') id: number, @Body({ validate: true }) donation: UpdateFixedDonation) { let oldDonation = await this.fixedDonationRepository.findOne({ id: id }); @@ -103,28 +103,28 @@ export class DonationController { return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['donor'] })).toResponse(); } - // @Put('/trackscans/:id') - // @Authorized("SCAN:UPDATE") - // @ResponseSchema(ResponseTrackScan) - // @ResponseSchema(ScanNotFoundError, { statusCode: 404 }) - // @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) - // @ResponseSchema(ScanStationNotFoundError, { statusCode: 404 }) - // @ResponseSchema(ScanIdsNotMatchingError, { statusCode: 406 }) - // @OpenAPI({ description: 'Update the track scan (not "normal" scan use /scans/trackscans/:id instead) whose id you provided.
Please remember that only the validity, runner and track can be changed.' }) - // async putTrackScan(@Param('id') id: number, @Body({ validate: true }) scan: UpdateTrackScan) { - // let oldScan = await this.trackScanRepository.findOne({ id: id }); + @Put('/distance/:id') + @Authorized("DONATION:UPDATE") + @ResponseSchema(ResponseDonation) + @ResponseSchema(DonationNotFoundError, { statusCode: 404 }) + @ResponseSchema(DonorNotFoundError, { statusCode: 404 }) + @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) + @ResponseSchema(DonationIdsNotMatchingError, { statusCode: 406 }) + @OpenAPI({ description: "Update the distance donation (not fixed donation - use /donations/fixed instead) whose id you provided.
Please remember that ids can't be changed and amountPerDistance must be positive." }) + async putDistance(@Param('id') id: number, @Body({ validate: true }) donation: UpdateDistanceDonation) { + let oldDonation = await this.distanceDonationRepository.findOne({ id: id }); - // if (!oldScan) { - // throw new ScanNotFoundError(); - // } + if (!oldDonation) { + throw new DonationNotFoundError(); + } - // if (oldScan.id != scan.id) { - // throw new ScanIdsNotMatchingError(); - // } + if (oldDonation.id != donation.id) { + throw new DonationIdsNotMatchingError(); + } - // await this.trackScanRepository.save(await scan.update(oldScan)); - // return (await this.scanRepository.findOne({ id: id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse(); - // } + await this.distanceDonationRepository.save(await donation.update(oldDonation)); + return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['runner', 'donor', 'runner.scans', 'runner.scans.track'] })).toResponse(); + } @Delete('/:id') @Authorized("DONATION:DELETE")