All files / src/Connector RaynetCRMUniversalActivityDetail.ts

93.75% Statements 15/16
50% Branches 1/2
100% Functions 3/3
93.75% Lines 15/16

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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 12210x 10x     10x   10x 4x 4x       4x     10x     10x       1x 1x 1x   1x           1x   1x                                                                                                                                                                              
import AConnector from '@orchesty/nodejs-sdk/dist/lib/Connector/AConnector';
import { HttpMethods } from '@orchesty/nodejs-sdk/dist/lib/Transport/HttpMethods';
import ProcessDto from '@orchesty/nodejs-sdk/dist/lib/Utils/ProcessDto';
 
export const NAME = 'raynet-crm-universal-activity-detail';
 
export function getEntityType(entityName: string): string {
    let name = entityName.toLocaleLowerCase();
    Iif (name === 'phonecall') {
        name = 'phoneCall';
    }
 
    return name;
}
 
export default class RaynetCRMUniversalActivityDetail extends AConnector {
 
    public getName(): string {
        return NAME;
    }
 
    public async processAction(dto: ProcessDto<IInput>): Promise<ProcessDto<IActivityData>> {
        const data = dto.getJsonData();
        const { entityName, entityId } = data.data;
        const entityType = getEntityType(entityName);
 
        const req = await this.getApplication().getRequestDto(
            dto,
            await this.getApplicationInstallFromProcess(dto),
            HttpMethods.GET,
            `${entityType}/${entityId}?dateFormat=ISO8601`,
        );
        const resp = await this.getSender().send<IResponse>(req, [200]);
 
        return dto.setNewJsonData({ ...resp.getJsonBody().data, _entityName: entityName });
    }
 
}
 
export interface IInput {
    eventId: string;
    createdAt: string;
    type: string;
    author: string;
    source: {
        name: string;
        description: string;
    };
    data: {
        entityName: string;
        entityId: number;
        extIds: string[];
    };
}
 
/* eslint-disable @typescript-eslint/naming-convention */
export interface IResponse {
    success: string;
    data: IActivityData;
}
 
export interface IActivityData {
    id: number;
    title: string;
    completed: string;
    campaignName: string;
    source: string;
    externalOverviewUrl: string;
    externalThumbnailUrl: string;
    _version: number;
    stats: {
        sent: string;
        clicked: string;
        opened: string;
        unsubscribed: string;
    };
    category: {
        id: number;
        value: string;
    };
    priority: string;
    status: string;
    personal: boolean;
    owner: number;
    resolver: number;
    company: {
        id: number;
        name: string;
    };
    scheduledFrom: string;
    scheduledTill: string;
    description: string;
    solution: string;
    tags: undefined[];
    'rowInfo.createdAt': string;
    'rowInfo.createdBy': string;
    'rowInfo.updatedAt': string;
    'rowInfo.updatedBy': string;
    securityLevel: {
        id: number;
        name: string;
    };
    customFields: unknown;
    participants: {
        id: number;
        owner: boolean;
        name: string;
        person: number;
        company: number;
    }[];
    recurrence: {
        id: number;
        count: number;
        interval: string;
        recurrenceDay: number;
        startDate: string;
    };
    deadline: string;
    meetingPlace: string;
}
/* eslint-enable @typescript-eslint/naming-convention */