import { Injectable, Injector, EventEmitter, Inject } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { lastValueFrom, map} from 'rxjs'; import {BaseService } from './services/base.service'; import {BaseMenuService } from './services/base-menu.service'; import {AppSettings} from './app.settings' import { ActivatedRoute } from '@angular/router'; @Injectable({ providedIn: 'root' }) export class CbmsService extends BaseService { constructor(private apiService: BaseMenuService,public override http: HttpClient, public override injector: Injector,private queryStringRouter: ActivatedRoute ) { // super(injector, environment.apiApiMenuUrl, environment.apiBaseUrl); super(injector); } public ValidateLogin(obj): any { // const response = this.apiService.get('/Common/CommonService.svc/cbms/ValidateUser?UserName='+ obj.UserName + '&Password=' + obj.Password) // return response; return this.get('/Common/CommonService.svc/cbms/ValidateUser?UserName=' + obj.UserName + '&Password=' + obj.Password); } public SaveUser(obj): any { // return this.post('tenant/Contact', obj); return this.post('cbms/SaveUser', obj); // const response = this.apiService.post('cbms/SaveUser') //return response; } public GetData(): any { return this.getApi('Cbms/GetData'); // const response = this.apiService.get('Cbms/GetData') // return response; } public GetMenu(uid): any { return this.postData('/Common/CommonService.svc/CBMS/Menulist', uid); } public ValidateXid(xid): any { return this.post('Common/CommonService.svc/CBMS/ValidateUid', xid); // const response = this.apiService.post('Common/CommonService.svc/CBMS/ValidateUid',xid) // return response; } // public ValidateUid(strUid):any{ // return this.get('/Common/CommonService.svc/cbms/ValidateUid?UserUid=' + strUid); // } public async ValidateUid(xid) { // Use special method for ValidateUid with forced JSON handling const response$ = await this.postDataForValidateUid('Common/CommonService.svc/CBMS/ValidateUid', xid); const response = await lastValueFrom(response$); return response; } // Debug method specifically for ValidateUid issues public debugValidateUidSetup() { console.log('=== CbmsService ValidateUid Debug ==='); console.log('Service initialized with injector:', this.injector); try { const config = this.injector.get('config' as any); console.log('Injected config:', config); console.log('Config CBMSServiceUrl:', (config as any)?.CBMSServiceUrl); } catch (error) { console.error('Error getting config:', error); } console.log('=== End CbmsService ValidateUid Debug ==='); } // Comprehensive debug method for calling project issues public debugCallingProjectIssues() { console.log('=== Calling Project Debug ==='); console.log('1. Check if calling project has HTTP_INTERCEPTORS'); console.log('2. Check if calling project sets responseType: "text"'); console.log('3. Check if calling project overrides HttpClient globally'); console.log('4. Check if calling project has custom error handlers'); console.log('5. Check if calling project modifies Content-Type headers'); console.log('=== End Calling Project Debug ==='); // Also debug our service state this.debugValidateUidSetup(); this.debugValidateUidHeaders(); } public getClientList(ClientSearchData: any): any { return this.http.post(AppSettings.CBMS_SERVICES_URL + 'Common/CommonService.svc/CBMS/Client/Search', ClientSearchData) .pipe(map(response => response)) //const response = this.apiService.post(AppSettings.CBMS_SERVICES_URL + 'Common/CommonService.svc/CBMS/Client/Search',ClientSearchData) //return response; } public async Validatexid(strXid) { // const response = this.apiService.get('Common/CommonService.svc/cbms/ValidateUserXid?Userxid='+ strXid) // return response; const response = await this.getAsync('Common/CommonService.svc/cbms/ValidateUserXid?Userxid=' + strXid); return response; } public async Validateuid(strXid) { // Convert to string and trim const Uid = (strXid + '').trim(); console.log('Validateuid called with:', strXid); console.log('Processed Uid:', Uid); try { // Ensure we resolve the HTTP observable to its value // First try normal JSON request (server expects application/json) try { const response$ = this.postDataForValidateUid('Common/CommonService.svc/CBMS/ValidateUid', Uid); const response = await lastValueFrom(response$); console.log('Validateuid response:', response); return response; } catch (err: any) { if (err?.status !== 400) { throw err; } } // If 400, try legacy fallbacks without affecting XID const response = await this.postValidateUidWithFallbacks('Common/CommonService.svc/CBMS/ValidateUid', Uid); console.log('Validateuid response:', response); return response; } catch (error) { console.error('Validateuid error:', error); throw error; } } public async GetPermissionsByUserId(obj) { const response= await this.postCommonApi('CommonApi/getPermissionsByUserId', obj) return response; // return this.apiService.post('CommonApi/getPermissionsByUserId',obj) // .pipe(map(data => data)); } // public GetMenuWithUidOrXid(ObjUserValidate): any { // return this.postData('/Common/CommonService.svc/CBMS/MenulistWithUidOrXid'+ObjUserValidate) // .pipe(map(data => {data})); // } public GetMenuWithUidOrXid(ObjUserValidate): any { // return this.http.post(AppSettings.CBMS_SERVICES_URL + '/Common/CommonService.svc/CBMS/MenulistWithUidOrXid', ObjUserValidate) // .map(res => { // console.log(res); // return res.json(); // }) return this.postData('/Common/CommonService.svc/CBMS/MenulistWithUidOrXid', ObjUserValidate) // return this.apiService.post('/Common/CommonService.svc/CBMS/MenulistWithUidOrXid',ObjUserValidate) } }