/
farms-and-seasons.resolver.ts
35 lines (28 loc) · 1.27 KB
/
farms-and-seasons.resolver.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { ActivatedRouteSnapshot, Resolve, Router } from '@angular/router';
import { EMPTY, Observable, of } from 'rxjs';
import { environment } from '../../../environments/environment';
import { FarmsAndSeasonsDataService } from './farms-and-seasons-data.service';
import { Injectable } from '@angular/core';
import { mergeMap, take } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class FarmsAndSeasonsResolver implements Resolve<any> {
constructor(private router: Router, private farmsAndSeasonsService: FarmsAndSeasonsDataService) {
}
public resolve(route: ActivatedRouteSnapshot): Observable<any> {
const farmId = route.paramMap.get('farmId') ? +route.paramMap.get('farmId') : null;
const seasonId = route.paramMap.get('seasonId') ? +route.paramMap.get('seasonId') : null;
return this.farmsAndSeasonsService.getFarmsAndSeasons(farmId, seasonId)
.pipe(
take(1),
mergeMap(farmsAndSeasons => {
if (farmsAndSeasons == null) {
this.router.navigate([ environment.hasFarm ? 'error' : 'empty' ]);
return EMPTY;
}
return of(farmsAndSeasons);
})
);
}
}