@explorins/pers-sdk
Version:
Platform-agnostic SDK for PERS (Phygital Experience Rewards System)
89 lines (77 loc) • 2.46 kB
text/typescript
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);
}
}