export interface ThAppBoundLocationDto { id: string; locationCode: string; locationName: string; fullAddress: string; state: boolean; } export interface ThAppLoginInput { tenantId: string; email: string; password: string; uuid?: string; code?: string; } export interface ThAppLoginOutputDto { token: string; refreshToken: string; tenantId: string; tenantName: string; locations: ThAppBoundLocationDto[]; } function normalizeLocation(raw: Record): ThAppBoundLocationDto { return { id: String(raw.id ?? raw.Id ?? ''), locationCode: String(raw.locationCode ?? raw.LocationCode ?? ''), locationName: String(raw.locationName ?? raw.LocationName ?? ''), fullAddress: String(raw.fullAddress ?? raw.FullAddress ?? ''), state: raw.state !== false && raw.State !== false, }; } function normalizeAppLoginOutput(raw: unknown): ThAppLoginOutputDto { const o = raw && typeof raw === 'object' ? (raw as Record) : {}; const locs = o.locations ?? o.Locations; const arr = Array.isArray(locs) ? locs : []; return { token: String(o.token ?? o.Token ?? ''), refreshToken: String(o.refreshToken ?? o.RefreshToken ?? ''), tenantId: String(o.tenantId ?? o.TenantId ?? ''), tenantName: String(o.tenantName ?? o.TenantName ?? ''), locations: arr.map((x) => normalizeLocation(x as Record)), }; } function normalizeLocationList(raw: unknown): ThAppBoundLocationDto[] { const arr = Array.isArray(raw) ? raw : []; return arr.map((x) => normalizeLocation(x as Record)); } /** POST /api/app/th-app-auth/login */ export async function thAppLogin( input: ThAppLoginInput, ): Promise { const { requestClient } = await import('#/api/request'); const raw = await requestClient.post( 'th-app-auth/login', { tenantId: input.tenantId, email: input.email.trim(), password: input.password, ...(input.uuid ? { uuid: input.uuid } : {}), ...(input.code != null && input.code !== '' ? { code: input.code } : {}), }, { errorMessageMode: 'none', headers: { __tenant: input.tenantId, }, successMessageMode: 'none', }, ); return normalizeAppLoginOutput(raw); } /** GET /api/app/th-app-auth/my-locations */ export async function thAppMyLocations(): Promise { const { requestClient } = await import('#/api/request'); const raw = await requestClient.get('th-app-auth/my-locations'); return normalizeLocationList(raw); }