All files / platform/modules/service/src/Services TargetSystemService.js

100% Statements 17/17
100% Branches 4/4
100% Functions 3/3
100% Lines 17/17

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    1x 1x       3x               3x 3x 3x       3x   3x 3x 3x 3x 3x     2x                 2x                   1x                       1x                                 1x  
'use strict';
 
const Id = use('C2C/Id');
const Logger = use('Logger');
 
class TargetSystemService {
  static get inject() {
    return [
      'C2C/Services/SystemLinkService',
      'C2C/Services/RequestService',
      'C2C/Repositories/IntegrateHistoryRepo',
    ];
  }
 
  constructor(SystemLinkService, RequestService, IntegrateHistoryRepo) {
    this.systemLinkService = SystemLinkService;
    this.requestService = RequestService;
    this.integrateHistoryRepo = IntegrateHistoryRepo;
  }
 
  async updateService({ serviceId, systemId, body }) {
    const links = await this.systemLinkService.getHookForUpdatedService([systemId]);
 
    for (const item of links.rows) {
      const link = item.link.replace('{serviceId}', serviceId);
      const timeRequested = new Date().toISOString();
      try {
        const result = await this.requestService.put(link, body, {
          systemId: item.systemId,
        });
        Logger.info('TargetSystemService -> updateService: Success', {
          level: 'info',
          method: 'PUT',
          url: link,
          data: body,
          response: {
            data: result,
          },
        });
        this.integrateHistoryRepo.create({
          id: Id.makeId(),
          status: 'success',
          log: JSON.stringify(result),
          payload: JSON.stringify(body),
          type: 'service::updated',
          timeRequested,
          timeReceived: new Date().toISOString(),
        });
      } catch (err) {
        Logger.error('TargetSystemService -> updateService: Failed', {
          level: 'error',
          method: 'PUT',
          url: link,
          data: body,
          response: {
            data: {
              errorMessage: err.message,
              errorData: err.response && err.response.data,
            },
          },
        });
        this.integrateHistoryRepo.create({
          id: Id.makeId(),
          status: 'fail',
          log: JSON.stringify({
            errorMessage: err.message,
            errorData: err.response && err.response.data,
          }),
          type: 'service::updated',
          payload: JSON.stringify(body),
          timeRequested,
          timeReceived: new Date().toISOString(),
        });
      }
    }
  }
}
 
module.exports = TargetSystemService;