diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a849b6..9bca9f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,13 +2,30 @@ All notable changes to this project will be documented in this file. Dates are displayed in UTC. +#### [v0.10.1](https://git.odit.services/lfk/backend/compare/v0.10.0...v0.10.1) + +- 🧾New changelog file version [CI SKIP] [skip ci] [`69afd4d`](https://git.odit.services/lfk/backend/commit/69afd4d5877401eb46df430f43a7feb273abda1e) +- 🚀Bumped version to v0.10.1 [`24d152f`](https://git.odit.services/lfk/backend/commit/24d152fdc8fe17fffa2f2a718d7145ba8a91d79c) +- 🧾New changelog file version [CI SKIP] [skip ci] [`4279e43`](https://git.odit.services/lfk/backend/commit/4279e4374304887e8db40eab77763b20bbce91a1) +- Removed duplicate openapi statement [`4834a66`](https://git.odit.services/lfk/backend/commit/4834a6698b0958602421c1478a95fec7edda910b) +- Merge pull request 'Selfservice donations reformatting feature/187-selfservice_donation' (#188) from feature/187-selfservice_donation into dev [`d837654`](https://git.odit.services/lfk/backend/commit/d837654617f7de5d055ffb06c65e2cd52f65c604) +- New class: ResponseSelfServiceDonor [`d70c5b1`](https://git.odit.services/lfk/backend/commit/d70c5b1bbc9f02782f8755b6929e2d3458e10221) +- Switched selfservice donation.donor from string to object [`0767943`](https://git.odit.services/lfk/backend/commit/0767943721b6964d542f580c541e744f86444ac6) +- Adjusted runner property names [`ca87774`](https://git.odit.services/lfk/backend/commit/ca87774767807a2c4bc869b0de95cc73832a8405) +- 🧾New changelog file version [CI SKIP] [skip ci] [`71e3d0e`](https://git.odit.services/lfk/backend/commit/71e3d0efe2cbde47aea0f26cb5a8b5cd3312707d) +- Added new responsetype for new class [`f693f2c`](https://git.odit.services/lfk/backend/commit/f693f2cde9a04147155aea4de5d52e1d19d722ca) + #### [v0.10.0](https://git.odit.services/lfk/backend/compare/v0.9.2...v0.10.0) +> 1 April 2021 + +- Merge pull request 'Release 0.10.0' (#186) from dev into main [`b517dff`](https://git.odit.services/lfk/backend/commit/b517dff8a82c960836d9f0be90fd89f3ba2fae7d) - 🚀Bumped version to v0.10.0 [`dc3071f`](https://git.odit.services/lfk/backend/commit/dc3071f7d2be298f0bb02d86ec67ed1125cd3b49) -- 🧾New changelog file version [CI SKIP] [skip ci] [`5fb355f`](https://git.odit.services/lfk/backend/commit/5fb355f450f19e96d3671b1a46e94d564495942b) -- Merge pull request 'Mail locales feature/184-mail_locales' (#185) from feature/184-mail_locales into dev [`33c13de`](https://git.odit.services/lfk/backend/commit/33c13de32c68a3d9e87e4fd9ad12a815ed8c9fde) - Added locale to mail related runner endpoints [`7af883f`](https://git.odit.services/lfk/backend/commit/7af883f27198206af542bcaff4686221d3788e87) - Added locale to mail related runner endpoints [`f543307`](https://git.odit.services/lfk/backend/commit/f5433076b01c743ed9af085fccadb8f1edc26419) +- 🧾New changelog file version [CI SKIP] [skip ci] [`5fb355f`](https://git.odit.services/lfk/backend/commit/5fb355f450f19e96d3671b1a46e94d564495942b) +- 🧾New changelog file version [CI SKIP] [skip ci] [`114c246`](https://git.odit.services/lfk/backend/commit/114c246aceba566cc0dd6daab51a77b951b031cc) +- Merge pull request 'Mail locales feature/184-mail_locales' (#185) from feature/184-mail_locales into dev [`33c13de`](https://git.odit.services/lfk/backend/commit/33c13de32c68a3d9e87e4fd9ad12a815ed8c9fde) - Added locale to mail related user endpoints [`1be073a`](https://git.odit.services/lfk/backend/commit/1be073a4fa39f0332a46f567ee6af10a9137844c) - 🧾New changelog file version [CI SKIP] [skip ci] [`6aafe4a`](https://git.odit.services/lfk/backend/commit/6aafe4a6ae7d253ab39220e551c52ae067cc481a) diff --git a/package.json b/package.json index a3a6521..ade8451 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@odit/lfk-backend", - "version": "0.10.0", + "version": "0.10.1", "main": "src/app.ts", "repository": "https://git.odit.services/lfk/backend", "author": { diff --git a/src/controllers/AuthController.ts b/src/controllers/AuthController.ts index be55ee7..eebbd79 100644 --- a/src/controllers/AuthController.ts +++ b/src/controllers/AuthController.ts @@ -87,7 +87,7 @@ export class AuthController { @ResponseSchema(UserNotFoundError, { statusCode: 404 }) @ResponseSchema(UsernameOrEmailNeededError, { statusCode: 406 }) @ResponseSchema(MailSendingError, { statusCode: 500 }) - @OpenAPI({ description: "Request a password reset token.
This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}.", parameters: [{ in: "query", name: "locale", schema: { type: "string", enum: ["de", "en"] } }] }) + @OpenAPI({ description: "Request a password reset token.
This will provide you with a reset token that you can use by posting to /api/auth/reset/{token}." }) async getResetToken(@Body({ validate: true }) passwordReset: CreateResetToken, @QueryParam("locale") locale: string = "en") { const reset_token: string = await passwordReset.toResetToken(); await Mailer.sendResetMail(passwordReset.email, reset_token, locale); diff --git a/src/controllers/RunnerSelfServiceController.ts b/src/controllers/RunnerSelfServiceController.ts index afa9379..9563975 100644 --- a/src/controllers/RunnerSelfServiceController.ts +++ b/src/controllers/RunnerSelfServiceController.ts @@ -119,7 +119,7 @@ export class RunnerSelfServiceController { @Post('/runners/forgot') @ResponseSchema(RunnerNotFoundError, { statusCode: 404 }) @OnUndefined(ResponseEmpty) - @OpenAPI({ description: 'Use this endpoint to reuqest a new selfservice token/link to be sent to your mail address (rate limited to one mail every 24hrs).', parameters: [{ in: "query", name: "locale", schema: { type: "string", enum: ["de", "en"] } }] }) + @OpenAPI({ description: 'Use this endpoint to reuqest a new selfservice token/link to be sent to your mail address (rate limited to one mail every 24hrs).' }) async requestNewToken(@QueryParam('mail') mail: string, @QueryParam("locale") locale: string = "en") { if (!mail) { throw new RunnerNotFoundError(); @@ -145,7 +145,7 @@ export class RunnerSelfServiceController { @Post('/runners/register') @ResponseSchema(ResponseSelfServiceRunner) @ResponseSchema(RunnerEmailNeededError, { statusCode: 406 }) - @OpenAPI({ description: 'Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow "everyday citizen" to register themselves.
You have to provide a mail address, b/c the future we\'ll implement email verification.', parameters: [{ in: "query", name: "locale", schema: { type: "string", enum: ["de", "en"] } }] }) + @OpenAPI({ description: 'Create a new selfservice runner in the citizen org.
This endpoint shoud be used to allow "everyday citizen" to register themselves.
You have to provide a mail address, b/c the future we\'ll implement email verification.' }) async registerRunner(@Body({ validate: true }) createRunner: CreateSelfServiceCitizenRunner, @QueryParam("locale") locale: string = "en") { let runner = await createRunner.toEntity(); @@ -165,7 +165,7 @@ export class RunnerSelfServiceController { @Post('/runners/register/:token') @ResponseSchema(ResponseSelfServiceRunner) @ResponseSchema(RunnerOrganizationNotFoundError, { statusCode: 404 }) - @OpenAPI({ description: 'Create a new selfservice runner in a provided org.
The orgs get provided and authorized via api tokens that can be optained via the /organizations endpoint.', parameters: [{ in: "query", name: "locale", schema: { type: "string", enum: ["de", "en"] } }] }) + @OpenAPI({ description: 'Create a new selfservice runner in a provided org.
The orgs get provided and authorized via api tokens that can be optained via the /organizations endpoint.' }) async registerOrganizationRunner(@Param('token') token: string, @Body({ validate: true }) createRunner: CreateSelfServiceRunner, @QueryParam("locale") locale: string = "en") { const org = await this.getOrgansisation(token); diff --git a/src/models/enums/ResponseObjectType.ts b/src/models/enums/ResponseObjectType.ts index c7fc527..91423cf 100644 --- a/src/models/enums/ResponseObjectType.ts +++ b/src/models/enums/ResponseObjectType.ts @@ -35,4 +35,5 @@ export enum ResponseObjectType { USER = 'USER', USERGROUP = 'USERGROUP', USERPERMISSIONS = 'USERPERMISSIONS', + SELFSERVICEDONOR = 'SELFSERVICEDONOR' } \ No newline at end of file diff --git a/src/models/responses/ResponseSelfServiceDonation.ts b/src/models/responses/ResponseSelfServiceDonation.ts index beb8fdc..38d5abf 100644 --- a/src/models/responses/ResponseSelfServiceDonation.ts +++ b/src/models/responses/ResponseSelfServiceDonation.ts @@ -2,6 +2,7 @@ import { IsInt, IsNotEmpty, IsPositive } from 'class-validator'; import { DistanceDonation } from '../entities/DistanceDonation'; import { ResponseObjectType } from '../enums/ResponseObjectType'; import { IResponse } from './IResponse'; +import { ResponseSelfServiceDonor } from './ResponseSelfServiceDonor'; /** * Defines the runner selfservice donation response. @@ -18,7 +19,7 @@ export class ResponseSelfServiceDonation implements IResponse { * The donation's donor. */ @IsNotEmpty() - donor: string; + donor: ResponseSelfServiceDonor; /** * The donation's amount in the smalles unit of your currency (default: euro cent). @@ -35,9 +36,7 @@ export class ResponseSelfServiceDonation implements IResponse { amountPerDistance: number; public constructor(donation: DistanceDonation) { - if (!donation.donor.middlename) { this.donor = donation.donor.firstname + " " + donation.donor.lastname; } - else { this.donor = donation.donor.firstname + " " + donation.donor.middlename + " " + donation.donor.lastname; } - + this.donor = new ResponseSelfServiceDonor(donation.donor); this.amountPerDistance = donation.amountPerDistance; this.amount = donation.amount; } diff --git a/src/models/responses/ResponseSelfServiceDonor.ts b/src/models/responses/ResponseSelfServiceDonor.ts new file mode 100644 index 0000000..a305233 --- /dev/null +++ b/src/models/responses/ResponseSelfServiceDonor.ts @@ -0,0 +1,51 @@ +import { IsInt, IsString } from "class-validator"; +import { Donor } from '../entities/Donor'; +import { ResponseObjectType } from '../enums/ResponseObjectType'; +import { IResponse } from './IResponse'; + +/** + * Defines the donor selfservice response. + * Why? B/C runner's are not allowed to view all information available to admin users. +*/ +export class ResponseSelfServiceDonor implements IResponse { + /** + * The responseType. + * This contains the type of class/entity this response contains. + */ + responseType: ResponseObjectType = ResponseObjectType.SELFSERVICEDONOR; + + /** + * The participant's id. + */ + @IsInt() + id: number; + + /** + * The participant's first name. + */ + @IsString() + firstname: string; + + /** + * The participant's middle name. + */ + @IsString() + middlename?: string; + + /** + * The participant's last name. + */ + @IsString() + lastname: string; + + /** + * Creates a ResponseSelfServiceDonor object from a runner. + * @param donor The donor the response shall be build for. + */ + public constructor(donor: Donor) { + this.id = donor.id; + this.firstname = donor.firstname; + this.middlename = donor.middlename; + this.lastname = donor.lastname; + } +} diff --git a/src/models/responses/ResponseSelfServiceRunner.ts b/src/models/responses/ResponseSelfServiceRunner.ts index 00fe9b9..f558e82 100644 --- a/src/models/responses/ResponseSelfServiceRunner.ts +++ b/src/models/responses/ResponseSelfServiceRunner.ts @@ -38,10 +38,10 @@ export class ResponseSelfServiceRunner extends ResponseParticipant implements IR group: string; /** - * The runner's associated donations. + * The runner's associated distance donations. */ @IsString() - donations: ResponseSelfServiceDonation[] + distanceDonations: ResponseSelfServiceDonation[] /** * The runner's self-service jwt for auth. @@ -60,7 +60,7 @@ export class ResponseSelfServiceRunner extends ResponseParticipant implements IR this.distance = runner.distance; this.donationAmount = runner.distanceDonationAmount; this.group = this.getTeamString(runner.group); - this.donations = this.getDonations(runner.distanceDonations); + this.distanceDonations = this.getDonations(runner.distanceDonations); } /**