From 97ecc83fe47f35638313d4cb424ccb554d8d47d4 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 12 Jan 2021 18:50:47 +0100 Subject: [PATCH] Implemented fixed donation creation ref #66 --- src/controllers/DonationController.ts | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/controllers/DonationController.ts b/src/controllers/DonationController.ts index c31c84e..a5cc7d9 100644 --- a/src/controllers/DonationController.ts +++ b/src/controllers/DonationController.ts @@ -1,9 +1,12 @@ -import { Authorized, Delete, Get, JsonController, OnUndefined, Param, QueryParam } from 'routing-controllers'; +import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post, QueryParam } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { getConnectionManager, Repository } from 'typeorm'; import { DonationNotFoundError } from '../errors/DonationErrors'; +import { DonorNotFoundError } from '../errors/DonorErrors'; +import { CreateFixedDonation } from '../models/actions/create/CreateFixedDonation'; import { DistanceDonation } from '../models/entities/DistanceDonation'; import { Donation } from '../models/entities/Donation'; +import { FixedDonation } from '../models/entities/FixedDonation'; import { ResponseDistanceDonation } from '../models/responses/ResponseDistanceDonation'; import { ResponseDonation } from '../models/responses/ResponseDonation'; import { ResponseEmpty } from '../models/responses/ResponseEmpty'; @@ -13,6 +16,7 @@ import { ResponseEmpty } from '../models/responses/ResponseEmpty'; export class DonationController { private donationRepository: Repository; private distanceDonationRepository: Repository; + private fixedDonationRepository: Repository; /** * Gets the repository of this controller's model/entity. @@ -20,6 +24,7 @@ export class DonationController { constructor() { this.donationRepository = getConnectionManager().get().getRepository(Donation); this.distanceDonationRepository = getConnectionManager().get().getRepository(DistanceDonation); + this.fixedDonationRepository = getConnectionManager().get().getRepository(FixedDonation); } @Get() @@ -49,16 +54,16 @@ export class DonationController { return donation.toResponse(); } - // @Post() - // @UseBefore(ScanAuth) - // @ResponseSchema(ResponseScan) - // @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) - // @OpenAPI({ description: 'Create a new scan (not track scan - use /scans/trackscans instead).
Please rmemember to provide the scan\'s runner\'s id and distance.', security: [{ "ScanApiToken": [] }, { "AuthToken": [] }, { "RefreshTokenCookie": [] }] }) - // async post(@Body({ validate: true }) createScan: CreateScan) { - // let scan = await createScan.toEntity(); - // scan = await this.scanRepository.save(scan); - // return (await this.scanRepository.findOne({ id: scan.id }, { relations: ['runner', 'track', 'runner.scans', 'runner.scans.track', 'card', 'station'] })).toResponse(); - // } + @Post('/fixed') + @Authorized("DONATION:CREATE") + @ResponseSchema(ResponseDonation) + @ResponseSchema(DonorNotFoundError, { statusCode: 404 }) + @OpenAPI({ description: 'Create a fixed donation (not distance donation - use /donations/distance instead).
Please rmemember to provide the donation\'s donors\'s id and amount.' }) + async postFixed(@Body({ validate: true }) createDonation: CreateFixedDonation) { + let donation = await createDonation.toEntity(); + donation = await this.fixedDonationRepository.save(donation); + return (await this.donationRepository.findOne({ id: donation.id }, { relations: ['donor'] })).toResponse(); + } // @Post("/trackscans") // @UseBefore(ScanAuth)