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 { GET_ACTIVITY } from '../graphql/queries/getActivity';
|
||||||
import { activityTargetableEntityArrayState } from '../states/activityTargetableEntityArrayState';
|
import { activityTargetableEntityArrayState } from '../states/activityTargetableEntityArrayState';
|
||||||
import { viewableActivityIdState } from '../states/viewableActivityIdState';
|
import { viewableActivityIdState } from '../states/viewableActivityIdState';
|
||||||
import {
|
import { ActivityTargetableEntity } from '../types/ActivityTargetableEntity';
|
||||||
ActivityTargetableEntity,
|
import { getRelationData } from '../utils/getRelationData';
|
||||||
ActivityTargetableEntityType,
|
|
||||||
} from '../types/ActivityTargetableEntity';
|
|
||||||
|
|
||||||
export function useOpenCreateActivityDrawer() {
|
export function useOpenCreateActivityDrawer() {
|
||||||
const { openRightDrawer } = useRightDrawer();
|
const { openRightDrawer } = useRightDrawer();
|
||||||
@ -37,6 +35,7 @@ export function useOpenCreateActivityDrawer() {
|
|||||||
entities?: ActivityTargetableEntity[],
|
entities?: ActivityTargetableEntity[],
|
||||||
) {
|
) {
|
||||||
const now = new Date().toISOString();
|
const now = new Date().toISOString();
|
||||||
|
|
||||||
return createActivityMutation({
|
return createActivityMutation({
|
||||||
variables: {
|
variables: {
|
||||||
data: {
|
data: {
|
||||||
@ -48,20 +47,7 @@ export function useOpenCreateActivityDrawer() {
|
|||||||
type: type,
|
type: type,
|
||||||
activityTargets: {
|
activityTargets: {
|
||||||
createMany: {
|
createMany: {
|
||||||
data: entities
|
data: entities ? getRelationData(entities) : [],
|
||||||
? entities.map((entity) => ({
|
|
||||||
companyId:
|
|
||||||
entity.type === ActivityTargetableEntityType.Company
|
|
||||||
? entity.id
|
|
||||||
: null,
|
|
||||||
personId:
|
|
||||||
entity.type === ActivityTargetableEntityType.Person
|
|
||||||
? entity.id
|
|
||||||
: null,
|
|
||||||
id: v4(),
|
|
||||||
createdAt: now,
|
|
||||||
}))
|
|
||||||
: [],
|
|
||||||
skipDuplicates: true,
|
skipDuplicates: true,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@ -6,4 +6,5 @@ export enum ActivityTargetableEntityType {
|
|||||||
export type ActivityTargetableEntity = {
|
export type ActivityTargetableEntity = {
|
||||||
id: string;
|
id: string;
|
||||||
type: ActivityTargetableEntityType;
|
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={{
|
entity={{
|
||||||
id: person.id,
|
id: person.id,
|
||||||
type: ActivityTargetableEntityType.Person,
|
type: ActivityTargetableEntityType.Person,
|
||||||
|
relatedEntities: person.company?.id
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
id: person.company?.id,
|
||||||
|
type: ActivityTargetableEntityType.Company,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: undefined,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</RecoilScope>
|
</RecoilScope>
|
||||||
@ -140,6 +148,14 @@ export function PersonShow() {
|
|||||||
entity={{
|
entity={{
|
||||||
id: person.id ?? '',
|
id: person.id ?? '',
|
||||||
type: ActivityTargetableEntityType.Person,
|
type: ActivityTargetableEntityType.Person,
|
||||||
|
relatedEntities: person.company?.id
|
||||||
|
? [
|
||||||
|
{
|
||||||
|
id: person.company?.id,
|
||||||
|
type: ActivityTargetableEntityType.Company,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
: undefined,
|
||||||
}}
|
}}
|
||||||
timeline
|
timeline
|
||||||
tasks
|
tasks
|
||||||
|
|||||||
Reference in New Issue
Block a user