Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.69 KB | None | 0 0
  1. import { HttpClient, HttpParams } from '@angular/common/http';
  2. import { Injectable } from '@angular/core';
  3. import { Observable, Subject } from 'rxjs';
  4. import { tap } from 'rxjs/operators';
  5.  
  6. import { ListResponse } from '../shared/list-response/list-response';
  7. import { objectToHttpParams } from '../shared/utils/objectToHttpParams';
  8. import { PORTUGAL_DISTRICTS } from '../shared/utils/portugal-districts';
  9. import { VenuesQueryParams } from './api/venues-query-params';
  10. import { VENUE_TYPES } from './utils/venue-types';
  11. import { Venue } from './venue';
  12.  
  13. @Injectable({
  14. providedIn: 'root'
  15. })
  16. export class VenuesService {
  17. private venuesUpdated = new Subject<boolean>();
  18. venuesUpdated$ = this.venuesUpdated.asObservable();
  19.  
  20. constructor(private httpClient: HttpClient) {}
  21.  
  22. searchVenues(searchParams: VenuesQueryParams, authorized?: boolean): Observable<ListResponse> {
  23. const params = this.parseSearchParams(searchParams);
  24.  
  25. const url = authorized ? 'venues' : 'pub/venues';
  26.  
  27. return this.httpClient.get<ListResponse>(url, {
  28. params
  29. });
  30. }
  31.  
  32. approvedVenues(searchParams?: VenuesQueryParams): Observable<ListResponse> {
  33. return this.searchVenues({ ...searchParams, approved: true }, true);
  34. }
  35.  
  36. unapprovedVenues(searchParams?: VenuesQueryParams): Observable<ListResponse> {
  37. return this.searchVenues({ ...searchParams, approved: false }, true);
  38. }
  39.  
  40. getVenue(id: string, authorized?: boolean): Observable<Venue> {
  41. const url = authorized ? 'venues/' : 'pub/venues/';
  42.  
  43. return this.httpClient.get<Venue>(url + id);
  44. }
  45.  
  46. approveVenue(id: string): Observable<void> {
  47. return this.httpClient.put<void>('venues/' + id + '/approve', null).pipe(tap(() => this.venuesUpdated.next(true)));
  48. }
  49.  
  50. rejectVenue(id: string, rejectedDescription: string): Observable<void> {
  51. return this.httpClient
  52. .put<void>('venues/' + id + '/reject', { rejectedDescription })
  53. .pipe(tap(() => this.venuesUpdated.next(true)));
  54. }
  55.  
  56. addVenue(venue: Venue): Observable<Venue> {
  57. return this.httpClient.post<Venue>('venues', venue).pipe(tap(() => this.venuesUpdated.next(true)));
  58. }
  59.  
  60. deleteVenue(venueId: string): Observable<void> {
  61. return this.httpClient.delete<void>('venues/' + venueId).pipe(tap(() => this.venuesUpdated.next(true)));
  62. }
  63.  
  64. editVenue(venueId: string, venue: Venue): Observable<void> {
  65. return this.httpClient.put<void>('venues/' + venueId, venue).pipe(tap(() => this.venuesUpdated.next(true)));
  66. }
  67.  
  68. getVenueImageUploadUrl(venueId: string): Observable<string> {
  69. return this.httpClient.get<string>('venues/' + venueId + '/pictures');
  70. }
  71.  
  72. getVenuesCount(): Observable<number> {
  73. return this.httpClient.get<number>('pub/venues/count');
  74. }
  75.  
  76. getVenuesCountByDistrict(district: PORTUGAL_DISTRICTS): Observable<number> {
  77. return this.httpClient.get<number>('pub/venues/count/' + district);
  78. }
  79.  
  80. uploadImage(file: File, url: string): Observable<void> {
  81. return this.httpClient.put<void>(url, file, {
  82. reportProgress: true,
  83. headers: { 'content-type': file.type }
  84. });
  85. }
  86.  
  87. private parseSearchParams(searchParams: VenuesQueryParams): HttpParams {
  88. const params = { ...searchParams };
  89.  
  90. // clear nonexistent params in the backend
  91. if (params.type === VENUE_TYPES.ALL) {
  92. delete params.type;
  93. }
  94.  
  95. if (params.district === PORTUGAL_DISTRICTS.ALL) {
  96. delete params.district;
  97. }
  98.  
  99. if (params.query === '') {
  100. delete params.query;
  101. }
  102.  
  103. if (params.capacity) {
  104. params.minCapacity = params.capacity[0];
  105. params.maxCapacity = params.capacity[1];
  106. delete params.capacity;
  107. }
  108.  
  109. return objectToHttpParams(params);
  110. }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement