import { Injectable } from '@angular/core'; import { Observable } from "rxjs"; import { HttpClient, HttpHeaders, HttpRequest } from "@angular/common/http"; import { environment } from "../../environments/environment"; import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from "@angular/router"; import { DeviceGroup } from "./shared/device-group"; import { MaintenanceEntity } from "./shared/maintenance-entity"; @Injectable() export class MaintenanceManagerService { private apiEndpoint = environment.apiUrl + '/api/maintenance'; private apiEndpointUpcoming = environment.apiUrl + '/api/maintenance/upcoming'; private cachedMaintenances: Array = []; constructor(private httpClient: HttpClient) { } /** * Resolver for the route * * @param {ActivatedRouteSnapshot} route * @param {RouterStateSnapshot} state * @returns {Promise>} */ resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise> { let filter = route.data.filter ? route.data.filter : 'upcoming'; let url = filter == 'upcoming' ? this.apiEndpointUpcoming : this.apiEndpoint; return this.list(url).toPromise(); } /** * List all faults * * @returns {Observable>} */ public list(url: string): Observable> { return this.httpClient.get>(url); } public get(hash: string): Observable { return this.httpClient.get(`${this.apiEndpoint}/${hash}`); } public update(maintenance: MaintenanceEntity) { return this.httpClient.put(`${this.apiEndpoint}/${maintenance.hash}`, maintenance); } get maintenances(): Array { return this.cachedMaintenances; } set maintenances(maintenances: Array) { this.cachedMaintenances = maintenances; } public setWip(id: string, page: string) { if(confirm("Biztos benne?")) { let url = page == 'upcoming' ? this.apiEndpointUpcoming : this.apiEndpoint; this.httpClient.post(`${this.apiEndpoint}/${id}/wip`,{}).subscribe(()=>{ this.list(url).subscribe(result => this.cachedMaintenances = result); }); } } public setFin(id: string, page: string) { if(confirm("Biztos benne?")) { let url = page == 'upcoming' ? this.apiEndpointUpcoming : this.apiEndpoint; this.httpClient.post(`${this.apiEndpoint}/${id}/fin`, {}).subscribe(() => { this.list(url).subscribe(result => this.cachedMaintenances = result); }); } } }