import {HttpClient, HttpHeaders} from '@angular/common/http'; import {Injectable} from '@angular/core'; @Injectable() export class AstuteClientService { headers = { headers: new HttpHeaders().set('Content-Type', 'application/json'), }; private authUrl = 'http://localhost:8080/astutesystem/auth'; private customerUrl = 'http://localhost:8080/astutesystem/customer'; private POUrl = 'http://localhost:8080/astutesystem/po'; private POServiceTypesUrl = 'http://localhost:8080/astutesystem/po/serviceTypes'; private PODetailUrl = 'http://localhost:8080/astutesystem/po/detail'; private invoiceUrl = 'http://localhost:8080/astutesystem/invoice'; private invoiceDetailUrl = 'http://localhost:8080/astutesystem/invoice/detail'; private invoiceGenUrl = 'http://localhost:8080/astutesystem/invoice/generatedInvoice'; private invoicePaymentUrl = 'http://localhost:8080/astutesystem/invoicePayment'; private serviceTypeUrl = 'http://localhost:8080/astutesystem/serviceType'; private sessionId = localStorage.getItem(''); private sessionString = `?sessionId=${this.sessionId}`; constructor(private http: HttpClient) { } // **************************************** AUTH Service methods public login(username: string, password: string): Promise { const data = { 'username': username, 'password': password }; return this.http .post(this.authUrl, data) .toPromise() .then(response => { console.log(response['entity']); const name = response['entity'].name; const sessionId = response['entity'].sessionId; if (sessionId != null) { localStorage.setItem('SESSION_ID', sessionId); localStorage.setItem('SESSION_USER', name); return sessionId; } else { return null; } }); } public logout() { localStorage.removeItem('SESSION_ID'); localStorage.removeItem('SESSION_USER'); console.log(localStorage.getItem('SESSION_ID')); } public getSessionId(): string { console.log(localStorage.getItem('SESSION_ID')); return localStorage.getItem('SESSION_ID'); } public getSessionUser(): string { console.log(localStorage.getItem('SESSION_USER')); return localStorage.getItem('SESSION_USER'); } // **************************************** Customer Service methods public getCustomers(): Promise { console.log("*** In getCustomers()"); const url = `${this.customerUrl}${this.sessionString}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }) .catch( error => { alert(error); }); } public updateCustomer(customerId: number, data: any): Promise { console.log("*** In updateCustomer()"); const url = `${this.customerUrl}/${customerId}`; //TODO send sessionId return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public createCustomer(data: any): Promise { console.log("*** In createCustomer()"); const url = `${this.customerUrl}`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } public deleteCustomer(customerId) { console.log("*** In deleteCustomer()"); const url = `${this.customerUrl}/${customerId}/delete`; return this.http.put(url, {}) .toPromise() .then(response => { console.log (response['entity']); return response['entity']; }); } // **************************************** PO Service methods public getPOs(): Promise { console.log("*** In getPOs()"); const url = `${this.POUrl}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public getPODetail(ponum): Promise { console.log("*** In getPODetails()"); const url = `${this.PODetailUrl}?PONum=${ponum}`; console.log(url); return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public updatePO(ponum: string, data: any): Promise { console.log("*** In updatePO()"); const url = `${this.POUrl}/${ponum}`; //TODO send sessionId return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public createPO(data: any): Promise { console.log("*** In createPO()"); const url = `${this.POUrl}`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } public updatePODetail(ponum, lineItemNo, data) { console.log("*** In updatePODetail()"); const sessionId = localStorage.getItem('sessionId'); const url = `${this.POUrl}/detail/${ponum}/${lineItemNo}`; //TODO send sessionId return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public createPODetail(data) { console.log("*** In createPODetail()"); const url = `${this.POUrl}/detail`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } public finalizePO(ponum: string){ console.log("*** In finalizePO()"); const url = `${this.POUrl}/${ponum}/finalize`; //TODO send sessionId return this.http.put(url, {}) .toPromise() .then(response => response['entity']); } public deletePO(ponum: string) { console.log("*** In deletePO()"); const url = `${this.POUrl}/${ponum}/delete`; //TODO send sessionId return this.http.put(url, {}) .toPromise() .then(response => response['entity']); } // **************************************** Invoice Service methods // /{InvoiceNumber}/void public submitInvoice (invoiceNumber) { console.log("*** In submitInvoice(), invoiceNumber" + invoiceNumber); const url = `${this.invoiceUrl}/${invoiceNumber}/submit`; return this.http.put(url, {}) .toPromise() .then(response => { console.log (response['entity']); return response['entity']; }); } public voidInvoice (invoiceNumber) { console.log("*** In voidInvoice(), invoiceNumber" + invoiceNumber); const url = `${this.invoiceUrl}/${invoiceNumber}/void`; return this.http.put(url, {}) .toPromise() .then(response => { console.log (response['entity']); return response['entity']; }); } public deleteInvoice (invoiceNumber) { console.log("*** In deleteInvoice(), invoiceNumber" + invoiceNumber); const url = `${this.invoiceUrl}/${invoiceNumber}/delete`; return this.http.put(url, {}) .toPromise() .then(response => { console.log (response['entity']); return response['entity']; }); } public generateInvoiceNumber (ponum) { console.log("*** In generateInvoiceNumber()"); const url = `${this.invoiceUrl}/generateInvoiceNumber/${ponum}`; return this.http.get(url) .toPromise() .then(response => { console.log (response['entity']) return response['entity']; }); } public getInvoices(): Promise { console.log("*** In getInvoices()"); const url = `${this.invoiceUrl}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public getInvoiceDetail(invoiceId: string): Promise { console.log("*** In getInvoiceDetail()"); const url = `${this.invoiceDetailUrl}?invoiceNumber=${invoiceId}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public getInvoiceGen (invoiceId: string): Promise { console.log("*** In getInvoiceGen()"); const url = `${this.invoiceGenUrl}/${invoiceId}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public updateInvoice(invoiceNumber: string, data: any): Promise { console.log("*** In updateInvoice()"); const url = `${this.invoiceUrl}/${invoiceNumber}`; //TODO send sessionId return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public createInvoice(data: any): Promise { console.log("*** In createInvoice()"); const url = `${this.invoiceUrl}`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } public updateInvoiceDetail(invNum, lineItemNo, data) { console.log("*** In updateInvoiceDetail()"); const url = `${this.invoiceUrl}/detail/${invNum}/${lineItemNo}`; //TODO send sessionId return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public createInvoiceDetail(data) { console.log("*** In createInvoiceDetail()"); const url = `${this.invoiceUrl}/detail`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } // **************************************** Invoice Payment Service methods public getSumittedInvoices(): Promise { console.log("*** In getSumittedInvoices()"); const url = `${this.invoiceUrl}/submitted`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public getInvoiceTypes(): Promise { const url = `${this.invoicePaymentUrl}/paymentTypes`; console.log("*** In getInvoiceTypes() ... calling " + url); return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public getInvoicePayments(): Promise { console.log("*** In getInvoicePayments()"); const url = `${this.invoicePaymentUrl}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public updateInvoicePayment(invoiceNumber: string, invoicePaymentId: string, data: any): Promise { console.log("*** In updateInvoicePayment()"); const url = `${this.invoicePaymentUrl}/${invoiceNumber}/${invoicePaymentId}`; //TODO send sessionId console.log("*** invoicePaymentUrl is " + url); return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public addInvoicePayment(data: any): Promise { console.log("*** In addInvoicePayment()"); const url = `${this.invoicePaymentUrl}`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } // **************************************** Service Type methods public getServiceTypes(): Promise { console.log("*** In getPOServiceTypes()"); const url = `${this.serviceTypeUrl}`; return this.http.get(url) .toPromise() .then(response => { console.log(response['entity']); return response['entity']; }); } public updateServiceType(serviceTypeId, serviceTypeDesc, data: any): Promise { console.log("*** In updateServiceType()"); const url = `${this.serviceTypeUrl}/${serviceTypeId}/?desc=${serviceTypeDesc}`; //TODO send sessionId console.log("*** updateServiceType is " + url); return this.http.put(url, data) .toPromise() .then(response => response['entity']); } public createServiceType(data: any): Promise { console.log("*** In createServiceType()"); const url = `${this.serviceTypeUrl}`; //TODO send sessionId return this.http.post(url, data) .toPromise() .then(response => response['entity']); } }