import { IntranetDashboardDto, SocialCommentDto, SocialPostDto } from '@/proxy/intranet/models' import apiService, { Config } from './api.service' 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) => apiService.fetchData( { method: 'GET', url: '/api/app/intranet/intranet-dashboard', }, { apiName: this.apiName, ...config }, ) createSurveyResponse = ( surveyId: string, answers: { questionId: string; questionType: string; value: string }[], config?: Partial, ) => apiService.fetchData( { method: 'POST', url: '/api/app/intranet/survey-response', data: { surveyId, answers }, }, { apiName: this.apiName, ...config }, ) createSocialPost = (input: CreateSocialPostInput, config?: Partial) => apiService.fetchData( { method: 'POST', url: '/api/app/intranet/social-post', data: input, }, { apiName: this.apiName, ...config }, ) deleteSocialPost = (id: string, config?: Partial) => apiService.fetchData( { method: 'DELETE', url: `/api/app/intranet/${id}/social-post`, }, { apiName: this.apiName, ...config }, ) likeSocialPost = (id: string, config?: Partial) => apiService.fetchData( { method: 'POST', url: `/api/app/intranet/like-social-post`, params: { id }, }, { apiName: this.apiName, ...config }, ) commentSocialPost = (id: string, content: string, config?: Partial) => apiService.fetchData( { method: 'POST', url: `/api/app/intranet/comment-social-post`, params: { id, content }, }, { apiName: this.apiName, ...config }, ) voteSocialPoll = (postId: string, optionId: string, config?: Partial) => apiService.fetchData( { method: 'POST', url: `/api/app/intranet/vote-social-poll`, params: { postId, optionId }, }, { apiName: this.apiName, ...config }, ) incrementAnnouncementViewCount = (id: string, config?: Partial) => apiService.fetchData( { method: 'POST', url: `/api/app/intranet/${id}/announcement-view`, }, { apiName: this.apiName, ...config }, ) } export const intranetService = new IntranetService()