import axios from "axios"; import { ApiQueryFilters } from "../data-contracts/ApiQueryFilter"; export class DataService{ getObjectTables(filters: ApiQueryFilters){ let token: string = this.getTokenFromStorage(); var apiURL = 'http://localhost:9996/api/ObjectTableViews/getbyfilters?'; apiURL = this.ConcatFiltersToURL(filters, apiURL); return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } }); } getObjectFields(filters: ApiQueryFilters) { let token: string = this.getTokenFromStorage(); var apiURL = 'http://localhost:9996/api/ObjectFieldViews/getbyfilters?'; apiURL = this.ConcatFiltersToURL(filters, apiURL); return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } }); } getDataByFilters(filters: ApiQueryFilters,tableName: string) { let token: string = this.getTokenFromStorage(); var apiURL = `http://localhost:9996/api/${tableName}Views/getbyfilters?`; apiURL = this.ConcatFiltersToURL(filters, apiURL); return axios.get(apiURL, { headers: { 'Content-Type': 'application/json', 'Token': token } }); } private ConcatFiltersToURL(filters: ApiQueryFilters, urlparameters: string) { var mykeys = Object.keys(filters); var addtionalFiltersValues: string | null = null; for (var i in mykeys) { var propName = mykeys[i]; var propValue = filters[propName]; var ignoreFilter = ((propName.indexOf("Operator") > 0 && propValue == "Equals") || propName == "AdditionalFilters"); if (urlparameters != "?") { urlparameters = urlparameters.concat('&'); } if (!ignoreFilter) { propValue = propValue ? encodeURIComponent(propValue) : ''; urlparameters = urlparameters.concat(propName.concat('=').concat(propValue)); } if (propName == "AdditionalFilters" && propValue.length > 0) { addtionalFiltersValues = JSON.stringify(propValue); } } if (addtionalFiltersValues) { urlparameters = urlparameters.concat("&AdditionalFilters=").concat(addtionalFiltersValues); } return urlparameters; } getTokenFromStorage(){ return window.localStorage.getItem("token") || ''; } }