owner.service.ts 2.31 KB
Newer Older
1
import {Injectable} from '@angular/core';
2
import {HttpClient, HttpParams} from '@angular/common/http';
3 4 5
import {Globals} from '../global/globals';
import {Observable} from 'rxjs';
import {Owner} from '../dto/owner';
6
import { Horse } from '../dto/horse';
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

@Injectable({
  providedIn: 'root'
})
export class OwnerService {

  private messageBaseUri: string = this.globals.backendUri + '/owners';

  constructor(private httpClient: HttpClient, private globals: Globals) {
  }

  /**
   * Loads specific owner from the backend
   * @param id of owner to load
   */
  getOwnerById(id: number): Observable<Owner> {
    console.log('Load owner details for ' + id);
    return this.httpClient.get<Owner>(this.messageBaseUri + '/' + id);
  }

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
  /**
   * Loads all owners from the backend
   */
  getAllOwners(): Observable<Array<Owner>> {
    console.log('Load all owners');
    return this.httpClient.get<Array<Owner>>(this.messageBaseUri);
  }

  /**
   * Load all owners from the backend that correspond to a filter
   * @param filter to use
   */
  getFilteredOwners(filter: HttpParams): Observable<Array<Owner>> {
    console.log('Load all filtered owners');
    return this.httpClient.get<Array<Owner>>(this.messageBaseUri, { params: filter });
  }

44 45 46 47 48 49 50 51 52
  /**
   * Load all horses, owned by the specified owner, from the backend
   * @param id
   */
  getOwnerHorses(id: number): Observable<Array<Horse>> {
    console.log('Load all horses for owner ' + id);
    return this.httpClient.get<Array<Horse>>(this.messageBaseUri + '/' + id + '/horses');
  }

53 54 55 56 57 58 59 60
  /**
   * Adds a specific owner to the backend and loads it if successful
   * @param owner
   */
  addOwner(owner: Owner): Observable<Owner> {
    console.log('Add new owner ' + JSON.stringify(owner));
    return this.httpClient.post<Owner>(this.messageBaseUri, owner);
  }
61 62 63 64 65 66 67 68 69

  /**
   * Update a specific owner with the supplied values
   * @param owner
   */
  updateOwner(owner: Owner): Observable<Owner> {
    console.log('Update owner with id ' + owner.id + ': '+ JSON.stringify(owner));
    return this.httpClient.put<Owner>(this.messageBaseUri + '/' + owner.id, owner);
  }
70 71 72 73 74 75 76 77 78

  /**
   * Delete an owner from the backend
   * @param id
   */
  deleteOwner(id: number): Observable<Object> {
    console.log('Delete owner with id ' + id);
    return this.httpClient.delete(this.messageBaseUri + '/' + id);
  }
79
}