Untitled

 avatar
unknown
javascript
2 years ago
1.2 kB
5
Indexable
handler: async (request, h) => {
      const { idOrg } = request.params
      const { changes: positions } = request.payload
      const idFields = positions.map(obj => obj.idField)

      const existingFields = await AppDetails.getFieldsByIds({ idFields, idOrg, fields: ["idOrg"] })

      if (_.size(existingFields) !== _.size(idFields)) {
        return  Boom.notFound('Some or all fields from ${idFields} not found')
      }

      let containsOnlyCustomFieldsForGroupReordering = true;
      positions.forEach((position) => {
        if (position.idGroup) {
          existingFields.forEach((field) => {
            if (field.id == position.idField) {
              if (field.idOrg != idOrg) {
                containsOnlyCustomFieldsForGroupReordering = false;
                return
              }
            }
          })
        }
      })

      if (!containsOnlyCustomFieldsForGroupReordering) {
        return Boom.notAcceptable('User can only move custom fields between groups')
      }

      await AppDetails.setFieldsPositions({ idOrg, positions })
      const fields = await AppDetails.getFieldsByIds({ idFields, idOrg })
      return { fields }
    }
Editor is loading...