UNPKG

@explorins/pers-sdk

Version:

Platform-agnostic SDK for PERS (Phygital Experience Rewards System)

89 lines (77 loc) 2.46 kB
import { BusinessApi } from '../api/business-api'; import { BusinessDTO, BusinessTypeDTO, BusinessUpdateRequestDTO } from '../models'; /** * Platform-Agnostic Business Service * * Contains business logic and operations that work across platforms. * No framework dependencies - pure TypeScript business logic. * * Focuses only on actual backend capabilities. */ export class BusinessService { constructor(private businessApi: BusinessApi) {} /** * Get all active businesses */ async getActiveBusinesses(): Promise<BusinessDTO[]> { return this.businessApi.getActiveBusinesses(); } /** * Get all business types */ async getAllBusinessTypes(): Promise<BusinessTypeDTO[]> { return this.businessApi.getAllBusinessTypes(); } /** * Get business by ID */ async getBusinessById(businessId: string): Promise<BusinessDTO> { return this.businessApi.getBusinessById(businessId); } /** * Get business by account address */ async getBusinessByAccount(accountAddress: string): Promise<BusinessDTO> { return this.businessApi.getBusinessByAccount(accountAddress); } /** * Get businesses by type (client-side filtering) */ async getBusinessesByType(typeId: string): Promise<BusinessDTO[]> { const businesses = await this.getActiveBusinesses(); return businesses.filter(business => business.businessType && business.businessType.id === parseInt(typeId) ); } // ========================================== // ADMIN OPERATIONS // ========================================== /** * ADMIN: Get all businesses (active and inactive) */ async getAllBusinesses(): Promise<BusinessDTO[]> { return this.businessApi.getAllBusinesses(); } /** * ADMIN: Create business by display name */ async createBusinessByDisplayName(displayName: string): Promise<BusinessDTO> { return this.businessApi.createBusinessByDisplayName(displayName); } /** * ADMIN: Update business */ async updateBusiness(id: string, businessData: BusinessUpdateRequestDTO): Promise<BusinessDTO> { return this.businessApi.updateBusiness(id, businessData); } /** * ADMIN: Toggle business active status */ async toggleBusinessActive(id: string, isActive: boolean): Promise<BusinessDTO> { return this.businessApi.toggleBusinessActive(id, isActive); } }