{"version":3,"file":"fikoyt-shared-cihaz-aktivasyon-socket.service-Qy_CTnV4.mjs","sources":["../../../projects/shared/src/lib/app/uygulamalar/hmi-pano/services/cihaz-aktivasyon-socket.service.ts"],"sourcesContent":["import { Injectable, inject, OnDestroy } from '@angular/core';\r\nimport { Subject, Subscription, filter } from 'rxjs';\r\nimport { FikoYTService } from '../../../../service/fikoyt.service';\r\n\r\n// ─── EVENT TİPLERİ ──────────────────────────────────────────────────────────\r\n\r\nexport interface ICihazAktivasyonOlay {\r\n tip: 'aktivasyon_yeni_kayit' | 'aktivasyon_durum_degisti';\r\n cihaz_kimlik: string;\r\n cihaz_id?: string;\r\n firma_id?: string;\r\n cihaz_adi?: string;\r\n durum?: string;\r\n firma_adi?: string;\r\n uygulama_modu?: string;\r\n konum?: string;\r\n aktivasyon_kodu?: string;\r\n}\r\n\r\n// ─── SERVİS ──────────────────────────────────────────────────────────────────\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class CihazAktivasyonSocketService implements OnDestroy {\r\n private fikoyt = inject(FikoYTService);\r\n\r\n private _olaylar$ = new Subject();\r\n private _sub: Subscription | null = null;\r\n private _reconnectSub: Subscription | null = null;\r\n\r\n /** Tüm aktivasyon olayları stream'i */\r\n readonly olaylar$ = this._olaylar$.asObservable();\r\n\r\n /** Belirli bir cihaz kimliğine ait olayları filtrele */\r\n cihazOlaylari$(cihazKimlik: string) {\r\n return this.olaylar$.pipe(\r\n filter(o => o.cihaz_kimlik === cihazKimlik),\r\n );\r\n }\r\n\r\n /** Belirli bir firmaya ait olayları filtrele */\r\n firmaOlaylari$(firmaId: string) {\r\n return this.olaylar$.pipe(\r\n filter(o => o.firma_id === firmaId),\r\n );\r\n }\r\n\r\n /** Socket.IO dinlemeyi başlat (bir kez çağrılır) */\r\n dinlemeBasla() {\r\n if (this._sub) return;\r\n\r\n const socket = this.fikoyt.io;\r\n if (!socket) {\r\n console.warn('[AktivasyonSocket] Socket.IO bulunamadi, 2sn sonra tekrar denenecek');\r\n setTimeout(() => {\r\n this._sub = null;\r\n this.dinlemeBasla();\r\n }, 2000);\r\n return;\r\n }\r\n\r\n console.log('[AktivasyonSocket] Dinleme baslatiliyor...');\r\n\r\n this._sub = socket.fromEvent('FikoYT.sistem.io.cihaz.guncellendi')\r\n .subscribe((data: any) => {\r\n // ngx-socket-io bazen veriyi array olarak sarar\r\n const payload = Array.isArray(data) ? data[0] : data;\r\n if (!payload || typeof payload !== 'object') return;\r\n\r\n console.log('[AktivasyonSocket] Event geldi:', payload?.tip, payload?.durum, payload?.cihaz_kimlik);\r\n\r\n // Sadece aktivasyon event'lerini yakala\r\n if (payload?.tip?.startsWith('aktivasyon_')) {\r\n console.log('[AktivasyonSocket] Aktivasyon olayi tespit edildi, yayinlaniyor');\r\n this._olaylar$.next(payload as ICihazAktivasyonOlay);\r\n }\r\n });\r\n\r\n // Reconnect sonrası tekrar abone ol\r\n this._reconnectSub = socket.fromEvent('connect').subscribe(() => {\r\n console.log('[AktivasyonSocket] Socket.IO yeniden baglandi');\r\n });\r\n }\r\n\r\n /** Aktivasyon olayı bildir (Socket.IO üzerinden broadcast) */\r\n bildir(olay: ICihazAktivasyonOlay) {\r\n const socket = this.fikoyt.io;\r\n if (!socket) {\r\n console.warn('[AktivasyonSocket] bildir: Socket.IO bulunamadi');\r\n return;\r\n }\r\n\r\n const veri = {\r\n ...olay,\r\n cihaz_kimlik: olay.cihaz_kimlik,\r\n zaman: new Date().toISOString(),\r\n };\r\n\r\n console.log('[AktivasyonSocket] Event yayinlaniyor:', veri.tip, veri.durum, veri.cihaz_kimlik);\r\n\r\n // Go backend FikoYT.sistem.io.cihaz.guncellendi handler'ı\r\n // bu event'i tüm diğer client'lara broadcast eder\r\n socket.emit('FikoYT.sistem.io.cihaz.guncellendi', veri);\r\n }\r\n\r\n ngOnDestroy() {\r\n this._sub?.unsubscribe();\r\n this._sub = null;\r\n this._reconnectSub?.unsubscribe();\r\n this._reconnectSub = null;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;AAmBA;MAGa,4BAA4B,CAAA;AADzC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAE9B,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,OAAO,EAAwB;QAC/C,IAAA,CAAA,IAAI,GAAwB,IAAI;QAChC,IAAA,CAAA,aAAa,GAAwB,IAAI;;AAGxC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;AAgFlD,IAAA;;AA7EC,IAAA,cAAc,CAAC,WAAmB,EAAA;AAChC,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,WAAW,CAAC,CAC5C;IACH;;AAGA,IAAA,cAAc,CAAC,OAAe,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CACpC;IACH;;IAGA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,IAAI;YAAE;AAEf,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;QAC7B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,IAAI,CAAC,qEAAqE,CAAC;YACnF,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,IAAI,GAAG,IAAI;gBAChB,IAAI,CAAC,YAAY,EAAE;YACrB,CAAC,EAAE,IAAI,CAAC;YACR;QACF;AAEA,QAAA,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC;QAEzD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,oCAAoC;AAC9D,aAAA,SAAS,CAAC,CAAC,IAAS,KAAI;;AAEvB,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI;AACpD,YAAA,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE;AAE7C,YAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC;;YAGnG,IAAI,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,aAAa,CAAC,EAAE;AAC3C,gBAAA,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC;AAC9E,gBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAA+B,CAAC;YACtD;AACF,QAAA,CAAC,CAAC;;AAGJ,QAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,MAAK;AAC9D,YAAA,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC;AAC9D,QAAA,CAAC,CAAC;IACJ;;AAGA,IAAA,MAAM,CAAC,IAA0B,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE;QAC7B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC;YAC/D;QACF;AAEA,QAAA,MAAM,IAAI,GAAG;AACX,YAAA,GAAG,IAAI;YACP,YAAY,EAAE,IAAI,CAAC,YAAY;AAC/B,YAAA,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SAChC;AAED,QAAA,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC;;;AAI9F,QAAA,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC;IACzD;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;6HAvFW,4BAA4B,GAAA,CAAA,CAAA,CAAA,CAAA;uEAA5B,4BAA4B,EAAA,OAAA,EAA5B,4BAA4B,CAAA,IAAA,EAAA,UAAA,EADf,MAAM,EAAA,CAAA,CAAA;;iFACnB,4BAA4B,EAAA,CAAA;cADxC,UAAU;eAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;"}