| @@ -2,9 +2,8 @@ import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post | ||||
| import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; | ||||
| import { getConnectionManager, Repository } from 'typeorm'; | ||||
| import { DonorIdsNotMatchingError, DonorNotFoundError } from '../errors/DonorErrors'; | ||||
| import { RunnerIdsNotMatchingError } from '../errors/RunnerErrors'; | ||||
| import { CreateDonor } from '../models/actions/CreateDonor'; | ||||
| import { UpdateRunner } from '../models/actions/UpdateRunner'; | ||||
| import { UpdateDonor } from '../models/actions/UpdateDonor'; | ||||
| import { Donor } from '../models/entities/Donor'; | ||||
| import { ResponseDonor } from '../models/responses/ResponseDonor'; | ||||
| import { ResponseEmpty } from '../models/responses/ResponseEmpty'; | ||||
| @@ -68,19 +67,19 @@ export class DonorController { | ||||
| 	@ResponseSchema(DonorNotFoundError, { statusCode: 404 }) | ||||
| 	@ResponseSchema(DonorIdsNotMatchingError, { statusCode: 406 }) | ||||
| 	@OpenAPI({ description: "Update the runner whose id you provided. <br> Please remember that ids can't be changed." }) | ||||
| 	async put(@Param('id') id: number, @Body({ validate: true }) runner: UpdateRunner) { | ||||
| 		let oldRunner = await this.donorRepository.findOne({ id: id }, { relations: ['group'] }); | ||||
| 	async put(@Param('id') id: number, @Body({ validate: true }) donor: UpdateDonor) { | ||||
| 		let oldDonor = await this.donorRepository.findOne({ id: id }); | ||||
|  | ||||
| 		if (!oldRunner) { | ||||
| 		if (!oldDonor) { | ||||
| 			throw new DonorNotFoundError(); | ||||
| 		} | ||||
|  | ||||
| 		if (oldRunner.id != runner.id) { | ||||
| 			throw new RunnerIdsNotMatchingError(); | ||||
| 		if (oldDonor.id != donor.id) { | ||||
| 			throw new DonorIdsNotMatchingError(); | ||||
| 		} | ||||
|  | ||||
| 		await this.donorRepository.save(await runner.updateRunner(oldRunner)); | ||||
| 		return new ResponseDonor(await this.donorRepository.findOne({ id: id }, { relations: ['scans', 'group'] })); | ||||
| 		await this.donorRepository.save(await donor.updateDonor(oldDonor)); | ||||
| 		return new ResponseDonor(await this.donorRepository.findOne({ id: id })); | ||||
| 	} | ||||
|  | ||||
| 	@Delete('/:id') | ||||
|   | ||||
| @@ -12,7 +12,7 @@ export class CreateDonor extends CreateParticipant { | ||||
|      */ | ||||
|     @IsBoolean() | ||||
|     @IsOptional() | ||||
|     receiptNeeded: boolean = false; | ||||
|     receiptNeeded?: boolean = false; | ||||
|  | ||||
|     /** | ||||
|      * Creates a new Donor entity from this. | ||||
|   | ||||
							
								
								
									
										39
									
								
								src/models/actions/UpdateDonor.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								src/models/actions/UpdateDonor.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| import { IsBoolean, IsInt, IsOptional } from 'class-validator'; | ||||
| import { Donor } from '../entities/Donor'; | ||||
| import { CreateParticipant } from './CreateParticipant'; | ||||
|  | ||||
| /** | ||||
|  * This class is used to update a Donor entity (via put request). | ||||
|  */ | ||||
| export class UpdateDonor extends CreateParticipant { | ||||
|  | ||||
|     /** | ||||
|      * The updated donor's id. | ||||
|      * This shouldn't have changed but it is here in case anyone ever wants to enable id changes (whyever they would want to). | ||||
|      */ | ||||
|     @IsInt() | ||||
|     id: number; | ||||
|  | ||||
|     /** | ||||
|      * Does the updated donor need a receipt? | ||||
|      */ | ||||
|     @IsBoolean() | ||||
|     @IsOptional() | ||||
|     receiptNeeded?: boolean; | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * Updates a provided Donor entity based on this. | ||||
|      */ | ||||
|     public async updateDonor(donor: Donor): Promise<Donor> { | ||||
|         donor.firstname = this.firstname; | ||||
|         donor.middlename = this.middlename; | ||||
|         donor.lastname = this.lastname; | ||||
|         donor.phone = this.phone; | ||||
|         donor.email = this.email; | ||||
|         donor.receiptNeeded = this.receiptNeeded; | ||||
|         donor.address = await this.getAddress(); | ||||
|  | ||||
|         return donor; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user