Compare commits
28 Commits
v0.9.1
...
e89e07d0fc
| Author | SHA1 | Date | |
|---|---|---|---|
| e89e07d0fc | |||
| c28843c405 | |||
| 4834a6698b | |||
| 69afd4d587 | |||
| 24d152fdc8 | |||
| 4279e43743 | |||
| d837654617 | |||
| 0767943721 | |||
| ca87774767 | |||
| f693f2cde9 | |||
| d70c5b1bbc | |||
| 71e3d0efe2 | |||
| b517dff8a8 | |||
| 114c246ace | |||
| d7703c9e07 | |||
| dc3071f7d2 | |||
| 5fb355f450 | |||
| 33c13de32c | |||
| 1be073a4fa | |||
| b0d8249452 | |||
| 7af883f271 | |||
| f5433076b0 | |||
| 6aafe4a6ae | |||
| bdeeb03645 | |||
| 675c8762e8 | |||
| 89e392473c | |||
| 6c9b91d75a | |||
| 8c00aefd6c |
43
CHANGELOG.md
43
CHANGELOG.md
@@ -2,12 +2,53 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
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)
|
||||||
|
- 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)
|
||||||
|
|
||||||
|
#### [v0.9.2](https://git.odit.services/lfk/backend/compare/v0.9.1...v0.9.2)
|
||||||
|
|
||||||
|
> 29 March 2021
|
||||||
|
|
||||||
|
- Merge pull request 'Release 0.9.2' (#183) from dev into main [`bdeeb03`](https://git.odit.services/lfk/backend/commit/bdeeb036459c2a2131e843d8a5a6b338e0ba46ea)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`675c876`](https://git.odit.services/lfk/backend/commit/675c8762e8e4cf28d2f334d5ab2e1cb6b594e33c)
|
||||||
|
- Fixed bug in return creation [`6c9b91d`](https://git.odit.services/lfk/backend/commit/6c9b91d75a0d08fc4ab0e72c7a09bd0133566368)
|
||||||
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`8c00aef`](https://git.odit.services/lfk/backend/commit/8c00aefd6ce3723d9f83d1c94e6491d5d597391f)
|
||||||
|
- 🚀Bumped version to v0.9.2 [`89e3924`](https://git.odit.services/lfk/backend/commit/89e392473c52a3f328545699a0f4df89be33ba89)
|
||||||
|
|
||||||
#### [v0.9.1](https://git.odit.services/lfk/backend/compare/v0.9.0...v0.9.1)
|
#### [v0.9.1](https://git.odit.services/lfk/backend/compare/v0.9.0...v0.9.1)
|
||||||
|
|
||||||
|
> 29 March 2021
|
||||||
|
|
||||||
|
- Merge pull request 'Release v0.9.1' (#182) from dev into main [`3afd785`](https://git.odit.services/lfk/backend/commit/3afd785a54fac91c12af789af19b45e6124e0e39)
|
||||||
- 🚀Bumped version to v0.9.1 [`a139554`](https://git.odit.services/lfk/backend/commit/a139554e059e9a10acb1733ce1a82b610cc99269)
|
- 🚀Bumped version to v0.9.1 [`a139554`](https://git.odit.services/lfk/backend/commit/a139554e059e9a10acb1733ce1a82b610cc99269)
|
||||||
- Added query param to return created runenrcards [`5a36c8d`](https://git.odit.services/lfk/backend/commit/5a36c8dcae3d79b3b05ffb30a7ebb0d31dc8183a)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`8099999`](https://git.odit.services/lfk/backend/commit/8099999e2cdfc8046f9ff4a90681281b671e402d)
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`0290b0e`](https://git.odit.services/lfk/backend/commit/0290b0e5f531364d37d8157e639614cf5a6b4189)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`0290b0e`](https://git.odit.services/lfk/backend/commit/0290b0e5f531364d37d8157e639614cf5a6b4189)
|
||||||
- Merge pull request 'Return cards generated in bulk feature/180-blank_generation_return' (#181) from feature/180-blank_generation_return into dev [`0f7fa99`](https://git.odit.services/lfk/backend/commit/0f7fa990d473ce2dce032c47c39f79c1d0e8df90)
|
- Merge pull request 'Return cards generated in bulk feature/180-blank_generation_return' (#181) from feature/180-blank_generation_return into dev [`0f7fa99`](https://git.odit.services/lfk/backend/commit/0f7fa990d473ce2dce032c47c39f79c1d0e8df90)
|
||||||
|
- Added query param to return created runenrcards [`5a36c8d`](https://git.odit.services/lfk/backend/commit/5a36c8dcae3d79b3b05ffb30a7ebb0d31dc8183a)
|
||||||
- 🧾New changelog file version [CI SKIP] [skip ci] [`58f4d21`](https://git.odit.services/lfk/backend/commit/58f4d2151f459bc72692cc70e02a59b77abfb9f0)
|
- 🧾New changelog file version [CI SKIP] [skip ci] [`58f4d21`](https://git.odit.services/lfk/backend/commit/58f4d2151f459bc72692cc70e02a59b77abfb9f0)
|
||||||
- Added test for returnCards=true array length [`1cb2dc9`](https://git.odit.services/lfk/backend/commit/1cb2dc9d53b530435f5798f9cdf7ee866eb7416e)
|
- Added test for returnCards=true array length [`1cb2dc9`](https://git.odit.services/lfk/backend/commit/1cb2dc9d53b530435f5798f9cdf7ee866eb7416e)
|
||||||
- Added test for single card generation with returnCards=true [`6005b06`](https://git.odit.services/lfk/backend/commit/6005b0661f1d5c461bb102e243cc209a8adc21fa)
|
- Added test for single card generation with returnCards=true [`6005b06`](https://git.odit.services/lfk/backend/commit/6005b0661f1d5c461bb102e243cc209a8adc21fa)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-backend",
|
"name": "@odit/lfk-backend",
|
||||||
"version": "0.9.1",
|
"version": "0.10.1",
|
||||||
"main": "src/app.ts",
|
"main": "src/app.ts",
|
||||||
"repository": "https://git.odit.services/lfk/backend",
|
"repository": "https://git.odit.services/lfk/backend",
|
||||||
"author": {
|
"author": {
|
||||||
|
|||||||
@@ -61,9 +61,10 @@ export class RunnerCardController {
|
|||||||
|
|
||||||
if (returnCards) {
|
if (returnCards) {
|
||||||
let responseCards: ResponseRunnerCard[] = new Array<ResponseRunnerCard>();
|
let responseCards: ResponseRunnerCard[] = new Array<ResponseRunnerCard>();
|
||||||
cards.forEach(card => {
|
for await (let card of cards) {
|
||||||
responseCards.push(new ResponseRunnerCard(card));
|
let dbCard = await this.cardRepository.findOne({ id: card.id });
|
||||||
});
|
responseCards.push(new ResponseRunnerCard(dbCard));
|
||||||
|
}
|
||||||
return responseCards;
|
return responseCards;
|
||||||
}
|
}
|
||||||
let response = new ResponseEmpty();
|
let response = new ResponseEmpty();
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ export class RunnerSelfServiceController {
|
|||||||
@ResponseSchema(RunnerNotFoundError, { statusCode: 404 })
|
@ResponseSchema(RunnerNotFoundError, { statusCode: 404 })
|
||||||
@OnUndefined(ResponseEmpty)
|
@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).' })
|
@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) {
|
async requestNewToken(@QueryParam('mail') mail: string, @QueryParam("locale") locale: string = "en") {
|
||||||
if (!mail) {
|
if (!mail) {
|
||||||
throw new RunnerNotFoundError();
|
throw new RunnerNotFoundError();
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,7 @@ export class RunnerSelfServiceController {
|
|||||||
const token = JwtCreator.createSelfService(runner);
|
const token = JwtCreator.createSelfService(runner);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Mailer.sendSelfserviceForgottenMail(runner.email, token, "en")
|
await Mailer.sendSelfserviceForgottenMail(runner.email, token, locale)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new MailSendingError();
|
throw new MailSendingError();
|
||||||
}
|
}
|
||||||
@@ -146,7 +146,7 @@ export class RunnerSelfServiceController {
|
|||||||
@ResponseSchema(ResponseSelfServiceRunner)
|
@ResponseSchema(ResponseSelfServiceRunner)
|
||||||
@ResponseSchema(RunnerEmailNeededError, { statusCode: 406 })
|
@ResponseSchema(RunnerEmailNeededError, { statusCode: 406 })
|
||||||
@OpenAPI({ description: 'Create a new selfservice runner in the citizen org. <br> This endpoint shoud be used to allow "everyday citizen" to register themselves. <br> You have to provide a mail address, b/c the future we\'ll implement email verification.' })
|
@OpenAPI({ description: 'Create a new selfservice runner in the citizen org. <br> This endpoint shoud be used to allow "everyday citizen" to register themselves. <br> You have to provide a mail address, b/c the future we\'ll implement email verification.' })
|
||||||
async registerRunner(@Body({ validate: true }) createRunner: CreateSelfServiceCitizenRunner) {
|
async registerRunner(@Body({ validate: true }) createRunner: CreateSelfServiceCitizenRunner, @QueryParam("locale") locale: string = "en") {
|
||||||
let runner = await createRunner.toEntity();
|
let runner = await createRunner.toEntity();
|
||||||
|
|
||||||
runner = await this.runnerRepository.save(runner);
|
runner = await this.runnerRepository.save(runner);
|
||||||
@@ -154,7 +154,7 @@ export class RunnerSelfServiceController {
|
|||||||
response.token = JwtCreator.createSelfService(runner);
|
response.token = JwtCreator.createSelfService(runner);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Mailer.sendSelfserviceWelcomeMail(runner.email, response.token, "en")
|
await Mailer.sendSelfserviceWelcomeMail(runner.email, response.token, locale)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new MailSendingError();
|
throw new MailSendingError();
|
||||||
}
|
}
|
||||||
@@ -166,7 +166,7 @@ export class RunnerSelfServiceController {
|
|||||||
@ResponseSchema(ResponseSelfServiceRunner)
|
@ResponseSchema(ResponseSelfServiceRunner)
|
||||||
@ResponseSchema(RunnerOrganizationNotFoundError, { statusCode: 404 })
|
@ResponseSchema(RunnerOrganizationNotFoundError, { statusCode: 404 })
|
||||||
@OpenAPI({ description: 'Create a new selfservice runner in a provided org. <br> The orgs get provided and authorized via api tokens that can be optained via the /organizations endpoint.' })
|
@OpenAPI({ description: 'Create a new selfservice runner in a provided org. <br> 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) {
|
async registerOrganizationRunner(@Param('token') token: string, @Body({ validate: true }) createRunner: CreateSelfServiceRunner, @QueryParam("locale") locale: string = "en") {
|
||||||
const org = await this.getOrgansisation(token);
|
const org = await this.getOrgansisation(token);
|
||||||
|
|
||||||
let runner = await createRunner.toEntity(org);
|
let runner = await createRunner.toEntity(org);
|
||||||
@@ -176,7 +176,7 @@ export class RunnerSelfServiceController {
|
|||||||
response.token = JwtCreator.createSelfService(runner);
|
response.token = JwtCreator.createSelfService(runner);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Mailer.sendSelfserviceWelcomeMail(runner.email, response.token, "en")
|
await Mailer.sendSelfserviceWelcomeMail(runner.email, response.token, locale)
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw new MailSendingError();
|
throw new MailSendingError();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,4 +35,5 @@ export enum ResponseObjectType {
|
|||||||
USER = 'USER',
|
USER = 'USER',
|
||||||
USERGROUP = 'USERGROUP',
|
USERGROUP = 'USERGROUP',
|
||||||
USERPERMISSIONS = 'USERPERMISSIONS',
|
USERPERMISSIONS = 'USERPERMISSIONS',
|
||||||
|
SELFSERVICEDONOR = 'SELFSERVICEDONOR'
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@ import { IsInt, IsNotEmpty, IsPositive } from 'class-validator';
|
|||||||
import { DistanceDonation } from '../entities/DistanceDonation';
|
import { DistanceDonation } from '../entities/DistanceDonation';
|
||||||
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||||
import { IResponse } from './IResponse';
|
import { IResponse } from './IResponse';
|
||||||
|
import { ResponseSelfServiceDonor } from './ResponseSelfServiceDonor';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the runner selfservice donation response.
|
* Defines the runner selfservice donation response.
|
||||||
@@ -18,7 +19,7 @@ export class ResponseSelfServiceDonation implements IResponse {
|
|||||||
* The donation's donor.
|
* The donation's donor.
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
donor: string;
|
donor: ResponseSelfServiceDonor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The donation's amount in the smalles unit of your currency (default: euro cent).
|
* 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;
|
amountPerDistance: number;
|
||||||
|
|
||||||
public constructor(donation: DistanceDonation) {
|
public constructor(donation: DistanceDonation) {
|
||||||
if (!donation.donor.middlename) { this.donor = donation.donor.firstname + " " + donation.donor.lastname; }
|
this.donor = new ResponseSelfServiceDonor(donation.donor);
|
||||||
else { this.donor = donation.donor.firstname + " " + donation.donor.middlename + " " + donation.donor.lastname; }
|
|
||||||
|
|
||||||
this.amountPerDistance = donation.amountPerDistance;
|
this.amountPerDistance = donation.amountPerDistance;
|
||||||
this.amount = donation.amount;
|
this.amount = donation.amount;
|
||||||
}
|
}
|
||||||
|
|||||||
51
src/models/responses/ResponseSelfServiceDonor.ts
Normal file
51
src/models/responses/ResponseSelfServiceDonor.ts
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -38,10 +38,10 @@ export class ResponseSelfServiceRunner extends ResponseParticipant implements IR
|
|||||||
group: string;
|
group: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runner's associated donations.
|
* The runner's associated distance donations.
|
||||||
*/
|
*/
|
||||||
@IsString()
|
@IsString()
|
||||||
donations: ResponseSelfServiceDonation[]
|
distanceDonations: ResponseSelfServiceDonation[]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The runner's self-service jwt for auth.
|
* The runner's self-service jwt for auth.
|
||||||
@@ -60,7 +60,7 @@ export class ResponseSelfServiceRunner extends ResponseParticipant implements IR
|
|||||||
this.distance = runner.distance;
|
this.distance = runner.distance;
|
||||||
this.donationAmount = runner.distanceDonationAmount;
|
this.donationAmount = runner.distanceDonationAmount;
|
||||||
this.group = this.getTeamString(runner.group);
|
this.group = this.getTeamString(runner.group);
|
||||||
this.donations = this.getDonations(runner.distanceDonations);
|
this.distanceDonations = this.getDonations(runner.distanceDonations);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user