From 320e81719be26db2d634c928df6e47c9f2e44afb Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Wed, 21 Aug 2024 17:59:55 +0200 Subject: [PATCH] feat: HTTP-Anforderungsdienste mit HttpClient im Frontend implementieren --- .../envelope-creation.component.ts | 8 +++- .../app/services/envelope-receiver.service.ts | 16 ++++---- .../src/app/services/receiver.service.spec.ts | 16 ++++++++ .../src/app/services/receiver.service.ts | 41 +++++++++++++++++++ 4 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.spec.ts create mode 100644 EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.ts diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope-creation/envelope-creation.component.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope-creation/envelope-creation.component.ts index bfc4ae0e..288b0552 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope-creation/envelope-creation.component.ts +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/pages/envelope-creation/envelope-creation.component.ts @@ -5,6 +5,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatStepperModule } from '@angular/material/stepper'; import { MatButtonModule } from '@angular/material/button'; import { MatSelectModule } from '@angular/material/select'; +import { ReceiverService } from '../../services/receiver.service'; @Component({ selector: 'app-envelope-creation', @@ -23,6 +24,9 @@ import { MatSelectModule } from '@angular/material/select'; }) export class EnvelopeCreationComponent { + constructor(private receiverService: ReceiverService) { + } + ngOnInit() { this.selectedType = this.types[0].value; } @@ -39,8 +43,8 @@ export class EnvelopeCreationComponent { selectedType: string = "Mietvertrag" types: any[] = [ - {value: 0, viewValue: 'Mietvertrag'}, - {value: 1, viewValue: 'Kaufvertrag'} + { value: 0, viewValue: 'Mietvertrag' }, + { value: 1, viewValue: 'Kaufvertrag' } ]; typeControl = new FormControl('Mietvertrag', [Validators.required]); } diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts index e55e879d..3a1a3766 100644 --- a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/envelope-receiver.service.ts @@ -7,7 +7,7 @@ import { API_URL } from '../tokens/index'; providedIn: 'root' }) export class EnvelopeReceiverService { - private url: string; + protected url: string; constructor(private http: HttpClient) { const api_url = inject(API_URL); @@ -16,12 +16,14 @@ export class EnvelopeReceiverService { getEnvelopeReceiver(options?: { min_status?: number; max_status?: number; ignore_status?: number[] }): Observable { let params = new HttpParams(); - if (options?.min_status !== undefined) - params = params.set('min_status', options?.min_status.toString()); - if (options?.max_status !== undefined) - params = params.set('max_status', options?.max_status.toString()); - if (options?.ignore_status !== undefined) - params = params.set('ignore_status', options?.ignore_status.join(',')); + if (options) { + if (options.min_status) + params = params.set('min_status', options.min_status.toString()); + if (options.max_status) + params = params.set('max_status', options.max_status.toString()); + if (options.ignore_status) + params = params.set('ignore_status', options.ignore_status.join(',')); + } return this.http.get(this.url, { params }); } diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.spec.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.spec.ts new file mode 100644 index 00000000..22c013af --- /dev/null +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ReceiverService } from './receiver.service'; + +describe('ReceiverService', () => { + let service: ReceiverService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ReceiverService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.ts b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.ts new file mode 100644 index 00000000..55e0e825 --- /dev/null +++ b/EnvelopeGenerator.GeneratorAPI/ClientApp/envelope-generator-ui/src/app/services/receiver.service.ts @@ -0,0 +1,41 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable, inject } from '@angular/core'; +import { API_URL } from '../tokens'; +import { Observable, firstValueFrom } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class ReceiverService { + protected url: string; + + constructor(private http: HttpClient) { + const api_url = inject(API_URL); + this.url = `${api_url}/receiver`; + } + + public getReceiver(options?: { emailAdress?: string; signature?: string; }): Observable { + let params = new HttpParams(); + + if (options) { + if (options.emailAdress) + params = params.set('emailAdress', options?.emailAdress.toString()); + if (options?.signature) + params = params.set('signature', options?.signature.toString()); + } + + return this.http.get(this.url, { params }); + } + + public async getReceiverAsync(options?: { emailAdress?: string; signature?: string; }): Promise { + return await firstValueFrom(this.getReceiver(options)); + } + + public createReceiver(emailAddress: string): Observable { + return this.http.post(this.url, { emailAddress: emailAddress }); + } + + public async createReceiverAsync(emailAddress: string): Promise { + return await firstValueFrom(this.createReceiver(emailAddress)); + } +} \ No newline at end of file