erp-platform/ui/src/services/reports.service.ts
2025-08-15 22:39:11 +03:00

139 lines
4 KiB
TypeScript

import {
ReportTemplateDto,
ReportGeneratedDto,
CreateReportTemplateDto,
UpdateReportTemplateDto,
ReportGenerateDto,
ReportCategoryDto,
GetReportTemplatesInput, // backend'deki GenerateReportDto (templateId + parameters)
} from '@/proxy/reports/models'
import apiService from './api.service'
import { PagedAndSortedResultRequestDto, PagedResultDto } from '@/proxy'
export interface ReportsData {
templates: ReportTemplateDto[]
generatedReports: ReportGeneratedDto[]
}
export class ReportsService {
apiName = 'Default'
getCategories = () =>
apiService.fetchData<ReportCategoryDto[]>(
{
method: 'GET',
url: '/api/app/report/categories',
},
{ apiName: this.apiName },
)
// TEMPLATES
getTemplates = (input: GetReportTemplatesInput) =>
apiService.fetchData<PagedResultDto<ReportTemplateDto>, PagedAndSortedResultRequestDto>(
{
method: 'GET',
url: '/api/app/report/templates', // ✔ Swagger: GET /api/app/report/templates
params: {
sorting: input.sorting,
skipCount: input.skipCount,
maxResultCount: input.maxResultCount,
filter: input.filter,
categoryName: input.categoryName,
},
},
{ apiName: this.apiName },
)
getTemplateById = (id: string) =>
apiService.fetchData<ReportTemplateDto>(
{
method: 'GET',
url: `/api/app/report/${id}/template`, // ✔ Swagger: GET /api/app/report/{id}/template
},
{ apiName: this.apiName },
)
createTemplate = (input: CreateReportTemplateDto) =>
apiService.fetchData<ReportTemplateDto, CreateReportTemplateDto>(
{
method: 'POST',
url: '/api/app/report/template', // ✔ Swagger: POST /api/app/report/template
data: input,
},
{ apiName: this.apiName },
)
updateTemplate = (id: string, input: UpdateReportTemplateDto) =>
apiService.fetchData<ReportTemplateDto, UpdateReportTemplateDto>(
{
method: 'PUT',
url: `/api/app/report/${id}/template`, // ✔ Swagger: PUT /api/app/report/{id}/template
data: input,
},
{ apiName: this.apiName },
)
deleteTemplate = (id: string) =>
apiService.fetchData(
{
method: 'DELETE',
url: `/api/app/report/${id}/template`, // ✔ Swagger: DELETE /api/app/report/{id}/template
},
{ apiName: this.apiName },
)
// GENERATED REPORTS
getGeneratedReports = (input: PagedAndSortedResultRequestDto) =>
apiService.fetchData<PagedResultDto<ReportGeneratedDto>, PagedAndSortedResultRequestDto>(
{
method: 'GET',
url: '/api/app/report/generated-reports', // ✔ Swagger: GET /api/app/report/generated-reports
params: {
sorting: input.sorting,
skipCount: input.skipCount,
maxResultCount: input.maxResultCount,
},
},
{ apiName: this.apiName },
)
getGeneratedReportById = (id: string) =>
apiService.fetchData<ReportGeneratedDto>(
{
method: 'GET',
url: `/api/app/report/${id}/generated-report`, // ✔ Swagger: GET /api/app/report/{id}/generated-report
},
{ apiName: this.apiName },
)
generateReport = (input: ReportGenerateDto) =>
apiService.fetchData<ReportGeneratedDto, ReportGenerateDto>(
{
method: 'POST',
url: '/api/app/report/generate-report', // ✔ Swagger: POST /api/app/report/generate-report
data: input,
},
{ apiName: this.apiName },
)
deleteGeneratedReport = (id: string) =>
apiService.fetchData(
{
method: 'DELETE',
url: `/api/app/report/${id}/generated-report`, // ✔ Swagger: DELETE /api/app/report/{id}/generated-report
},
{ apiName: this.apiName },
)
// BULK
getAllData = () =>
apiService.fetchData<ReportsData>(
{
method: 'GET',
url: '/api/app/report/data', // ✔ Swagger: GET /api/app/report/data
},
{ apiName: this.apiName },
)
}
export default ReportsService