sozsoft-platform/ui/src/services/intranet.service.ts

101 lines
2.7 KiB
TypeScript
Raw Normal View History

2026-05-06 13:47:18 +00:00
import { IntranetDashboardDto, SocialCommentDto, SocialPostDto } from '@/proxy/intranet/models'
import apiService, { Config } from './api.service'
2026-05-06 13:47:18 +00:00
export interface CreateSocialPostInput {
content: string
locationJson?: string
media?: {
type: 'image' | 'video' | 'poll'
urls?: string[]
pollQuestion?: string
pollOptions?: { text: string }[]
}
}
export class IntranetService {
apiName = 'Default'
getDashboard = (config?: Partial<Config>) =>
apiService.fetchData<IntranetDashboardDto>(
{
method: 'GET',
url: '/api/app/intranet/intranet-dashboard',
},
{ apiName: this.apiName, ...config },
)
2026-05-06 07:54:04 +00:00
2026-05-06 13:47:18 +00:00
createSurveyResponse = (
2026-05-06 07:54:04 +00:00
surveyId: string,
answers: { questionId: string; questionType: string; value: string }[],
config?: Partial<Config>,
) =>
apiService.fetchData<void>(
{
method: 'POST',
2026-05-06 13:47:18 +00:00
url: '/api/app/intranet/survey-response',
2026-05-06 07:54:04 +00:00
data: { surveyId, answers },
},
{ apiName: this.apiName, ...config },
)
2026-05-06 13:47:18 +00:00
createSocialPost = (input: CreateSocialPostInput, config?: Partial<Config>) =>
apiService.fetchData<SocialPostDto, CreateSocialPostInput>(
{
method: 'POST',
url: '/api/app/intranet/social-post',
data: input,
},
{ apiName: this.apiName, ...config },
)
deleteSocialPost = (id: string, config?: Partial<Config>) =>
apiService.fetchData<void>(
{
method: 'DELETE',
url: `/api/app/intranet/${id}/social-post`,
},
{ apiName: this.apiName, ...config },
)
likeSocialPost = (id: string, config?: Partial<Config>) =>
apiService.fetchData<SocialPostDto>(
{
method: 'POST',
url: `/api/app/intranet/like-social-post`,
params: { id },
},
{ apiName: this.apiName, ...config },
)
commentSocialPost = (id: string, content: string, config?: Partial<Config>) =>
apiService.fetchData<SocialCommentDto>(
{
method: 'POST',
url: `/api/app/intranet/comment-social-post`,
params: { id, content },
},
{ apiName: this.apiName, ...config },
)
voteSocialPoll = (postId: string, optionId: string, config?: Partial<Config>) =>
apiService.fetchData<void>(
{
method: 'POST',
url: `/api/app/intranet/vote-social-poll`,
params: { postId, optionId },
},
{ apiName: this.apiName, ...config },
)
incrementAnnouncementViewCount = (id: string, config?: Partial<Config>) =>
apiService.fetchData<void>(
{
method: 'POST',
url: `/api/app/intranet/${id}/announcement-view`,
},
{ apiName: this.apiName, ...config },
)
}
export const intranetService = new IntranetService()