Code Duplication    Length = 96-96 lines in 2 locations

src/router/status-type-api-router.js 1 location

@@ 7-102 (lines=96) @@
4
 * @since 1.0.0
5
 */
6
7
const Joi = require('joi');
8
const StatusType = require('./../repository/StatusType');
9
const config = require('../config/server.config').url;
10
const dateUtil = require('../common/date-util');
11
const NotifierError = require('../common/Error');
12
const logger = require('winston');
13
14
module.exports = [
15
  {
16
    method: 'GET',
17
    path: `${config.statusTypeApiPrefix}`,
18
    handler: (request, reply) => {
19
      StatusType.find().then((list) => {
20
        reply({
21
          data: dateUtil.formatDates(list),
22
          totalCount: list.length,
23
        });
24
      }).catch(err => reply(err));
25
    },
26
  },
27
  {
28
    method: 'POST',
29
    path: `${config.statusTypeApiPrefix}`,
30
    handler: (request, reply) => {
31
      const statusType = Object.assign({}, request.payload);
32
      StatusType.find({ value: statusType.value })
33
        .then((result) => {
34
          if (result && result.length > 0) {
35
            throw new NotifierError(NotifierError.Types.CONFLICT, { value: statusType.value });
36
          }
37
          return true;
38
        })
39
        .then(() => StatusType.add(statusType))
40
        .then(result => reply(result))
41
        .catch(err => reply(err));
42
    },
43
    config: {
44
      validate: {
45
        payload: {
46
          label: Joi.string().required(),
47
          value: Joi.string().required(),
48
          template: Joi.string(),
49
        },
50
      },
51
    },
52
  },
53
  {
54
    method: 'PUT',
55
    path: `${config.statusTypeApiPrefix}/{statusTypeId}`,
56
    handler: (request, reply) => {
57
      const statusType = Object.assign({}, request.payload);
58
      let unset;
59
      if (!statusType.template) {
60
        unset = { template: 1 };
61
      }
62
      StatusType.find({ value: statusType.value })
63
        .then((result) => {
64
          if (result && result.length > 0 && request.params.statusTypeId !== result[0]._id) {
65
            throw new NotifierError(NotifierError.Types.CONFLICT, { value: statusType.value });
66
          }
67
          return true;
68
        })
69
        .then(() => StatusType.update(request.params.statusTypeId, statusType, unset))
70
        .then(result => reply(result))
71
        .catch(err => reply(err));
72
    },
73
    config: {
74
      validate: {
75
        params: {
76
          statusTypeId: Joi.string().required(),
77
        },
78
        payload: {
79
          label: Joi.string().required(),
80
          value: Joi.string().required(),
81
          template: Joi.string(),
82
        },
83
      },
84
    },
85
  },
86
  {
87
    method: 'DELETE',
88
    path: `${config.statusTypeApiPrefix}/{statusTypeId}`,
89
    handler: (request, reply) => {
90
      StatusType.remove(request.params.statusTypeId)
91
        .then(result => reply(result))
92
        .catch(err => reply(err));
93
    },
94
    config: {
95
      validate: {
96
        params: {
97
          statusTypeId: Joi.string().required(),
98
        },
99
      },
100
    },
101
  },
102
];
103

src/router/device-type-api-router.js 1 location

@@ 7-102 (lines=96) @@
4
 * @since 1.0.0
5
 */
6
7
const Joi = require('joi');
8
const DeviceType = require('./../repository/DeviceType');
9
const config = require('../config/server.config').url;
10
const dateUtil = require('../common/date-util');
11
const NotifierError = require('../common/Error');
12
const logger = require('winston');
13
14
module.exports = [
15
  {
16
    method: 'GET',
17
    path: `${config.deviceTypeApiPrefix}`,
18
    handler: (request, reply) => {
19
      DeviceType.find().then((list) => {
20
        reply({
21
          data: dateUtil.formatDates(list),
22
          totalCount: list.length,
23
        });
24
      }).catch(err => reply(err));
25
    },
26
  },
27
  {
28
    method: 'POST',
29
    path: `${config.deviceTypeApiPrefix}`,
30
    handler: (request, reply) => {
31
      const deviceType = Object.assign({}, request.payload);
32
      DeviceType.find({ value: deviceType.value })
33
        .then((result) => {
34
          if (result && result.length > 0) {
35
            throw new NotifierError(NotifierError.Types.CONFLICT, { value: deviceType.value });
36
          }
37
          return true;
38
        })
39
        .then(() => DeviceType.add(deviceType))
40
        .then(result => reply(result))
41
        .catch(err => reply(err));
42
    },
43
    config: {
44
      validate: {
45
        payload: {
46
          label: Joi.string().required(),
47
          value: Joi.string().required(),
48
          template: Joi.string(),
49
        },
50
      },
51
    },
52
  },
53
  {
54
    method: 'PUT',
55
    path: `${config.deviceTypeApiPrefix}/{deviceTypeId}`,
56
    handler: (request, reply) => {
57
      const deviceType = Object.assign({}, request.payload);
58
      let unset;
59
      if (!deviceType.template) {
60
        unset = { template: 1 };
61
      }
62
      DeviceType.find({ value: deviceType.value })
63
        .then((result) => {
64
          if (result && result.length > 0 && request.params.deviceTypeId !== result[0]._id) {
65
            throw new NotifierError(NotifierError.Types.CONFLICT, { value: deviceType.value });
66
          }
67
          return true;
68
        })
69
        .then(() => DeviceType.update(request.params.deviceTypeId, deviceType, unset))
70
        .then(result => reply(result))
71
        .catch(err => reply(err));
72
    },
73
    config: {
74
      validate: {
75
        params: {
76
          deviceTypeId: Joi.string().required(),
77
        },
78
        payload: {
79
          label: Joi.string().required(),
80
          value: Joi.string().required(),
81
          template: Joi.string(),
82
        },
83
      },
84
    },
85
  },
86
  {
87
    method: 'DELETE',
88
    path: `${config.deviceTypeApiPrefix}/{deviceTypeId}`,
89
    handler: (request, reply) => {
90
      DeviceType.remove(request.params.deviceTypeId)
91
        .then(result => reply(result))
92
        .catch(err => reply(err));
93
    },
94
    config: {
95
      validate: {
96
        params: {
97
          deviceTypeId: Joi.string().required(),
98
        },
99
      },
100
    },
101
  },
102
];
103