import { Injectable } from '@angular/core'; import { Http, RequestOptions, Response } from '@angular/http'; import { Observable, throwError } from 'rxjs'; import * as global from '../core/Common'; import 'rxjs/add/operator/do'; import 'rxjs/add/operator/catch'; import 'rxjs/add/operator/map'; import 'rxjs/add/observable/throw'; import { IJobTemplate } from '../core/IJobTemplate'; import { IContactDetails } from '../core/IContactDetails'; import { ICompanyDetails } from '../core/ICompanyDetails'; import { IStaffDetails } from '../core/IStaffDetails'; import { IAccessRights } from '../core/IAccessRights'; import { JobPlanDashboardGrid } from '../core/IJobPlanDashboardGrid'; import { IEditJobPlan } from '../core/IEditJobPlan'; @Injectable({ providedIn: 'root' }) export class JobplanServicesService { private GetJobTemplates = global.serverBase + 'JobPlan/GetJobTemplate'; private InsertNewJobPlan = global.serverBase + 'JobPlan/SaveJobPlan'; private GetContactsByClientId = global.serverBase + 'Dashboard/GetContactListByClientId'; private UpdateJobPlan = global.serverBase + 'JobPlan/UpdateJobPlan'; private GetJobPlanById = global.serverBase + 'JobPlan/GetJobPlanhById'; private GetAllCompanyDetailsByIDUrl = global.serverBase + 'JobPlan/GetAllCompanyDetailsByID'; private GetAccessRights = global.serverBase + 'JobPlan/GetStaffAccessRights'; private AddNewStaff = global.serverBase + 'JobPlan/SaveStaffDetails'; private SaveJobPlanFromActivity = global.serverBase + 'Activity/SaveJobPlanDetails'; private GetLocationsForAddJobplan = global.serverBase + 'Activity/GetAllLocationsByClientId'; private GetMessages = global.serverBase + 'Activity/GetAllMessage'; private GetEditJobPlanUrl = global.serverBase + 'JobPlan/GetEditJobPlan'; constructor(private http: Http) { } getAllCompanyDetailsByID(companyId: number) { const urlSearchParams = new URLSearchParams(); urlSearchParams.append('companyId', companyId.toString()); const body = urlSearchParams.toString(); return this.http.get(this.GetAllCompanyDetailsByIDUrl, { params: body }) .map((response: Response) => response.json() as ICompanyDetails[]) .catch(this.handleError); } getJobTemplate(companyId: number) { const urlSearchParams = new URLSearchParams(); urlSearchParams.append('companyId', companyId.toString()); const body = urlSearchParams.toString(); return this.http.get(this.GetJobTemplates, { params: body }) .map((response: Response) => response.json() as IJobTemplate[]) .catch(this.handleError); } insertNewJobPlan(jobPlan: JobPlanDashboardGrid) { return this.http.post(this.InsertNewJobPlan, jobPlan) .map((response: Response) => response.json() as boolean) .catch(this.handleError); } getContactsByClientId(clientId: number) { const urlSearchParams = new URLSearchParams(); urlSearchParams.append('clientId', clientId.toString()); const body = urlSearchParams.toString(); return this.http.get(this.GetContactsByClientId, { params: body }) .map((response: Response) => response.json() as IContactDetails[]) .catch(this.handleError); } updateJobPlan(jobplan) { return this.http.put(this.UpdateJobPlan, jobplan[0]) .map((response: Response) => response.json() as IContactDetails[]) .catch(this.handleError); } getJobPlanById(Id: number) { console.log('Id test', Id); const urlSearchParams = new URLSearchParams(); urlSearchParams.append('Id', Id.toString()); const body = urlSearchParams.toString(); return this.http.get(this.GetJobPlanById, { params: body }) .map((response: Response) => response.json() as IJobTemplate[]) .catch(this.handleError); } getAccessRights() { return this.http.get(this.GetAccessRights) .map((response: Response) => response.json() as IAccessRights[]) .catch(this.handleError); } addNewStaff(staffDetails: IStaffDetails) { return this.http.post(this.AddNewStaff, staffDetails) .map((response: Response) => response.json() as boolean) .catch(this.handleError); } saveJobPlanFromActivity(clientId: number, locationId: number, typeId: number, jobPlan: JobPlanDashboardGrid, companyID: number) { const urlSearchParams = new URLSearchParams(); urlSearchParams.append('clientId', clientId.toString()); urlSearchParams.append('locationId', locationId.toString()); urlSearchParams.append('typeId', typeId.toString()); urlSearchParams.append('companyID', companyID.toString()); const body = urlSearchParams.toString(); return this.http.post(this.SaveJobPlanFromActivity, jobPlan, { params: body }) .map((response: Response) => response.json() as boolean) .catch(this.handleError); } getLocationsForAddJobplan(clientId: number) { const urlSearchParams = new URLSearchParams(); urlSearchParams.append('clientId', clientId.toString()); const body = urlSearchParams.toString(); return this.http.get(this.GetLocationsForAddJobplan, { params: body }) .map((response: Response) => response.json() as IAccessRights[]) .catch(this.handleError); } // Edit job plan GetEditJobPlan(jobPlanId: number, clientId: number, loggedUserId: number, companyId: number, status: string) { const urlSearchParams = new URLSearchParams(); urlSearchParams.append('jobPlanId', jobPlanId.toString()); urlSearchParams.append('clientId', clientId.toString()); urlSearchParams.append('loggedUserId', loggedUserId.toString()); urlSearchParams.append('companyId', companyId.toString()); urlSearchParams.append('status', status.toString()); const body = urlSearchParams.toString(); return this.http.get(this.GetEditJobPlanUrl, { params: body }) .map((response: Response) => response.json() as IEditJobPlan) .catch(this.handleError); } private handleError(error): Observable { const message = error.statusText || 'Server error'; return throwError(error); } }