|
1 | 1 | import React from 'react'; |
2 | | -import { Filter, Query } from '@labkey/api'; |
| 2 | +import { Filter, getServerContext, Query } from '@labkey/api'; |
3 | 3 | import { v4 as uuidv4 } from 'uuid'; |
4 | 4 |
|
5 | 5 | export class AnimalRequestModel { |
@@ -78,6 +78,18 @@ export class AnimalCohort { |
78 | 78 | uuid: string = uuidv4().toUpperCase(); |
79 | 79 | } |
80 | 80 |
|
| 81 | +function hasAnimalDataReadPermission() { |
| 82 | + const ctx = getServerContext().getModuleContext('mcc') || {}; |
| 83 | + |
| 84 | + return !!ctx.hasAnimalDataReadPermission |
| 85 | +} |
| 86 | + |
| 87 | +function getMccDataContainerPath() { |
| 88 | + const ctx = getServerContext().getModuleContext('mcc') || {}; |
| 89 | + |
| 90 | + return ctx.hasAnimalDataReadPermission ? ctx.MCCContainer : null |
| 91 | +} |
| 92 | + |
81 | 93 | export async function queryRequestInformation(requestId, handleFailure) { |
82 | 94 | const requestData = new AnimalRequestModel() |
83 | 95 |
|
@@ -200,38 +212,45 @@ export async function queryRequestInformation(requestId, handleFailure) { |
200 | 212 | }, |
201 | 213 | failure: handleFailure |
202 | 214 | }) |
203 | | - }), |
204 | | - new Promise<any>((resolve, reject) => { |
205 | | - Query.selectRows({ |
206 | | - schemaName: "study", |
207 | | - queryName: "departure", |
208 | | - columns: [ |
209 | | - "Id", |
210 | | - "date", |
211 | | - "source", |
212 | | - "objectid" |
213 | | - ], |
214 | | - filterArray: [ |
215 | | - Filter.create('mccRequestId/objectId', requestId) |
216 | | - ], |
217 | | - success: function (resp) { |
218 | | - // NOTE: abort so that we preserve the default value of one empty row |
219 | | - if (!resp.rows.length) { |
220 | | - requestData.shipments = [] |
221 | | - } else { |
222 | | - requestData.shipments = resp.rows |
223 | | - } |
224 | | - |
225 | | - resolve(requestData.shipments) |
226 | | - }, |
227 | | - failure: handleFailure |
228 | | - }) |
229 | 215 | })] |
230 | 216 |
|
| 217 | + if (hasAnimalDataReadPermission()) { |
| 218 | + promises.push(new Promise<any>((resolve, reject) => { |
| 219 | + Query.selectRows({ |
| 220 | + containerPath: getMccDataContainerPath(), |
| 221 | + schemaName: "study", |
| 222 | + queryName: "departure", |
| 223 | + columns: [ |
| 224 | + "Id", |
| 225 | + "date", |
| 226 | + "source", |
| 227 | + "objectid" |
| 228 | + ], |
| 229 | + filterArray: [ |
| 230 | + Filter.create('mccRequestId/objectId', requestId) |
| 231 | + ], |
| 232 | + success: function (resp) { |
| 233 | + // NOTE: abort so that we preserve the default value of one empty row |
| 234 | + if (!resp.rows.length) { |
| 235 | + requestData.shipments = [] |
| 236 | + } else { |
| 237 | + requestData.shipments = resp.rows |
| 238 | + } |
| 239 | + |
| 240 | + resolve(requestData.shipments) |
| 241 | + }, |
| 242 | + failure: handleFailure |
| 243 | + }) |
| 244 | + })) |
| 245 | + } |
| 246 | + |
231 | 247 | return await Promise.all(promises).then(values => { |
232 | 248 | requestData.request = values[0] |
233 | 249 | requestData.coinvestigators = values[1] |
234 | 250 | requestData.cohorts = values[2] |
| 251 | + if (promises.length > 3) { |
| 252 | + requestData.shipments = values[3] |
| 253 | + } |
235 | 254 | requestData.dataLoaded = true |
236 | 255 |
|
237 | 256 | return(requestData) |
|
0 commit comments