Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | import { useQueryClient } from '@tanstack/react-query'; import { useIntl } from 'react-intl'; import { useSnackbars } from '@allshares/studio-design-system'; import { useMutation } from '@amalia/ext/react-query'; import { type Plan, type Rule, type RuleTemplatePerformanceSharePlan, type RuleTemplateSingleRateCommission, } from '@amalia/payout-definition/plans/types'; import { plansForecastQueryKeys } from '../plan-forecast/plan-forecast.keys'; import { plansQueryKeys, rulesV2QueryKeys } from '../queries.keys'; import { variablesQueryKeys } from '../variables/variables.keys'; import { RuleTemplatesApiClient } from './rule-templates.api-client'; import { ruleTemplateMutationKeys } from './rule-templates.keys'; export const useApplyPerformanceSharePlanTemplateToRule = (planId: Plan['id'], ruleId: Rule['id']) => { const queryClient = useQueryClient(); const { formatMessage } = useIntl(); const { snackSuccess, snackError } = useSnackbars(); return useMutation({ mutationKey: ruleTemplateMutationKeys.applyPerformanceSharePlanTemplate(ruleId), mutationFn: (ruleTemplatePerformanceSharePlan: RuleTemplatePerformanceSharePlan) => RuleTemplatesApiClient.applyPerformanceSharePlanTemplateToRule(planId, ruleId, ruleTemplatePerformanceSharePlan), onSuccess: async () => { snackSuccess(formatMessage({ defaultMessage: 'Performance share plan template applied successfully.' })); await Promise.all([ queryClient.invalidateQueries({ queryKey: variablesQueryKeys.all() }), queryClient.invalidateQueries({ queryKey: rulesV2QueryKeys.configurations.ofPlan.details(planId, ruleId) }), queryClient.invalidateQueries({ queryKey: plansQueryKeys.template.all(), }), queryClient.invalidateQueries({ queryKey: plansForecastQueryKeys.details(planId) }), ]); }, onError: (err) => { snackError( formatMessage( { defaultMessage: 'An error occured while applying performance share plan template: {errorMessage}.' }, { errorMessage: err.message }, ), ); }, }); }; export const useApplySingleRateCommissionTemplateToRule = (planId: Plan['id'], ruleId: Rule['id']) => { const queryClient = useQueryClient(); const { formatMessage } = useIntl(); const { snackSuccess, snackError } = useSnackbars(); return useMutation({ mutationKey: ruleTemplateMutationKeys.applySingleRateCommissionTemplate(ruleId), mutationFn: (ruleTemplateSingleRateCommission: RuleTemplateSingleRateCommission) => RuleTemplatesApiClient.applySingleRateCommissionTemplateToRule(planId, ruleId, ruleTemplateSingleRateCommission), onSuccess: async () => { snackSuccess(formatMessage({ defaultMessage: 'Single rate commission template applied successfully.' })); await Promise.all([ queryClient.invalidateQueries({ queryKey: variablesQueryKeys.all() }), queryClient.invalidateQueries({ queryKey: rulesV2QueryKeys.configurations.ofPlan.details(planId, ruleId) }), queryClient.invalidateQueries({ queryKey: plansQueryKeys.template.all(), }), queryClient.invalidateQueries({ queryKey: plansForecastQueryKeys.details(planId) }), ]); }, onError: (err) => { snackError( formatMessage( { defaultMessage: 'An error occured while applying single rate commission template: {errorMessage}.' }, { errorMessage: err.message }, ), ); }, }); }; |