105 lines
2.9 KiB
TypeScript
105 lines
2.9 KiB
TypeScript
import type { AgentsFields, AgentsRewardConditionsFields, AgentsSumFields } from './types';
|
|
import * as CRMTypes from '@/graphql/crm.types';
|
|
import type RootStore from '@/stores/root';
|
|
import type { ApolloClient } from '@apollo/client';
|
|
import dayjs from 'dayjs';
|
|
import utc from 'dayjs/plugin/utc';
|
|
import { reaction } from 'mobx';
|
|
import { normalizeOptions } from 'tools/entity';
|
|
import { makeDisposable } from 'tools/mobx';
|
|
|
|
dayjs.extend(utc);
|
|
|
|
export function fillAgentRewardReaction(
|
|
store: RootStore,
|
|
apolloClient: ApolloClient<object>,
|
|
agentParams: {
|
|
agentField: AgentsFields;
|
|
rewardConditionField: AgentsRewardConditionsFields;
|
|
}
|
|
) {
|
|
const { $calculation } = store;
|
|
const { agentField, rewardConditionField } = agentParams;
|
|
|
|
reaction(
|
|
() => $calculation.element(agentField).getValue(),
|
|
async (agentid) => {
|
|
if (!agentid) {
|
|
$calculation.element(rewardConditionField).reset();
|
|
|
|
return;
|
|
}
|
|
const {
|
|
data: { evo_reward_conditions },
|
|
} = await apolloClient.query({
|
|
query: CRMTypes.GetRewardConditionsDocument,
|
|
variables: {
|
|
agentid,
|
|
currentDate: dayjs().utc(false).format('YYYY-MM-DD'),
|
|
},
|
|
});
|
|
|
|
if (evo_reward_conditions?.length) {
|
|
$calculation
|
|
.element(rewardConditionField)
|
|
.setOptions(normalizeOptions(evo_reward_conditions));
|
|
} else {
|
|
$calculation.element(rewardConditionField).reset();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
export function fillAgentRewardSummReaction(
|
|
store: RootStore,
|
|
apolloClient: ApolloClient<object>,
|
|
agentParams: {
|
|
rewardConditionField: AgentsRewardConditionsFields;
|
|
rewardSummField: AgentsSumFields;
|
|
}
|
|
) {
|
|
const { $calculation, $process } = store;
|
|
const { rewardConditionField, rewardSummField } = agentParams;
|
|
|
|
makeDisposable(
|
|
() =>
|
|
reaction(
|
|
() => $calculation.element(rewardConditionField).getValue(),
|
|
async (rewardConditionId) => {
|
|
if (!rewardConditionId) {
|
|
$calculation.element(rewardSummField).reset();
|
|
|
|
return;
|
|
}
|
|
|
|
const {
|
|
data: { evo_reward_condition },
|
|
} = await apolloClient.query({
|
|
query: CRMTypes.GetRewardConditionDocument,
|
|
variables: {
|
|
conditionId: rewardConditionId,
|
|
},
|
|
});
|
|
|
|
if (evo_reward_condition?.evo_reward_summ) {
|
|
$calculation.element(rewardSummField).setValue(evo_reward_condition.evo_reward_summ);
|
|
} else {
|
|
$calculation.element(rewardSummField).resetValue();
|
|
}
|
|
}
|
|
),
|
|
() => $process.has('LoadKP')
|
|
);
|
|
|
|
reaction(
|
|
() => $calculation.element(rewardConditionField).getValue(),
|
|
(rewardConditionId) => {
|
|
if (rewardConditionId) {
|
|
$calculation.element(rewardSummField).unblock();
|
|
} else {
|
|
$calculation.element(rewardSummField).block();
|
|
}
|
|
}
|
|
);
|
|
}
|