/* * ============LICENSE_START========================================== * ONAP Portal SDK * =================================================================== * Copyright © 2019 AT&T Intellectual Property. All rights reserved. * =================================================================== * * Unless otherwise specified, all software contained herein is licensed * under the Apache License, Version 2.0 (the "License"); * you may not use this software except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * Unless otherwise specified, all documentation contained herein is licensed * under the Creative Commons License, Attribution 4.0 Intl. (the "License"); * you may not use this documentation except in compliance with the License. * You may obtain a copy of the License at * * https://creativecommons.org/licenses/by/4.0/ * * Unless required by applicable law or agreed to in writing, documentation * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * ============LICENSE_END============================================ * * */ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { RdpCrudInterface } from 'portalsdk-tag-lib'; import { environment } from 'src/environments/environment'; import { AdminService } from '../admin.service'; import { BehaviorSubject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class MenusService implements RdpCrudInterface { public statusResponse = new BehaviorSubject(""); public updatedData = new BehaviorSubject({}); loadTableData(filter: any, sortActive: any, sortDirection: any, pageIndex: any, pageSize: any): import("rxjs").Observable { throw new Error("Method not implemented."); } getTotalRowCount() { throw new Error("Method not implemented."); } parentDataList: any; constructor(private http: HttpClient, private adminService: AdminService) { } menu = { action: null, active: false, activeAsString: "false", auditTrail: null, auditUserId: null, childMenus: [], created: null, createdId: null, externalUrl: null, functionCd: null, id: null, imageSrc: null, label: null, menuLevel: null, menuSetCode: null, modified: null, modifiedId: null, parentId: null, parentIdAsString: null, parentMenu: null, queryString: null, rowNum: null, separator: false, separatorAsString: false, servlet: null, sortOrder: null, target: null }; add(data: any) { console.log("Add method is getting called from AppServie data:: ", data); } update(data: any) { data.active = this.updateStatus(data.active); data.separator = this.updateStatus(data.separator); let keys = Object.keys(data); let menuCache = this.menu; keys.forEach(element => { if (data[element] != null || data[element] != undefined) { if (element == 'parentId') { if (isNaN(data[element])) { menuCache[element] = this.updateParentNameToID(data[element]); } else{ menuCache[element] = data[element]; } console.log("Parent Id to update : ", menuCache[element]); } else { menuCache[element] = data[element]; } } }); let result = { availableFnMenuItem: menuCache }; let postData = JSON.stringify(result); console.log("postData >>>>>>", postData); this.adminService.updateFnMenuItem(postData) .subscribe(_data => { console.log("Response : ", _data); this.statusResponse.next("200"); menuCache = this.menu; }, error => { console.log("Error : ", error); menuCache = this.menu; }); } delete(data: any) { console.log("Delete method is getting called from AppServie data::>> " + JSON.stringify(data)); console.log(data.active); data.active = this.updateStatus(data.active); data.separator = this.updateStatus(data.separator); this.adminService.deleteMenu(data).subscribe(response => { console.log("Response ", response); this.statusResponse.next("200"); }, error => { console.log("Error : ", error); }) } private updateStatus(data) { if (data == 'N') { return false; } else { return true; } } private updateBooleanValue(data) { if (data) { return 'Y'; } else { return 'N'; } } parentList: any; getParentList(list) { this.parentList = list; } private updateParentNameToID(data) { let val; this.parentList.forEach(ele => { if (ele['name'] == data) { val = ele['id']; } }); console.log("ParentId value ", val); return val; } get() { console.log("get method is getting called from MenuServie data:: "); let response = this.adminService.getFnMenuItems(); let resp; response.subscribe(res => { resp = res; let responseData = JSON.parse(resp.data).fnMenuItems; responseData.forEach(element => { element.active = this.updateBooleanValue(element.active); element.separator = this.updateBooleanValue(element.separator); }) this.updatedData.next(responseData); }) } }