Merge "add more test scenarios for filter serviceInfo by service model id"
[vid.git] / vid-webpack-master / src / app / shared / server / serviceInfo / serviceInfo.service.ts
1 import {Injectable} from '@angular/core';
2 import {Observable} from 'rxjs';
3 import {ServiceInfoModel} from './serviceInfo.model';
4 import {HttpClient, HttpHeaders} from '@angular/common/http';
5 import { of } from 'rxjs';
6 import { map } from 'rxjs/operators';
7 import {Constants} from '../../utils/constants';
8 import {forkJoin} from "rxjs/observable/forkJoin";
9 import * as _ from 'lodash';
10 import {AuditStatus} from "./AuditStatus.model";
11
12 @Injectable()
13 export class ServiceInfoService {
14   constructor(private _http: HttpClient) {
15   }
16
17   getServicesJobInfo(filterByUser : boolean, showSpinner: boolean = true): Observable<ServiceInfoModel[]> {
18     let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH;
19     let headers = new HttpHeaders({'x-show-spinner': showSpinner.toString()});
20     return this._http.get<ServiceInfoModel[]>(pathQuery, { headers: headers }).map(res => res );
21   }
22
23   deleteJob(jobId: string): Observable<any> {
24     let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH + '/job/' + jobId;
25     return this._http.delete<any>(pathQuery).map(res => res);
26   }
27
28   hideJob(jobId: string): Observable<any> {
29     let pathQuery = Constants.Path.SERVICES_JOB_INFO_PATH + '/hide/' + jobId;
30     return this._http.post<any>(pathQuery, null).map(res => res);
31   }
32
33   getJobAuditStatus(jobData: ServiceInfoModel) : Observable<Object[]>{
34     let pathQueryBySource: string = Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + jobData.jobId + '?source=';
35     let pathQueryVID: string = pathQueryBySource + 'VID';
36     let pathQueryMSO: string;
37
38     // just call it
39     if(jobData.aLaCarte) {
40       let requestParams: string[] = [];
41       pathQueryMSO = Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + jobData.jobId + '/mso';
42       if (!_.isEmpty(jobData.requestId)) {
43         requestParams[requestParams.length] = 'requestId=' + jobData.requestId;
44       }
45       if (!_.isEmpty(jobData.serviceInstanceId)) {
46         requestParams[requestParams.length] = 'serviceInstanceId=' + jobData.serviceInstanceId;
47       }
48       if (requestParams.length > 0) {
49         pathQueryMSO += '?' + requestParams.join('&');
50       }
51     }
52     else {
53       pathQueryMSO = pathQueryBySource + 'MSO';
54     }
55
56
57     let vidObs = this._http.get(pathQueryVID);
58     let msoObs = this._http.get(pathQueryMSO);
59     return forkJoin([vidObs, msoObs]);
60   }
61
62   getInstanceAuditStatus(instanceId: string, type :string) : Observable<AuditStatus[]>{
63     let pathQuery: string =  Constants.Path.SERVICES_JOB_INFO_PATH + Constants.Path.SERVICES_JOB_AUDIT_PATH + '/' + type + '/' + instanceId + '/mso';
64     return this._http.get<any>(pathQuery).map(res => res);
65   }
66
67   getAuditStatusForRetry(trackById: string) : Observable<AuditStatus>{
68     let pathQuery: string = Constants.Path.AUDIT_STATUS_FOR_RETRY_PATH + '/' + trackById ;
69     return this._http.get<any>(pathQuery).map(res => res);
70   }
71 }