11import { useMutation , useQuery , useQueryClient } from 'react-query' ;
2- import { Milestone , FrequentlyAskedQuestion } from 'shared' ;
2+ import { Milestone , FrequentlyAskedQuestion , GuestDefinition , GuestDefinitionType } from 'shared' ;
33import {
44 createFaq ,
5+ createGuestDefinition ,
56 createMilestone ,
67 deleteFaq ,
8+ deleteGuestDefinition ,
79 deleteMilestone ,
810 editFaq ,
11+ editGuestDefinition ,
912 editMilestone ,
1013 getAllFaqs ,
14+ getAllGuestDefinitions ,
1115 getAllMilestones
1216} from '../apis/recruitment.api' ;
1317
@@ -22,6 +26,16 @@ export interface FaqPayload {
2226 answer : string ;
2327}
2428
29+ export interface GuestDefinitionPayload {
30+ term : string ;
31+ description : string ;
32+ order : number ;
33+ type : GuestDefinitionType ;
34+ icon ?: string ;
35+ buttonText ?: string ;
36+ buttonLink ?: string ;
37+ }
38+
2539export const useAllMilestones = ( ) => {
2640 return useQuery < Milestone [ ] , Error > ( [ 'milestones' ] , async ( ) => {
2741 const { data } = await getAllMilestones ( ) ;
@@ -131,3 +145,58 @@ export const useDeleteFAQ = () => {
131145 }
132146 ) ;
133147} ;
148+
149+ export const useAllGuestDefinitions = ( ) => {
150+ return useQuery < GuestDefinition [ ] , Error > ( [ 'guestdefinitions' ] , async ( ) => {
151+ const { data } = await getAllGuestDefinitions ( ) ;
152+ return data ;
153+ } ) ;
154+ } ;
155+
156+ export const useDeleteGuestDefinition = ( ) => {
157+ const queryClient = useQueryClient ( ) ;
158+ return useMutation < { message : string } , Error , any > (
159+ [ 'guestdefinitions' , 'delete' ] ,
160+ async ( definitionId : string ) => {
161+ const { data } = await deleteGuestDefinition ( definitionId ) ;
162+ return data ;
163+ } ,
164+ {
165+ onSuccess : ( ) => {
166+ queryClient . invalidateQueries ( [ 'guestdefinitions' ] ) ;
167+ }
168+ }
169+ ) ;
170+ } ;
171+
172+ export const useCreateGuestDefinition = ( ) => {
173+ const queryClient = useQueryClient ( ) ;
174+ return useMutation < GuestDefinition , Error , GuestDefinitionPayload > (
175+ [ 'guestdefinitions' , 'create' ] ,
176+ async ( payload ) => {
177+ const { data } = await createGuestDefinition ( payload ) ;
178+ return data ;
179+ } ,
180+ {
181+ onSuccess : ( ) => {
182+ queryClient . invalidateQueries ( [ 'guestdefinitions' ] ) ;
183+ }
184+ }
185+ ) ;
186+ } ;
187+
188+ export const useEditGuestDefinitions = ( id : string ) => {
189+ const queryClient = useQueryClient ( ) ;
190+ return useMutation < GuestDefinition , Error , GuestDefinitionPayload > (
191+ [ 'guestdefinitions' , 'edit' ] ,
192+ async ( payload ) => {
193+ const { data } = await editGuestDefinition ( payload , id ) ;
194+ return data ;
195+ } ,
196+ {
197+ onSuccess : ( ) => {
198+ queryClient . invalidateQueries ( [ 'guestdefinitions' ] ) ;
199+ }
200+ }
201+ ) ;
202+ } ;
0 commit comments