UNPKG

@defra-fish/dynamics-lib

Version:

Framework to support integration with dynamics

47 lines (44 loc) 2.08 kB
import moment from 'moment' import { PredefinedQuery } from './predefined-query.js' import { FulfilmentRequest } from '../entities/fulfilment-request.entity.js' import { FulfilmentRequestFile } from '../entities/fulfilment-request-file.entity.js' /** * Builds a query to retrieve all fulfilment data which has not yet been associated with a fulfilment file * * @returns {PredefinedQuery<FulfilmentRequest>} */ export const findUnassociatedFulfilmentRequests = () => { const { permission } = FulfilmentRequest.definition.relationships const filter = `${FulfilmentRequest.definition.relationships.fulfilmentRequestFile.property} eq null and ${FulfilmentRequest.definition.mappings.notes.field} eq 'Initial fulfilment request created at point of sale' and ${FulfilmentRequest.definition.defaultFilter}` return new PredefinedQuery({ root: FulfilmentRequest, filter: filter, expand: [ { ...permission, expand: [permission.entity.definition.relationships.licensee, permission.entity.definition.relationships.permit] } ], orderBy: [`${FulfilmentRequest.definition.mappings.requestTimestamp.field} asc`] }) } /** * Builds a query to retrieve fulfilment files optionally filtering by a given date and status * * * @param {moment.Moment|string|Date} [date] Filter results by the given moment parseable date * @param {GlobalOptionSetDefinition} [status] Filter results by the given status * @returns {PredefinedQuery<FulfilmentRequestFile>} */ export const findFulfilmentFiles = ({ date, status } = {}) => { const filters = [] if (date) { const targetDate = moment(date).format('YYYY-MM-DD') filters.push( `Microsoft.Dynamics.CRM.On(PropertyName='${FulfilmentRequestFile.definition.mappings.date.field}', PropertyValue=${targetDate})` ) } status && filters.push(`${FulfilmentRequestFile.definition.mappings.status.field} eq ${status.id}`) filters.push(FulfilmentRequestFile.definition.defaultFilter) return new PredefinedQuery({ root: FulfilmentRequestFile, filter: filters.join(' and ') }) }