ref #193
This commit is contained in:
		@@ -33,7 +33,7 @@ export class CreateDistanceDonation extends CreateDonation {
 | 
				
			|||||||
        let newDonation = new DistanceDonation;
 | 
					        let newDonation = new DistanceDonation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        newDonation.amountPerDistance = this.amountPerDistance;
 | 
					        newDonation.amountPerDistance = this.amountPerDistance;
 | 
				
			||||||
        newDonation.payedAmount = this.payedAmount;
 | 
					        newDonation.paidAmount = this.paidAmount;
 | 
				
			||||||
        newDonation.donor = await this.getDonor();
 | 
					        newDonation.donor = await this.getDonor();
 | 
				
			||||||
        newDonation.runner = await this.getRunner();
 | 
					        newDonation.runner = await this.getRunner();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,11 +17,11 @@ export abstract class CreateDonation {
 | 
				
			|||||||
    donor: number;
 | 
					    donor: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The donation's payed amount in the smalles unit of your currency (default: euro cent).
 | 
					     * The donation's paid amount in the smalles unit of your currency (default: euro cent).
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @IsInt()
 | 
					    @IsInt()
 | 
				
			||||||
    @IsOptional()
 | 
					    @IsOptional()
 | 
				
			||||||
    payedAmount?: number;
 | 
					    paidAmount?: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new Donation entity from this.
 | 
					     * Creates a new Donation entity from this.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,7 +21,7 @@ export class CreateFixedDonation extends CreateDonation {
 | 
				
			|||||||
        let newDonation = new FixedDonation;
 | 
					        let newDonation = new FixedDonation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        newDonation.amount = this.amount;
 | 
					        newDonation.amount = this.amount;
 | 
				
			||||||
        newDonation.payedAmount = this.payedAmount;
 | 
					        newDonation.paidAmount = this.paidAmount;
 | 
				
			||||||
        newDonation.donor = await this.getDonor();
 | 
					        newDonation.donor = await this.getDonor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return newDonation;
 | 
					        return newDonation;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ export class UpdateDistanceDonation extends UpdateDonation {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public async update(donation: DistanceDonation): Promise<DistanceDonation> {
 | 
					    public async update(donation: DistanceDonation): Promise<DistanceDonation> {
 | 
				
			||||||
        donation.amountPerDistance = this.amountPerDistance;
 | 
					        donation.amountPerDistance = this.amountPerDistance;
 | 
				
			||||||
        donation.payedAmount = this.payedAmount;
 | 
					        donation.paidAmount = this.paidAmount;
 | 
				
			||||||
        donation.donor = await this.getDonor();
 | 
					        donation.donor = await this.getDonor();
 | 
				
			||||||
        donation.runner = await this.getRunner();
 | 
					        donation.runner = await this.getRunner();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,11 +24,11 @@ export abstract class UpdateDonation {
 | 
				
			|||||||
    donor: number;
 | 
					    donor: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The donation's payed amount in the smalles unit of your currency (default: euro cent).
 | 
					     * The donation's paid amount in the smalles unit of your currency (default: euro cent).
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @IsInt()
 | 
					    @IsInt()
 | 
				
			||||||
    @IsOptional()
 | 
					    @IsOptional()
 | 
				
			||||||
    payedAmount?: number;
 | 
					    paidAmount?: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a new Donation entity from this.
 | 
					     * Creates a new Donation entity from this.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ export class UpdateFixedDonation extends UpdateDonation {
 | 
				
			|||||||
     */
 | 
					     */
 | 
				
			||||||
    public async update(donation: FixedDonation): Promise<FixedDonation> {
 | 
					    public async update(donation: FixedDonation): Promise<FixedDonation> {
 | 
				
			||||||
        donation.amount = this.amount;
 | 
					        donation.amount = this.amount;
 | 
				
			||||||
        donation.payedAmount = this.payedAmount;
 | 
					        donation.paidAmount = this.paidAmount;
 | 
				
			||||||
        donation.donor = await this.getDonor();
 | 
					        donation.donor = await this.getDonor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return donation;
 | 
					        return donation;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,12 +35,12 @@ export abstract class Donation {
 | 
				
			|||||||
  public abstract get amount(): number;
 | 
					  public abstract get amount(): number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * The donation's payed amount in cents (or whatever your currency's smallest unit is.).
 | 
					   * The donation's paid amount in cents (or whatever your currency's smallest unit is.).
 | 
				
			||||||
   * Used to mark donations as payed.
 | 
					   * Used to mark donations as paid.
 | 
				
			||||||
   */
 | 
					   */
 | 
				
			||||||
  @Column({ nullable: true })
 | 
					  @Column({ nullable: true })
 | 
				
			||||||
  @IsInt()
 | 
					  @IsInt()
 | 
				
			||||||
  payedAmount: number;
 | 
					  paidAmount: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Turns this entity into it's response class.
 | 
					   * Turns this entity into it's response class.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,12 +34,12 @@ export class Donor extends Participant {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
   * Returns the total payed donations of a donor based on his linked donations.
 | 
					   * Returns the total paid donations of a donor based on his linked donations.
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  @IsInt()
 | 
					  @IsInt()
 | 
				
			||||||
  public get payedDonationAmount(): number {
 | 
					  public get paidDonationAmount(): number {
 | 
				
			||||||
    if (!this.donations) { return 0; }
 | 
					    if (!this.donations) { return 0; }
 | 
				
			||||||
    return this.donations.reduce((sum, current) => sum + current.payedAmount, 0);
 | 
					    return this.donations.reduce((sum, current) => sum + current.paidAmount, 0);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /**
 | 
					  /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,5 +3,5 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
export enum DonationStatus {
 | 
					export enum DonationStatus {
 | 
				
			||||||
    OPEN = 'OPEN',
 | 
					    OPEN = 'OPEN',
 | 
				
			||||||
    PAYED = 'PAYED'
 | 
					    PAID = 'PAID'
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -42,10 +42,10 @@ export class ResponseDonation implements IResponse {
 | 
				
			|||||||
    amount: number;
 | 
					    amount: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * The donation's payed amount in the smalles unit of your currency (default: euro cent).
 | 
					     * The donation's paid amount in the smalles unit of your currency (default: euro cent).
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @IsInt()
 | 
					    @IsInt()
 | 
				
			||||||
    payedAmount: number;
 | 
					    paidAmount: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a ResponseDonation object from a scan.
 | 
					     * Creates a ResponseDonation object from a scan.
 | 
				
			||||||
@@ -55,12 +55,12 @@ export class ResponseDonation implements IResponse {
 | 
				
			|||||||
        this.id = donation.id;
 | 
					        this.id = donation.id;
 | 
				
			||||||
        this.donor = donation.donor.toResponse();
 | 
					        this.donor = donation.donor.toResponse();
 | 
				
			||||||
        this.amount = donation.amount;
 | 
					        this.amount = donation.amount;
 | 
				
			||||||
        this.payedAmount = donation.payedAmount || 0;
 | 
					        this.paidAmount = donation.paidAmount || 0;
 | 
				
			||||||
        if (this.payedAmount < this.amount) {
 | 
					        if (this.paidAmount < this.amount) {
 | 
				
			||||||
            this.status = DonationStatus.OPEN;
 | 
					            this.status = DonationStatus.OPEN;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        else {
 | 
					        else {
 | 
				
			||||||
            this.status = DonationStatus.PAYED;
 | 
					            this.status = DonationStatus.PAID;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,10 +29,10 @@ export class ResponseDonor extends ResponseParticipant implements IResponse {
 | 
				
			|||||||
    donationAmount: number;
 | 
					    donationAmount: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
    * Returns the total payed donations of a donor based on his linked donations.
 | 
					    * Returns the total paid donations of a donor based on his linked donations.
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
    @IsInt()
 | 
					    @IsInt()
 | 
				
			||||||
    payedDonationAmount: number;
 | 
					    paidDonationAmount: number;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Creates a ResponseRunner object from a runner.
 | 
					     * Creates a ResponseRunner object from a runner.
 | 
				
			||||||
@@ -42,5 +42,6 @@ export class ResponseDonor extends ResponseParticipant implements IResponse {
 | 
				
			|||||||
        super(donor);
 | 
					        super(donor);
 | 
				
			||||||
        this.receiptNeeded = donor.receiptNeeded;
 | 
					        this.receiptNeeded = donor.receiptNeeded;
 | 
				
			||||||
        this.donationAmount = donor.donationAmount;
 | 
					        this.donationAmount = donor.donationAmount;
 | 
				
			||||||
 | 
					        this.paidDonationAmount = donor.paidDonationAmount;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -181,7 +181,7 @@ describe('POST /api/donations/fixed successfully', () => {
 | 
				
			|||||||
		expect(res.data).toEqual({
 | 
							expect(res.data).toEqual({
 | 
				
			||||||
			"donor": added_donor,
 | 
								"donor": added_donor,
 | 
				
			||||||
			"amount": 1000,
 | 
								"amount": 1000,
 | 
				
			||||||
			"payedAmount": 0,
 | 
								"paidAmount": 0,
 | 
				
			||||||
			"status": "OPEN",
 | 
								"status": "OPEN",
 | 
				
			||||||
			"responseType": "DONATION"
 | 
								"responseType": "DONATION"
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
@@ -190,7 +190,7 @@ describe('POST /api/donations/fixed successfully', () => {
 | 
				
			|||||||
		const res = await axios.post(base + '/api/donations/fixed', {
 | 
							const res = await axios.post(base + '/api/donations/fixed', {
 | 
				
			||||||
			"donor": added_donor.id,
 | 
								"donor": added_donor.id,
 | 
				
			||||||
			"amount": 1000,
 | 
								"amount": 1000,
 | 
				
			||||||
			"payedAmount": 1000
 | 
								"paidAmount": 1000
 | 
				
			||||||
		}, axios_config);
 | 
							}, axios_config);
 | 
				
			||||||
		delete res.data.id;
 | 
							delete res.data.id;
 | 
				
			||||||
		expect(res.status).toEqual(200);
 | 
							expect(res.status).toEqual(200);
 | 
				
			||||||
@@ -198,8 +198,8 @@ describe('POST /api/donations/fixed successfully', () => {
 | 
				
			|||||||
		expect(res.data).toEqual({
 | 
							expect(res.data).toEqual({
 | 
				
			||||||
			"donor": added_donor,
 | 
								"donor": added_donor,
 | 
				
			||||||
			"amount": 1000,
 | 
								"amount": 1000,
 | 
				
			||||||
			"payedAmount": 1000,
 | 
								"paidAmount": 1000,
 | 
				
			||||||
			"status": "PAYED",
 | 
								"status": "PAID",
 | 
				
			||||||
			"responseType": "DONATION"
 | 
								"responseType": "DONATION"
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
@@ -252,8 +252,8 @@ describe('POST /api/donations/distance successfully', () => {
 | 
				
			|||||||
			"amountPerDistance": 100,
 | 
								"amountPerDistance": 100,
 | 
				
			||||||
			"runner": added_runner,
 | 
								"runner": added_runner,
 | 
				
			||||||
			"amount": 0,
 | 
								"amount": 0,
 | 
				
			||||||
			"payedAmount": 0,
 | 
								"paidAmount": 0,
 | 
				
			||||||
			"status": "PAYED",
 | 
								"status": "PAID",
 | 
				
			||||||
			"responseType": "DISTANCEDONATION"
 | 
								"responseType": "DISTANCEDONATION"
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
@@ -262,7 +262,7 @@ describe('POST /api/donations/distance successfully', () => {
 | 
				
			|||||||
			"runner": added_runner.id,
 | 
								"runner": added_runner.id,
 | 
				
			||||||
			"amountPerDistance": 100,
 | 
								"amountPerDistance": 100,
 | 
				
			||||||
			"donor": added_donor.id,
 | 
								"donor": added_donor.id,
 | 
				
			||||||
			"payedAmount": 1000
 | 
								"paidAmount": 1000
 | 
				
			||||||
		}, axios_config);
 | 
							}, axios_config);
 | 
				
			||||||
		delete res.data.id;
 | 
							delete res.data.id;
 | 
				
			||||||
		expect(res.status).toEqual(200);
 | 
							expect(res.status).toEqual(200);
 | 
				
			||||||
@@ -272,8 +272,8 @@ describe('POST /api/donations/distance successfully', () => {
 | 
				
			|||||||
			"amountPerDistance": 100,
 | 
								"amountPerDistance": 100,
 | 
				
			||||||
			"runner": added_runner,
 | 
								"runner": added_runner,
 | 
				
			||||||
			"amount": 0,
 | 
								"amount": 0,
 | 
				
			||||||
			"payedAmount": 1000,
 | 
								"paidAmount": 1000,
 | 
				
			||||||
			"status": "PAYED",
 | 
								"status": "PAID",
 | 
				
			||||||
			"responseType": "DISTANCEDONATION"
 | 
								"responseType": "DISTANCEDONATION"
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -213,16 +213,16 @@ describe('adding + updating fixed donation valid', () => {
 | 
				
			|||||||
		expect(res.headers['content-type']).toContain("application/json");
 | 
							expect(res.headers['content-type']).toContain("application/json");
 | 
				
			||||||
		expect(res.data.amount).toEqual(42);
 | 
							expect(res.data.amount).toEqual(42);
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
	it('updating payedAmount should return 200', async () => {
 | 
						it('updating paidAmount should return 200', async () => {
 | 
				
			||||||
		const res = await axios.put(base + '/api/donations/fixed/' + added_donation.id, {
 | 
							const res = await axios.put(base + '/api/donations/fixed/' + added_donation.id, {
 | 
				
			||||||
			"id": added_donation.id,
 | 
								"id": added_donation.id,
 | 
				
			||||||
			"donor": added_donor.id,
 | 
								"donor": added_donor.id,
 | 
				
			||||||
			"amount": 42,
 | 
								"amount": 42,
 | 
				
			||||||
			"payedAmount": 10
 | 
								"paidAmount": 10
 | 
				
			||||||
		}, axios_config);
 | 
							}, axios_config);
 | 
				
			||||||
		expect(res.status).toEqual(200);
 | 
							expect(res.status).toEqual(200);
 | 
				
			||||||
		expect(res.headers['content-type']).toContain("application/json");
 | 
							expect(res.headers['content-type']).toContain("application/json");
 | 
				
			||||||
		expect(res.data.payedAmount).toEqual(10);
 | 
							expect(res.data.paidAmount).toEqual(10);
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
	it('updating donor should return 200', async () => {
 | 
						it('updating donor should return 200', async () => {
 | 
				
			||||||
		const res = await axios.put(base + '/api/donations/fixed/' + added_donation.id, {
 | 
							const res = await axios.put(base + '/api/donations/fixed/' + added_donation.id, {
 | 
				
			||||||
@@ -328,18 +328,18 @@ describe('adding + updating distance donation valid', () => {
 | 
				
			|||||||
		expect(res.headers['content-type']).toContain("application/json");
 | 
							expect(res.headers['content-type']).toContain("application/json");
 | 
				
			||||||
		expect(res.data.amountPerDistance).toEqual(69);
 | 
							expect(res.data.amountPerDistance).toEqual(69);
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
	it('updating payedAmount should return 200', async () => {
 | 
						it('updating paidAmount should return 200', async () => {
 | 
				
			||||||
		const res = await axios.put(base + '/api/donations/distance/' + added_donation.id, {
 | 
							const res = await axios.put(base + '/api/donations/distance/' + added_donation.id, {
 | 
				
			||||||
			"id": added_donation.id,
 | 
								"id": added_donation.id,
 | 
				
			||||||
			"runner": added_runner.id,
 | 
								"runner": added_runner.id,
 | 
				
			||||||
			"amountPerDistance": 69,
 | 
								"amountPerDistance": 69,
 | 
				
			||||||
			"donor": added_donor.id,
 | 
								"donor": added_donor.id,
 | 
				
			||||||
			"payedAmount": 10
 | 
								"paidAmount": 10
 | 
				
			||||||
		}, axios_config);
 | 
							}, axios_config);
 | 
				
			||||||
		delete res.data.donor.donationAmount;
 | 
							delete res.data.donor.donationAmount;
 | 
				
			||||||
		expect(res.status).toEqual(200);
 | 
							expect(res.status).toEqual(200);
 | 
				
			||||||
		expect(res.headers['content-type']).toContain("application/json");
 | 
							expect(res.headers['content-type']).toContain("application/json");
 | 
				
			||||||
		expect(res.data.payedAmount).toEqual(10);
 | 
							expect(res.data.paidAmount).toEqual(10);
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
	it('updating runner should return 200', async () => {
 | 
						it('updating runner should return 200', async () => {
 | 
				
			||||||
		const res = await axios.put(base + '/api/donations/distance/' + added_donation.id, {
 | 
							const res = await axios.put(base + '/api/donations/distance/' + added_donation.id, {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user