@tagsamurai/gsts-api-services 1.0.1-alpha.2 → 1.0.1-alpha.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,113 +1,170 @@
1
- import I from "axios";
2
- const S = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1, VITE_APP_GLOBAL_SETTINGS_API: "https://dev-api.global-settings.tagsamurai.com", VITE_APP_LOGS_NOTIFICATION_API: "https://dev-api-logs-notification.tagsamurai.com", VITE_APP_TAGSAMURAI_API: "https://dev-api.tagsamurai.com" }, u = (e = "APP_TAGSAMURAI_API") => S["VITE_" + e], n = (e = {}, t = !1) => {
1
+ import S from "axios";
2
+ const T = { BASE_URL: "/", DEV: !1, MODE: "production", PROD: !0, SSR: !1, VITE_APP_GLOBAL_SETTINGS_API: "https://dev-api.global-settings.tagsamurai.com", VITE_APP_LOGS_NOTIFICATION_API: "https://dev-api-logs-notification.tagsamurai.com", VITE_APP_TAGSAMURAI_API: "https://dev-api.tagsamurai.com" }, d = (t = "APP_TAGSAMURAI_API") => T["VITE_" + t], o = (t = {}, e = !1) => {
3
3
  const {
4
- env: s = "APP_GLOBAL_SETTINGS_API",
5
- prefix: l = "",
6
- headers: g = {},
7
- ...A
8
- } = e, P = `${u(s)}${l}`, a = JSON.parse(localStorage.getItem("user") ?? "{}"), v = a.jwt ?? a.token ?? "";
9
- return I.create({
10
- ...A,
11
- baseURL: P,
12
- headers: t ? g : {
4
+ env: n = "APP_GLOBAL_SETTINGS_API",
5
+ prefix: v = "",
6
+ headers: p = {},
7
+ ...P
8
+ } = t, $ = `${d(n)}${v}`, l = JSON.parse(localStorage.getItem("user") ?? "{}"), I = l.jwt ?? l.token ?? "";
9
+ return S.create({
10
+ ...P,
11
+ baseURL: $,
12
+ headers: e ? p : {
13
13
  "Content-Type": "application/json",
14
- Authorization: `Bearer ${v}`,
15
- ...g
14
+ Authorization: `Bearer ${I}`,
15
+ ...p
16
16
  }
17
17
  });
18
- }, m = (e) => e ? `${u("APP_TAGSAMURAI_API")}/file-manager/v2/files/${e}` : void 0, O = (e) => {
19
- if (!e || typeof e == "string")
18
+ }, G = (t) => {
19
+ if (!t) return;
20
+ const e = d("APP_TAGSAMURAI_API");
21
+ return t.startsWith("http") ? t : `${e}/file-manager/v2/files/${t}`;
22
+ }, y = (t) => {
23
+ if (!t || typeof t == "string")
20
24
  return;
21
- const t = {};
22
- return Object.keys(e).forEach((s) => {
23
- Array.isArray(e[s]) ? e[s].length > 0 && Object.assign(t, {
24
- [s]: JSON.stringify(e[s])
25
- }) : e[s] !== void 0 && Object.assign(t, {
26
- [s]: e[s]
25
+ const e = {};
26
+ return Object.keys(t).forEach((n) => {
27
+ Array.isArray(t[n]) ? t[n].length > 0 && Object.assign(e, {
28
+ [n]: JSON.stringify(t[n])
29
+ }) : t[n] !== void 0 && Object.assign(e, {
30
+ [n]: t[n]
27
31
  });
28
- }), t;
29
- }, c = n({
32
+ }), e;
33
+ }, f = o({
34
+ prefix: "/v1/global-settings/auth"
35
+ }), O = () => f.post("/logout"), E = { logout: O }, c = o({
30
36
  prefix: "/v1/global-settings/change-log"
31
- }), T = {
32
- getChangelogs: (e) => c.get("", { params: e }),
33
- getChangelogOptions: (e) => c.get("/options", { params: e })
34
- }, o = n({
37
+ }), R = {
38
+ getChangelogs: (t) => c.get("", { params: t }),
39
+ getChangelogOptions: (t) => c.get("/options", { params: t })
40
+ }, a = o({
35
41
  prefix: "/v1/global-settings/division"
36
- }), U = {
37
- getDivisions: (e) => o.get("", { params: e }),
38
- getDivisionDetail: (e) => o.get(`/${e}`),
39
- postCreateDivision: (e) => o.post("/", e),
40
- putEditDivision: (e, t) => o.put(`/${e}`, t),
41
- deleteDivisions: (e) => {
42
- const t = { id: JSON.stringify(e) };
43
- return o.delete("", { params: t });
42
+ }), D = {
43
+ getDivisions: (t) => a.get("", { params: t }),
44
+ getDivisionDetail: (t) => a.get(`/${t}`),
45
+ postCreateDivision: (t) => a.post("/", t),
46
+ putEditDivision: (t, e) => a.put(`/${t}`, e),
47
+ deleteDivisions: (t) => {
48
+ const e = { id: JSON.stringify(t) };
49
+ return a.delete("", { params: e });
44
50
  }
45
- }, _ = n({
51
+ }, i = o({
52
+ prefix: "/v1/global-settings"
53
+ }), L = {
54
+ getTAGAllPaired: (t, e) => i.get(`/${t}`, { params: e }),
55
+ getTAGAllPairedOptions: (t, e) => i.get(`/${t}/options`, { params: e }),
56
+ getTAGNotPaired: (t, e) => i.get(`/${t}/not-paired`, { params: e }),
57
+ getTAGNotPairedOptions: (t, e) => i.get(`/${t}/not-paired/options`, { params: e }),
58
+ getScanTAG: (t, e) => i.get(`/${t}/scan`, { params: e }),
59
+ putDetailAuditTAG: (t, e) => i.put(`/${t}/audit-detail`, e),
60
+ putAuditTAG: (t, e) => i.put(`/${t}/audit`, e),
61
+ putAllocateTAG: (t, e) => i.put(`/${t}/allocate`, e),
62
+ putCombineTAG: (t) => i.put("/combine", t)
63
+ }, r = o({
64
+ prefix: "/v1/global-settings"
65
+ }), U = {
66
+ getHandheldReader: (t) => r.get("/reader", { params: t }),
67
+ getHandheldReaderDetail: (t) => r.get(`/reader/${t}`),
68
+ getHandheldReaderOptions: (t) => r.get("/reader/options", { params: t }),
69
+ putMarkHandheldStatus: (t) => r.put("/reader/mark-status", t),
70
+ putPingReaders: (t) => r.put("/iot-reader/ping", t),
71
+ putMarkIOTStatus: (t, e) => r.put(`/${e}/mark-status`, t),
72
+ putEditReaderGroup: (t, e, n) => r.put(
73
+ `/${t === "iot" ? "iot-" : ""}reader/${n}/set-group`,
74
+ e
75
+ ),
76
+ putEditAntennaGroup: (t, e) => r.put(`/iot-reader/${e}/set-port-group`, t),
77
+ putEditPortStatus: (t, e) => r.put(`/iot-reader/${e}/set-port-status`, t),
78
+ putEditAliasName: (t, e, n) => r.put(
79
+ `/${t === "iot" ? "iot-" : ""}reader/${n}/set-alias-name`,
80
+ e
81
+ ),
82
+ putAntennaPower: (t, e) => r.put(`/iot-reader/${e}/set-antenna-power`, t),
83
+ getIOTReaderOrAntenna: (t, e) => r.get(`/${t}`, { params: e }),
84
+ getIOTReaderDetail: (t) => r.get(`/iot-reader/${t}`),
85
+ getIOTReaderOrAntennaOptions: (t, e) => r.get(`/${t}/options`, { params: e }),
86
+ getActivityLog: (t) => r.get("/activity-log", { params: t }),
87
+ getActivityLogOptions: (t) => r.get("/activity-log/options", { params: t }),
88
+ getDetailActivityLog: (t) => r.get("/activity-log", { params: t }),
89
+ getDetailActivityLogOptions: (t) => r.get("/activity-log/options", { params: t }),
90
+ getExistingAliasNames: () => r.get("/reader/alias-names"),
91
+ getIotReaderPort: (t, e) => r.get(`/iot-reader/${t}/ports`, { params: e })
92
+ }, _ = o({
46
93
  env: "APP_LOGS_NOTIFICATION_API",
47
94
  prefix: "/v2"
48
- }), $ = {
49
- getSessionLogList: (e) => _.get("/session-log", { params: e })
50
- }, p = n({
95
+ }), b = {
96
+ getSessionLogList: (t) => _.get("/session-log", { params: t })
97
+ }, A = o({
51
98
  prefix: "/v1/global-settings/option"
52
- }), h = {
53
- getPositions: () => p.get("/position"),
54
- getDivisions: () => p.get("/division")
55
- }, i = n({
99
+ }), x = {
100
+ getPositions: () => A.get("/position"),
101
+ getDivisions: () => A.get("/division")
102
+ }, g = o({
56
103
  prefix: "/v1/global-settings/position"
57
- }), y = {
58
- getPositions: (e) => i.get("", { params: e }),
59
- getPositionDetail: (e) => i.get(`/${e}`),
60
- postCreatePosition: (e) => i.post("/", e),
61
- putEditPosition: (e, t) => i.put(`/${e}`, t),
62
- deletePositions: (e) => {
63
- const t = { id: JSON.stringify(e) };
64
- return i.delete("", { params: t });
104
+ }), C = {
105
+ getPositions: (t) => g.get("", { params: t }),
106
+ getPositionDetail: (t) => g.get(`/${t}`),
107
+ postCreatePosition: (t) => g.post("/", t),
108
+ putEditPosition: (t, e) => g.put(`/${t}`, e),
109
+ deletePositions: (t) => {
110
+ const e = { id: JSON.stringify(t) };
111
+ return g.delete("", { params: e });
65
112
  }
66
- }, f = n({
113
+ }, h = o({
67
114
  env: "APP_TAGSAMURAI_API",
68
115
  prefix: "/tag/v2"
69
- }), E = {
70
- getTagInfo: (e) => f.get("/rfid-qr/scan", { params: e })
71
- }, r = n({
116
+ }), N = {
117
+ getTagInfo: (t) => h.get("/rfid-qr/scan", { params: t })
118
+ }, u = o({
119
+ prefix: "/v1/global-settings/change-log"
120
+ }), w = {
121
+ getTAGEventlog: (t) => u.get("/tag-event-log", { params: t }),
122
+ getTAGEventlogOptions: (t) => u.get("/tag-event-log/options", { params: t }),
123
+ getDetailTAGEventlog: (t) => u.get(`/tag-event-log/${t}`)
124
+ }, s = o({
72
125
  prefix: "/v1/global-settings/user"
73
- }), L = {
74
- getUsers: (e) => r.get("", { params: e }),
75
- getUserDetail: (e) => r.get(`/${e}`),
76
- getUserSystemLogs: (e, t) => r.get(`/${e}/system-logs`, { params: t }),
77
- getUserSystemLogOptions: (e, t) => {
78
- const s = {};
79
- return s[t] = !0, r.get(`/${e}/system-logs/options`, { params: s });
126
+ }), M = {
127
+ getUsers: (t) => s.get("", { params: t }),
128
+ getUserDetail: (t) => s.get(`/${t}`),
129
+ getUserSystemLogs: (t, e) => s.get(`/${t}/system-logs`, { params: e }),
130
+ getUserSystemLogOptions: (t, e) => {
131
+ const n = {};
132
+ return n[e] = !0, s.get(`/${t}/system-logs/options`, { params: n });
80
133
  },
81
- postCreateUser: (e) => {
82
- const t = { "Content-Type": "multipart/form-data" };
83
- return r.post("", e, { headers: t });
134
+ postCreateUser: (t) => {
135
+ const e = { "Content-Type": "multipart/form-data" };
136
+ return s.post("", t, { headers: e });
84
137
  },
85
- putEditUser: (e, t) => {
86
- const s = { "Content-Type": "multipart/form-data" };
87
- return r.put(`/${e}`, t, { headers: s });
138
+ putEditUser: (t, e) => {
139
+ const n = { "Content-Type": "multipart/form-data" };
140
+ return s.put(`/${t}`, e, { headers: n });
88
141
  },
89
- deleteUsers: (e) => {
90
- const t = { id: JSON.stringify(e) };
91
- return r.delete("", { params: t });
142
+ deleteUsers: (t) => {
143
+ const e = { id: JSON.stringify(t) };
144
+ return s.delete("", { params: e });
92
145
  },
93
- putToggleStatusUsers: (e) => r.put("/active-status", e),
94
- getUserOptions: (e) => {
95
- const t = {};
96
- return t[e] = !0, r.get("/options", { params: t });
146
+ putToggleStatusUsers: (t) => s.put("/active-status", t),
147
+ getUserOptions: (t) => {
148
+ const e = {};
149
+ return e[t] = !0, s.get("/options", { params: e });
97
150
  },
98
- deleteCancelEmailChange: (e) => r.delete(`/cancel-email-change/${e}`),
99
- postResendEmail: (e) => r.post("/resend-email", e),
100
- putChangePassword: (e, t) => r.put(`/change-password/${e}`, t)
151
+ deleteCancelEmailChange: (t) => s.delete(`/cancel-email-change/${t}`),
152
+ postResendEmail: (t) => s.post("/resend-email", t),
153
+ putChangePassword: (t, e) => s.put(`/change-password/${t}`, e)
101
154
  };
102
155
  export {
103
- T as ChangelogServices,
104
- U as DivisionServices,
105
- $ as LogServices,
106
- h as OptionServices,
107
- y as PositionServices,
108
- E as TagServices,
109
- L as UserServices,
110
- u as getBaseURL,
111
- m as getImageURL,
112
- O as queryParamsStringfy
156
+ E as AuthServices,
157
+ R as ChangelogServices,
158
+ D as DivisionServices,
159
+ L as GlobalTagServices,
160
+ U as HardwareServices,
161
+ b as LogServices,
162
+ x as OptionServices,
163
+ C as PositionServices,
164
+ w as TagEventlogServices,
165
+ N as TagServices,
166
+ M as UserServices,
167
+ d as getBaseURL,
168
+ G as getImageURL,
169
+ y as queryParamsStringfy
113
170
  };
@@ -1 +1 @@
1
- System.register(["axios"],function(n,m){"use strict";var c;return{setters:[a=>{c=a.default}],execute:function(){const a={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_GLOBAL_SETTINGS_API:"https://dev-api.global-settings.tagsamurai.com",VITE_APP_LOGS_NOTIFICATION_API:"https://dev-api-logs-notification.tagsamurai.com",VITE_APP_TAGSAMURAI_API:"https://dev-api.tagsamurai.com"},u=n("getBaseURL",(e="APP_TAGSAMURAI_API")=>a["VITE_"+e]),i=(e={},t=!1)=>{const{env:s="APP_GLOBAL_SETTINGS_API",prefix:I="",headers:A={},...f}=e,_=`${u(s)}${I}`,v=JSON.parse(localStorage.getItem("user")??"{}"),d=v.jwt??v.token??"";return c.create({...f,baseURL:_,headers:t?A:{"Content-Type":"application/json",Authorization:`Bearer ${d}`,...A}})},O=n("getImageURL",e=>e?`${u("APP_TAGSAMURAI_API")}/file-manager/v2/files/${e}`:void 0),T=n("queryParamsStringfy",e=>{if(!e||typeof e=="string")return;const t={};return Object.keys(e).forEach(s=>{Array.isArray(e[s])?e[s].length>0&&Object.assign(t,{[s]:JSON.stringify(e[s])}):e[s]!==void 0&&Object.assign(t,{[s]:e[s]})}),t}),l=i({prefix:"/v1/global-settings/change-log"}),U=n("ChangelogServices",{getChangelogs:e=>l.get("",{params:e}),getChangelogOptions:e=>l.get("/options",{params:e})}),o=i({prefix:"/v1/global-settings/division"}),$=n("DivisionServices",{getDivisions:e=>o.get("",{params:e}),getDivisionDetail:e=>o.get(`/${e}`),postCreateDivision:e=>o.post("/",e),putEditDivision:(e,t)=>o.put(`/${e}`,t),deleteDivisions:e=>{const t={id:JSON.stringify(e)};return o.delete("",{params:t})}}),P=i({env:"APP_LOGS_NOTIFICATION_API",prefix:"/v2"}),y=n("LogServices",{getSessionLogList:e=>P.get("/session-log",{params:e})}),p=i({prefix:"/v1/global-settings/option"}),L=n("OptionServices",{getPositions:()=>p.get("/position"),getDivisions:()=>p.get("/division")}),g=i({prefix:"/v1/global-settings/position"}),h=n("PositionServices",{getPositions:e=>g.get("",{params:e}),getPositionDetail:e=>g.get(`/${e}`),postCreatePosition:e=>g.post("/",e),putEditPosition:(e,t)=>g.put(`/${e}`,t),deletePositions:e=>{const t={id:JSON.stringify(e)};return g.delete("",{params:t})}}),S=i({env:"APP_TAGSAMURAI_API",prefix:"/tag/v2"}),E=n("TagServices",{getTagInfo:e=>S.get("/rfid-qr/scan",{params:e})}),r=i({prefix:"/v1/global-settings/user"}),C=n("UserServices",{getUsers:e=>r.get("",{params:e}),getUserDetail:e=>r.get(`/${e}`),getUserSystemLogs:(e,t)=>r.get(`/${e}/system-logs`,{params:t}),getUserSystemLogOptions:(e,t)=>{const s={};return s[t]=!0,r.get(`/${e}/system-logs/options`,{params:s})},postCreateUser:e=>{const t={"Content-Type":"multipart/form-data"};return r.post("",e,{headers:t})},putEditUser:(e,t)=>{const s={"Content-Type":"multipart/form-data"};return r.put(`/${e}`,t,{headers:s})},deleteUsers:e=>{const t={id:JSON.stringify(e)};return r.delete("",{params:t})},putToggleStatusUsers:e=>r.put("/active-status",e),getUserOptions:e=>{const t={};return t[e]=!0,r.get("/options",{params:t})},deleteCancelEmailChange:e=>r.delete(`/cancel-email-change/${e}`),postResendEmail:e=>r.post("/resend-email",e),putChangePassword:(e,t)=>r.put(`/change-password/${e}`,t)})}}});
1
+ System.register(["axios"],function(s,h){"use strict";var p;return{setters:[l=>{p=l.default}],execute:function(){const l={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1,VITE_APP_GLOBAL_SETTINGS_API:"https://dev-api.global-settings.tagsamurai.com",VITE_APP_LOGS_NOTIFICATION_API:"https://dev-api-logs-notification.tagsamurai.com",VITE_APP_TAGSAMURAI_API:"https://dev-api.tagsamurai.com"},A=s("getBaseURL",(t="APP_TAGSAMURAI_API")=>l["VITE_"+t]),o=(t={},e=!1)=>{const{env:n="APP_GLOBAL_SETTINGS_API",prefix:f="",headers:P={},...O}=t,_=`${A(n)}${f}`,S=JSON.parse(localStorage.getItem("user")??"{}"),m=S.jwt??S.token??"";return p.create({...O,baseURL:_,headers:e?P:{"Content-Type":"application/json",Authorization:`Bearer ${m}`,...P}})},y=s("getImageURL",t=>{if(!t)return;const e=A("APP_TAGSAMURAI_API");return t.startsWith("http")?t:`${e}/file-manager/v2/files/${t}`}),G=s("queryParamsStringfy",t=>{if(!t||typeof t=="string")return;const e={};return Object.keys(t).forEach(n=>{Array.isArray(t[n])?t[n].length>0&&Object.assign(e,{[n]:JSON.stringify(t[n])}):t[n]!==void 0&&Object.assign(e,{[n]:t[n]})}),e}),$=o({prefix:"/v1/global-settings/auth"}),L=s("AuthServices",{logout:()=>$.post("/logout")}),d=o({prefix:"/v1/global-settings/change-log"}),R=s("ChangelogServices",{getChangelogs:t=>d.get("",{params:t}),getChangelogOptions:t=>d.get("/options",{params:t})}),g=o({prefix:"/v1/global-settings/division"}),U=s("DivisionServices",{getDivisions:t=>g.get("",{params:t}),getDivisionDetail:t=>g.get(`/${t}`),postCreateDivision:t=>g.post("/",t),putEditDivision:(t,e)=>g.put(`/${t}`,e),deleteDivisions:t=>{const e={id:JSON.stringify(t)};return g.delete("",{params:e})}}),a=o({prefix:"/v1/global-settings"}),D=s("GlobalTagServices",{getTAGAllPaired:(t,e)=>a.get(`/${t}`,{params:e}),getTAGAllPairedOptions:(t,e)=>a.get(`/${t}/options`,{params:e}),getTAGNotPaired:(t,e)=>a.get(`/${t}/not-paired`,{params:e}),getTAGNotPairedOptions:(t,e)=>a.get(`/${t}/not-paired/options`,{params:e}),getScanTAG:(t,e)=>a.get(`/${t}/scan`,{params:e}),putDetailAuditTAG:(t,e)=>a.put(`/${t}/audit-detail`,e),putAuditTAG:(t,e)=>a.put(`/${t}/audit`,e),putAllocateTAG:(t,e)=>a.put(`/${t}/allocate`,e),putCombineTAG:t=>a.put("/combine",t)}),r=o({prefix:"/v1/global-settings"}),b=s("HardwareServices",{getHandheldReader:t=>r.get("/reader",{params:t}),getHandheldReaderDetail:t=>r.get(`/reader/${t}`),getHandheldReaderOptions:t=>r.get("/reader/options",{params:t}),putMarkHandheldStatus:t=>r.put("/reader/mark-status",t),putPingReaders:t=>r.put("/iot-reader/ping",t),putMarkIOTStatus:(t,e)=>r.put(`/${e}/mark-status`,t),putEditReaderGroup:(t,e,n)=>r.put(`/${t==="iot"?"iot-":""}reader/${n}/set-group`,e),putEditAntennaGroup:(t,e)=>r.put(`/iot-reader/${e}/set-port-group`,t),putEditPortStatus:(t,e)=>r.put(`/iot-reader/${e}/set-port-status`,t),putEditAliasName:(t,e,n)=>r.put(`/${t==="iot"?"iot-":""}reader/${n}/set-alias-name`,e),putAntennaPower:(t,e)=>r.put(`/iot-reader/${e}/set-antenna-power`,t),getIOTReaderOrAntenna:(t,e)=>r.get(`/${t}`,{params:e}),getIOTReaderDetail:t=>r.get(`/iot-reader/${t}`),getIOTReaderOrAntennaOptions:(t,e)=>r.get(`/${t}/options`,{params:e}),getActivityLog:t=>r.get("/activity-log",{params:t}),getActivityLogOptions:t=>r.get("/activity-log/options",{params:t}),getDetailActivityLog:t=>r.get("/activity-log",{params:t}),getDetailActivityLogOptions:t=>r.get("/activity-log/options",{params:t}),getExistingAliasNames:()=>r.get("/reader/alias-names"),getIotReaderPort:(t,e)=>r.get(`/iot-reader/${t}/ports`,{params:e})}),I=o({env:"APP_LOGS_NOTIFICATION_API",prefix:"/v2"}),C=s("LogServices",{getSessionLogList:t=>I.get("/session-log",{params:t})}),v=o({prefix:"/v1/global-settings/option"}),N=s("OptionServices",{getPositions:()=>v.get("/position"),getDivisions:()=>v.get("/division")}),u=o({prefix:"/v1/global-settings/position"}),w=s("PositionServices",{getPositions:t=>u.get("",{params:t}),getPositionDetail:t=>u.get(`/${t}`),postCreatePosition:t=>u.post("/",t),putEditPosition:(t,e)=>u.put(`/${t}`,e),deletePositions:t=>{const e={id:JSON.stringify(t)};return u.delete("",{params:e})}}),T=o({env:"APP_TAGSAMURAI_API",prefix:"/tag/v2"}),B=s("TagServices",{getTagInfo:t=>T.get("/rfid-qr/scan",{params:t})}),c=o({prefix:"/v1/global-settings/change-log"}),M=s("TagEventlogServices",{getTAGEventlog:t=>c.get("/tag-event-log",{params:t}),getTAGEventlogOptions:t=>c.get("/tag-event-log/options",{params:t}),getDetailTAGEventlog:t=>c.get(`/tag-event-log/${t}`)}),i=o({prefix:"/v1/global-settings/user"}),j=s("UserServices",{getUsers:t=>i.get("",{params:t}),getUserDetail:t=>i.get(`/${t}`),getUserSystemLogs:(t,e)=>i.get(`/${t}/system-logs`,{params:e}),getUserSystemLogOptions:(t,e)=>{const n={};return n[e]=!0,i.get(`/${t}/system-logs/options`,{params:n})},postCreateUser:t=>{const e={"Content-Type":"multipart/form-data"};return i.post("",t,{headers:e})},putEditUser:(t,e)=>{const n={"Content-Type":"multipart/form-data"};return i.put(`/${t}`,e,{headers:n})},deleteUsers:t=>{const e={id:JSON.stringify(t)};return i.delete("",{params:e})},putToggleStatusUsers:t=>i.put("/active-status",t),getUserOptions:t=>{const e={};return e[t]=!0,i.get("/options",{params:e})},deleteCancelEmailChange:t=>i.delete(`/cancel-email-change/${t}`),postResendEmail:t=>i.post("/resend-email",t),putChangePassword:(t,e)=>i.put(`/change-password/${t}`,e)})}}});
package/main.d.ts CHANGED
@@ -1,8 +1,12 @@
1
+ export { default as AuthServices } from './src/services/auth.service';
1
2
  export { default as ChangelogServices } from './src/services/changelog.service';
2
3
  export { default as DivisionServices } from './src/services/division.service';
4
+ export { default as GlobalTagServices } from './src/services/globalTag.service';
5
+ export { default as HardwareServices } from './src/services/hardware.service';
3
6
  export { default as LogServices } from './src/services/logNotification.service';
4
7
  export { default as OptionServices } from './src/services/option.service';
5
8
  export { default as PositionServices } from './src/services/position.service';
6
9
  export { default as TagServices } from './src/services/tag.service';
10
+ export { default as TagEventlogServices } from './src/services/tagEventlog.service';
7
11
  export { default as UserServices } from './src/services/user.service';
8
12
  export { getBaseURL, getImageURL, queryParamsStringfy } from './src/utils';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tagsamurai/gsts-api-services",
3
- "version": "1.0.1-alpha.2",
3
+ "version": "1.0.1-alpha.20",
4
4
  "author": "developer.tagsamurai",
5
5
  "description": "Global Settings Tag Samurai Services Library",
6
6
  "module": "./api-services.es.js",
@@ -1,7 +1,8 @@
1
- import { ChangelogOptionFilter, ChangelogType } from '../types/changelog.type';
1
+ import { ChangelogType } from '../types/changelog.type';
2
2
  import { FetchListResponse, FetchOptionResponse } from '../types/fetchResponse.type';
3
+ import { FilterOptions } from './dataTable.dto';
3
4
  export type ChangelogResponse = FetchListResponse<ChangelogType>;
4
- export type ChangelogOptionResponse = FetchOptionResponse<ChangelogOptionFilter>;
5
+ export type ChangelogOptionResponse = FetchOptionResponse<FilterOptions>;
5
6
  export type ChangelogFilterQuery = {
6
7
  object?: string;
7
8
  objectName?: string;
@@ -0,0 +1,42 @@
1
+ import { MultiSelectOption } from '../types/options.type';
2
+ import { ApplicationModule } from '../types/tag.type';
3
+ export type FilterOptions = {
4
+ skuOptions?: MultiSelectOption[];
5
+ statusOptions?: MultiSelectOption[];
6
+ typeOptions?: MultiSelectOption[];
7
+ modifiedByOptions?: MultiSelectOption[];
8
+ fieldOptions?: MultiSelectOption[];
9
+ deviceNameOptions?: MultiSelectOption[];
10
+ nameOptions?: MultiSelectOption[];
11
+ userFullNameOptions?: MultiSelectOption[];
12
+ networkStatusOptions?: MultiSelectOption[];
13
+ brandOptions?: MultiSelectOption[];
14
+ modelOptions?: MultiSelectOption[];
15
+ moduleOptions?: MultiSelectOption[];
16
+ reportedByOptions?: MultiSelectOption[];
17
+ activityOptions?: MultiSelectOption[];
18
+ pairedInOptions?: MultiSelectOption[];
19
+ availabilityOptions?: MultiSelectOption[];
20
+ actionOptions?: MultiSelectOption[];
21
+ objectNameOptions?: MultiSelectOption[];
22
+ };
23
+ export type BooleanOptions = {
24
+ deviceNameOptions?: boolean;
25
+ nameOptions?: boolean;
26
+ userFullNameOptions?: boolean;
27
+ networkStatusOptions?: boolean;
28
+ brandOptions?: boolean;
29
+ modelOptions?: boolean;
30
+ moduleOptions?: boolean;
31
+ reportedByOptions?: boolean;
32
+ modifiedByOptions?: boolean;
33
+ fieldOptions?: boolean;
34
+ activityOptions?: boolean;
35
+ pairedInOptions?: boolean;
36
+ availabilityOptions?: boolean;
37
+ module?: ApplicationModule;
38
+ status?: string;
39
+ skuOptions?: boolean;
40
+ statusOptions?: boolean;
41
+ typeOptions?: boolean;
42
+ };
@@ -0,0 +1,99 @@
1
+ import { AntennaPortDetail, HardwareDataType, HardwareDetailDataType } from '../types/hardware.type';
2
+ import { MultiSelectOption } from '../types/options.type';
3
+ export interface HardwareFetchResponse<T = HardwareDataType> {
4
+ message: string;
5
+ status: number;
6
+ data: {
7
+ data: T[];
8
+ totalRecords: number;
9
+ };
10
+ }
11
+ export interface HardwareFetchDetailResponse<T = HardwareDetailDataType> {
12
+ message: string;
13
+ status: number;
14
+ data: T;
15
+ }
16
+ export type HardwareFetchOptionResponse<Opt = Record<string, boolean>> = Record<keyof Opt, MultiSelectOption[]>;
17
+ export interface HardwareShortFetchResponse<T = AntennaPortDetail> {
18
+ message: string;
19
+ status: number;
20
+ data: T[];
21
+ }
22
+ export type HardwareFilterRaw = {
23
+ deviceName?: number[];
24
+ name?: number[];
25
+ type?: string[];
26
+ readerGroup?: number[];
27
+ readerType?: string;
28
+ networkStatus?: string[];
29
+ brand?: number[];
30
+ model?: number[];
31
+ status?: string[];
32
+ tag?: string;
33
+ sku?: string[];
34
+ groupModule?: string[];
35
+ antennaGroupModule?: string[];
36
+ antennaGroup?: number[];
37
+ userFullName?: number[];
38
+ action?: string[];
39
+ reportedBy?: number[];
40
+ createdAt?: number[];
41
+ lastReportDate?: number[];
42
+ };
43
+ export type HardwareFilterQuery = Partial<Record<keyof HardwareFilterRaw, string>>;
44
+ export type HardwareDetailFilterRaw = {
45
+ date?: number[];
46
+ readerId?: string;
47
+ groupModule?: string[];
48
+ antennaGroupModule?: string[];
49
+ action?: string[];
50
+ userFullName?: number[];
51
+ modifiedBy?: number[];
52
+ isActive?: string[];
53
+ field?: string[];
54
+ };
55
+ export type HardwareDetailFilterQuery = Partial<Record<keyof HardwareDetailFilterRaw, string>>;
56
+ export type DetailTableFilterParams = {
57
+ createdAt?: string;
58
+ activity?: string;
59
+ assetName?: string;
60
+ assignedTo?: string;
61
+ borrower?: string;
62
+ type?: string;
63
+ condition?: string;
64
+ reportedBy?: string;
65
+ staff?: string;
66
+ manager?: string;
67
+ group?: string;
68
+ tag?: string;
69
+ };
70
+ export type DetailTableFilteredParams = Partial<Record<keyof DetailTableFilterParams, string>>;
71
+ export interface PutEditAliasName {
72
+ aliasName: string;
73
+ }
74
+ export interface PutEditReaderGroup {
75
+ fixedAssetGroup?: string;
76
+ supplyAssetGroup?: string;
77
+ receivingFixedAssetGroup?: string[];
78
+ receivingSupplyAssetGroup?: string[];
79
+ }
80
+ export interface PutEditAntennaGroup {
81
+ group: Omit<PutEditReaderGroup, 'receivingFixedAssetGroup' | 'receivingSupplyAssetGroup'>[];
82
+ }
83
+ export interface PutEditAntennaPower {
84
+ power: number[];
85
+ }
86
+ export interface PutEditPortStatus {
87
+ data: {
88
+ isActive: boolean;
89
+ port: number;
90
+ }[];
91
+ }
92
+ export interface PutPingReadersBody {
93
+ ids: string[];
94
+ }
95
+ export interface PutHardwareStatusBody {
96
+ status: 'Missing' | 'Damaged' | 'Available';
97
+ ids?: string[];
98
+ }
99
+ export type HardwareFormType = PutEditAliasName | PutEditAntennaGroup | PutEditAntennaPower | PutHardwareStatusBody | PutEditReaderGroup;
@@ -0,0 +1,52 @@
1
+ import { MultiSelectOption } from '../types/options.type';
2
+ import { ApplicationModule, TAGCountType, TAGDataType } from '../types/tag.type';
3
+ import { TAGDetailCount } from '../types/tagEventlog.type';
4
+ export interface TAGFetchResponse<T = TAGDataType> {
5
+ message: string;
6
+ status: number;
7
+ data: {
8
+ data: T[];
9
+ totalRecords: number;
10
+ } & TAGCountType;
11
+ }
12
+ export type TAGFetchOptionResponse<Opt = Record<string, boolean>> = Record<keyof Opt, MultiSelectOption[]>;
13
+ export type TAGDetailAuditResponse = {
14
+ status: number;
15
+ message: string;
16
+ data: {
17
+ detail: TAGDetailCount[];
18
+ };
19
+ };
20
+ export interface TAGFilterRaw {
21
+ rfidCode?: ('Yes' | 'No')[];
22
+ qrCode?: ('Yes' | 'No')[];
23
+ nfcCode?: ('Yes' | 'No')[];
24
+ sku?: string[];
25
+ type?: string[];
26
+ status?: string[];
27
+ pairedIn?: string[];
28
+ fixedAssetGroup?: number[];
29
+ supplyAssetGroup?: number[];
30
+ tag?: string[];
31
+ }
32
+ export type TAGFilterQuery = Partial<Record<keyof TAGFilterRaw, string>>;
33
+ export interface PUTAuditTAGBody {
34
+ ids: string[];
35
+ markNotFoundAsDamagedMissing: boolean;
36
+ moveFoundFixedAssetToPortal: boolean;
37
+ moveFoundSupplyAssetToPortal: boolean;
38
+ }
39
+ export interface PUTAllocateTAGBody {
40
+ ids: string[];
41
+ group?: number;
42
+ module?: ApplicationModule;
43
+ }
44
+ export type CombineSeparateActions = 'Combine RFID & QR' | 'Combine RFID & NFC' | 'Combine RFID & NFC & QR' | 'Combine NFC & QR' | 'Separate RFID & QR' | 'Separate RFID & NFC' | 'Separate RFID & NFC & QR' | 'Separate NFC & QR';
45
+ export interface PUTCombineTAGBody {
46
+ ids: {
47
+ rfid?: string;
48
+ nfc?: string;
49
+ qr?: string;
50
+ }[];
51
+ action: CombineSeparateActions;
52
+ }
@@ -0,0 +1,22 @@
1
+ import { FetchListResponse, FetchOptionResponse } from '../types/fetchResponse.type';
2
+ import { MultiSelectOption } from '../types/options.type';
3
+ import { ApplicationModule, TAGType } from '../types/tag.type';
4
+ import { TAGDetailCount, TAGEventlogData } from '../types/tagEventlog.type';
5
+ export interface TAGEventlogFilterQuery {
6
+ status?: string[];
7
+ modifiedBy?: number[];
8
+ type?: TAGType;
9
+ }
10
+ export type TAGEventlogFetchResponse = FetchListResponse<TAGEventlogData>;
11
+ export type TAGEventlogFetchOptionResponse = FetchOptionResponse<{
12
+ modifiedByOptions?: MultiSelectOption[];
13
+ }>;
14
+ export type TAGEventlogDetailResponse = {
15
+ status: number;
16
+ message: string;
17
+ data: {
18
+ type: 'Audit' | 'Allocation';
19
+ module?: ApplicationModule;
20
+ detail: TAGDetailCount[];
21
+ };
22
+ };
@@ -53,13 +53,14 @@ export interface GetUserOptionsParam {
53
53
  divisionOptions?: boolean;
54
54
  positionOptions?: boolean;
55
55
  modifiedByOptions?: boolean;
56
+ activeStatusOption?: boolean;
56
57
  }
57
58
  export interface PutToggleStatusUsersBody {
58
59
  user: string[];
59
60
  isActive: boolean;
60
61
  }
61
62
  export interface PostResendEmailBody {
62
- email: string[];
63
+ user: string[];
63
64
  }
64
65
  export interface PutChangePasswordBody {
65
66
  oldPassword: string;
@@ -0,0 +1,5 @@
1
+ import { AxiosResponse } from 'axios';
2
+ declare const _default: {
3
+ logout: () => Promise<AxiosResponse>;
4
+ };
5
+ export default _default;
@@ -0,0 +1,26 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { BooleanOptions } from '../dto/dataTable.dto';
3
+ import { HardwareFilterQuery } from '../dto/hardware.dto';
4
+ import { PUTAllocateTAGBody, PUTAuditTAGBody, PUTCombineTAGBody, TAGDetailAuditResponse, TAGFetchOptionResponse, TAGFetchResponse } from '../dto/tag.dto';
5
+ import { FetchResponse } from '../types/fetchResponse.type';
6
+ import { TAGType } from '../types/tag.type';
7
+ declare const GlobalTagServices: {
8
+ getTAGAllPaired: (tagType: TAGType, params?: HardwareFilterQuery) => Promise<AxiosResponse<TAGFetchResponse>>;
9
+ getTAGAllPairedOptions: (tagType: TAGType, params?: BooleanOptions) => Promise<AxiosResponse<{
10
+ data: TAGFetchOptionResponse;
11
+ }>>;
12
+ getTAGNotPaired: (tagType: TAGType, params?: HardwareFilterQuery) => Promise<AxiosResponse<TAGFetchResponse>>;
13
+ getTAGNotPairedOptions: (tagType: TAGType, params?: BooleanOptions) => Promise<AxiosResponse<{
14
+ data: TAGFetchOptionResponse;
15
+ }>>;
16
+ getScanTAG: (tagType: TAGType, params?: {
17
+ tag: string;
18
+ }) => Promise<AxiosResponse>;
19
+ putDetailAuditTAG: (tagType: TAGType, body: {
20
+ ids: string[];
21
+ }) => Promise<AxiosResponse<TAGDetailAuditResponse>>;
22
+ putAuditTAG: (tagType: TAGType, body: PUTAuditTAGBody) => Promise<AxiosResponse<FetchResponse>>;
23
+ putAllocateTAG: (tagType: TAGType, body: PUTAllocateTAGBody) => Promise<AxiosResponse<FetchResponse>>;
24
+ putCombineTAG: (body: PUTCombineTAGBody) => Promise<AxiosResponse<FetchResponse>>;
25
+ };
26
+ export default GlobalTagServices;
@@ -0,0 +1,35 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { BooleanOptions } from '../dto/dataTable.dto';
3
+ import { HardwareDetailFilterQuery, HardwareFetchDetailResponse, HardwareFetchOptionResponse, HardwareFetchResponse, HardwareFilterQuery, PutEditAliasName, PutEditAntennaGroup, PutEditAntennaPower, PutEditPortStatus, PutEditReaderGroup, PutHardwareStatusBody, PutPingReadersBody } from '../dto/hardware.dto';
4
+ import { AntennaPortDetail, HardwareDataType, HardwareDetailUserActivity } from '../types/hardware.type';
5
+ declare const HardwareServices: {
6
+ getHandheldReader: (params?: HardwareFilterQuery) => Promise<AxiosResponse<HardwareFetchResponse>>;
7
+ getHandheldReaderDetail: (handheldId?: string) => Promise<AxiosResponse<HardwareFetchDetailResponse>>;
8
+ getHandheldReaderOptions: (params?: BooleanOptions) => Promise<AxiosResponse<{
9
+ data: HardwareFetchOptionResponse;
10
+ }>>;
11
+ putMarkHandheldStatus: (body: PutHardwareStatusBody) => Promise<AxiosResponse>;
12
+ putPingReaders: (body: PutPingReadersBody) => Promise<AxiosResponse>;
13
+ putMarkIOTStatus: (body: PutHardwareStatusBody, subTab: "iot-reader" | "antenna") => Promise<AxiosResponse>;
14
+ putEditReaderGroup: (moduleTab: "iot" | "handheld", body: PutEditReaderGroup, hardwareId?: string) => Promise<AxiosResponse>;
15
+ putEditAntennaGroup: (body: PutEditAntennaGroup, hardwareId?: string) => Promise<AxiosResponse>;
16
+ putEditPortStatus: (body: PutEditPortStatus, hardwareId?: string) => Promise<AxiosResponse>;
17
+ putEditAliasName: (moduleTab: "iot" | "handheld", body: PutEditAliasName, hardwareId?: string) => Promise<AxiosResponse>;
18
+ putAntennaPower: (body: PutEditAntennaPower, iotId?: string) => Promise<AxiosResponse>;
19
+ getIOTReaderOrAntenna: (subTab: "iot-reader" | "antenna", params?: HardwareFilterQuery) => Promise<AxiosResponse<HardwareFetchResponse>>;
20
+ getIOTReaderDetail: (iotId?: string) => Promise<AxiosResponse<HardwareFetchDetailResponse>>;
21
+ getIOTReaderOrAntennaOptions: (subTab: "iot-reader" | "antenna", params?: BooleanOptions) => Promise<AxiosResponse<{
22
+ data: HardwareFetchOptionResponse;
23
+ }>>;
24
+ getActivityLog: (params?: HardwareFilterQuery) => Promise<AxiosResponse<HardwareFetchResponse<HardwareDataType>>>;
25
+ getActivityLogOptions: (params?: BooleanOptions) => Promise<AxiosResponse<{
26
+ data: HardwareFetchOptionResponse;
27
+ }>>;
28
+ getDetailActivityLog: (params?: HardwareDetailFilterQuery) => Promise<AxiosResponse<HardwareFetchResponse<HardwareDetailUserActivity>>>;
29
+ getDetailActivityLogOptions: (params?: BooleanOptions) => Promise<AxiosResponse<{
30
+ data: HardwareFetchOptionResponse;
31
+ }>>;
32
+ getExistingAliasNames: () => Promise<AxiosResponse>;
33
+ getIotReaderPort: (id: string, params?: HardwareDetailFilterQuery) => Promise<AxiosResponse<HardwareFetchResponse<AntennaPortDetail>>>;
34
+ };
35
+ export default HardwareServices;
@@ -0,0 +1,9 @@
1
+ import { AxiosResponse } from 'axios';
2
+ import { BooleanOptions } from '../dto/dataTable.dto';
3
+ import { TAGEventlogDetailResponse, TAGEventlogFetchOptionResponse, TAGEventlogFetchResponse, TAGEventlogFilterQuery } from '../dto/tagEventlog.dto';
4
+ declare const TagEventlogServices: {
5
+ getTAGEventlog: (params?: TAGEventlogFilterQuery) => Promise<AxiosResponse<TAGEventlogFetchResponse>>;
6
+ getTAGEventlogOptions: (params?: BooleanOptions) => Promise<AxiosResponse<TAGEventlogFetchOptionResponse>>;
7
+ getDetailTAGEventlog: (eventlogId?: string) => Promise<AxiosResponse<TAGEventlogDetailResponse>>;
8
+ };
9
+ export default TagEventlogServices;
@@ -0,0 +1,88 @@
1
+ export type HardwareTabType = 'activity-log' | 'handheld-damaged-missing' | 'handheld' | 'iot-reader' | 'iot-antenna' | 'iot-damaged-missing-reader' | 'iot-damaged-missing-antenna';
2
+ export type HardwareDetailTabType = 'All' | 'Tagging' | 'User' | 'Antenna' | 'Changelog';
3
+ export type ModuleGroup = {
4
+ _id: string;
5
+ key: number;
6
+ name: string;
7
+ module: 'fixedAsset' | 'supplyAsset';
8
+ };
9
+ export interface HardwareDataType {
10
+ _id: string;
11
+ imageSmall?: string;
12
+ imageBig?: string;
13
+ name: string;
14
+ sku: string;
15
+ aliasName?: string;
16
+ brand?: string;
17
+ model?: string;
18
+ type: string;
19
+ networkStatus?: 'Online' | 'Offline';
20
+ status: string;
21
+ createdAt?: string;
22
+ updatedAt?: string;
23
+ group?: ModuleGroup[];
24
+ antennaGroup?: {
25
+ port?: number;
26
+ groups?: ModuleGroup[];
27
+ }[];
28
+ activePort?: string;
29
+ reportedBy?: string;
30
+ lastReportDate?: string;
31
+ action?: string;
32
+ userFullName?: string;
33
+ readerName?: string;
34
+ }
35
+ export interface HardwareDetailDataType {
36
+ _id: string;
37
+ imageSmall?: string;
38
+ imageBig?: string;
39
+ readerName?: string;
40
+ serialNumber?: string;
41
+ name: {
42
+ _id: string;
43
+ nameWithSequence: string;
44
+ name: string;
45
+ key: number;
46
+ nameNumber?: number;
47
+ };
48
+ aliasName?: string;
49
+ networkStatus?: 'Online' | 'Offline';
50
+ lastReportDate?: string;
51
+ group?: ModuleGroup[];
52
+ brand?: {
53
+ name?: string;
54
+ key?: number;
55
+ };
56
+ model?: {
57
+ name?: string;
58
+ key?: number;
59
+ };
60
+ manager?: {
61
+ _id: string;
62
+ name?: string;
63
+ key?: number;
64
+ };
65
+ type: string;
66
+ status: string;
67
+ key: number;
68
+ }
69
+ export interface AntennaPortDetail {
70
+ _id: number;
71
+ isActive: boolean;
72
+ port: string;
73
+ group: ModuleGroup[];
74
+ antennaPower: string;
75
+ powerInt: number;
76
+ invalid?: boolean;
77
+ }
78
+ export interface HardwareDetailUserActivity {
79
+ _id: string;
80
+ createdAt: string;
81
+ userFullName?: string;
82
+ action?: string;
83
+ objectName?: string;
84
+ field?: string;
85
+ oldValue?: string;
86
+ newValue?: string;
87
+ modifiedBy?: string;
88
+ }
@@ -0,0 +1,28 @@
1
+ export type TAGType = 'rfid' | 'nfc' | 'qr';
2
+ export type TAGTabType = 'all' | 'paired' | 'not-paired' | 'combine-tag';
3
+ export type ApplicationModule = 'Settings Portal' | 'Fixed Asset' | 'Supply Asset';
4
+ export interface TAGCountType {
5
+ settingsPortalAvailable?: number;
6
+ settingsPortalDamagedMissing?: number;
7
+ fixedAssetAvailable?: number;
8
+ fixedAssetDamagedMissing?: number;
9
+ supplyAssetAvailable?: number;
10
+ supplyAssetDamagedMissing?: number;
11
+ }
12
+ export interface TAGDataType {
13
+ _id: string;
14
+ rfidCode: string;
15
+ nfcCode: string;
16
+ qrCode: string;
17
+ sku: string;
18
+ type: 'Asset TAG' | 'User TAG';
19
+ status: 'Available' | 'Paired' | 'Damaged/Missing';
20
+ pairedIn: ApplicationModule;
21
+ }
22
+ export interface TAGInfomartion {
23
+ _id: '662f63b17adde9b58b0eb152';
24
+ rfidCode: 'E*40B105';
25
+ nfcCode: 'B*EASD';
26
+ qrCode: 'C*EASDF';
27
+ module: 'Fixed Asset';
28
+ }
@@ -0,0 +1,19 @@
1
+ export interface TAGEventlogData {
2
+ _id: string;
3
+ status?: 'Audit' | 'Allocate';
4
+ activity?: string;
5
+ totalTagScanned: number;
6
+ modifiedBy?: string;
7
+ createdAt: string;
8
+ }
9
+ export interface TAGDetailCount {
10
+ type: 'availableFound' | 'damagedMissingFound' | 'availableMarkDamagedMissing' | 'fixedAssetMoveToPortal' | 'supplyAssetMoveToPortal' | 'allocated';
11
+ isChecked?: boolean;
12
+ groupName?: string;
13
+ rfid?: number;
14
+ nfc?: number;
15
+ rfidQr?: number;
16
+ nfcQr?: number;
17
+ rfidNfc?: number;
18
+ rfidNfcQr?: number;
19
+ }