Add relation for Company on people show page note creation (#1418)
* - added additional entity(company) for people * - moved getRelationData to util function * - remove recursion * typo
This commit is contained in:
@ -16,10 +16,8 @@ import { GET_ACTIVITIES_BY_TARGETS } from '../graphql/queries/getActivitiesByTar
|
||||
import { GET_ACTIVITY } from '../graphql/queries/getActivity';
|
||||
import { activityTargetableEntityArrayState } from '../states/activityTargetableEntityArrayState';
|
||||
import { viewableActivityIdState } from '../states/viewableActivityIdState';
|
||||
import {
|
||||
ActivityTargetableEntity,
|
||||
ActivityTargetableEntityType,
|
||||
} from '../types/ActivityTargetableEntity';
|
||||
import { ActivityTargetableEntity } from '../types/ActivityTargetableEntity';
|
||||
import { getRelationData } from '../utils/getRelationData';
|
||||
|
||||
export function useOpenCreateActivityDrawer() {
|
||||
const { openRightDrawer } = useRightDrawer();
|
||||
@ -37,6 +35,7 @@ export function useOpenCreateActivityDrawer() {
|
||||
entities?: ActivityTargetableEntity[],
|
||||
) {
|
||||
const now = new Date().toISOString();
|
||||
|
||||
return createActivityMutation({
|
||||
variables: {
|
||||
data: {
|
||||
@ -48,20 +47,7 @@ export function useOpenCreateActivityDrawer() {
|
||||
type: type,
|
||||
activityTargets: {
|
||||
createMany: {
|
||||
data: entities
|
||||
? entities.map((entity) => ({
|
||||
companyId:
|
||||
entity.type === ActivityTargetableEntityType.Company
|
||||
? entity.id
|
||||
: null,
|
||||
personId:
|
||||
entity.type === ActivityTargetableEntityType.Person
|
||||
? entity.id
|
||||
: null,
|
||||
id: v4(),
|
||||
createdAt: now,
|
||||
}))
|
||||
: [],
|
||||
data: entities ? getRelationData(entities) : [],
|
||||
skipDuplicates: true,
|
||||
},
|
||||
},
|
||||
|
||||
@ -6,4 +6,5 @@ export enum ActivityTargetableEntityType {
|
||||
export type ActivityTargetableEntity = {
|
||||
id: string;
|
||||
type: ActivityTargetableEntityType;
|
||||
relatedEntities?: ActivityTargetableEntity[];
|
||||
};
|
||||
|
||||
43
front/src/modules/activities/utils/getRelationData.ts
Normal file
43
front/src/modules/activities/utils/getRelationData.ts
Normal file
@ -0,0 +1,43 @@
|
||||
import { v4 } from 'uuid';
|
||||
|
||||
import { ActivityTargetCreateManyActivityInput } from '~/generated/graphql';
|
||||
|
||||
import {
|
||||
ActivityTargetableEntity,
|
||||
ActivityTargetableEntityType,
|
||||
} from '../types/ActivityTargetableEntity';
|
||||
|
||||
export function getRelationData(
|
||||
entities: ActivityTargetableEntity[],
|
||||
): ActivityTargetCreateManyActivityInput[] {
|
||||
const now = new Date().toISOString();
|
||||
|
||||
const relationData: ActivityTargetCreateManyActivityInput[] = [];
|
||||
for (const entity of entities ?? []) {
|
||||
relationData.push({
|
||||
companyId:
|
||||
entity.type === ActivityTargetableEntityType.Company ? entity.id : null,
|
||||
personId:
|
||||
entity.type === ActivityTargetableEntityType.Person ? entity.id : null,
|
||||
id: v4(),
|
||||
createdAt: now,
|
||||
});
|
||||
if (entity.relatedEntities) {
|
||||
for (const relatedEntity of entity.relatedEntities ?? []) {
|
||||
relationData.push({
|
||||
companyId:
|
||||
relatedEntity.type === ActivityTargetableEntityType.Company
|
||||
? relatedEntity.id
|
||||
: null,
|
||||
personId:
|
||||
relatedEntity.type === ActivityTargetableEntityType.Person
|
||||
? relatedEntity.id
|
||||
: null,
|
||||
id: v4(),
|
||||
createdAt: now,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return relationData;
|
||||
}
|
||||
@ -95,6 +95,14 @@ export function PersonShow() {
|
||||
entity={{
|
||||
id: person.id,
|
||||
type: ActivityTargetableEntityType.Person,
|
||||
relatedEntities: person.company?.id
|
||||
? [
|
||||
{
|
||||
id: person.company?.id,
|
||||
type: ActivityTargetableEntityType.Company,
|
||||
},
|
||||
]
|
||||
: undefined,
|
||||
}}
|
||||
/>
|
||||
</RecoilScope>
|
||||
@ -140,6 +148,14 @@ export function PersonShow() {
|
||||
entity={{
|
||||
id: person.id ?? '',
|
||||
type: ActivityTargetableEntityType.Person,
|
||||
relatedEntities: person.company?.id
|
||||
? [
|
||||
{
|
||||
id: person.company?.id,
|
||||
type: ActivityTargetableEntityType.Company,
|
||||
},
|
||||
]
|
||||
: undefined,
|
||||
}}
|
||||
timeline
|
||||
tasks
|
||||
|
||||
Reference in New Issue
Block a user