11const { getJwt, readVcapServices } = require ( "./authUtil" ) ;
22const { getPrintConfigFromActionOrEntity } = require ( './annotation-helper' ) ;
3+ const cds = require ( '@sap/cds' ) ;
34const axios = require ( 'axios' ) ;
45const logger = cds . log ( "print" ) ;
5- const CONSOLE_MODE = process . env . PRINT_CONSOLE_MODE === 'true' ;
66
77/**
88 * Populates the queue value help with available printers.
99 * @param {Object } _ - Unused parameter.
1010 * @param {Object } req - The request object.
1111 */
12- const populateQueueValueHelp = async function ( _ , req ) {
13- if ( ! CONSOLE_MODE ) {
12+ const getQueues = async function ( _ , req ) {
13+
1414 const vcap = await readVcapServices ( ) ;
1515 if ( ! vcap || vcap ?. status === 500 ) {
1616 // For Production, return the error if print service is not found
@@ -31,28 +31,19 @@ const populateQueueValueHelp = async function (_, req) {
3131 "Content-Type" : "application/json"
3232 }
3333 } ) ;
34- const resp = await api . get ( `/qm/api/v1/rest/queues` ) ;
35-
36- resp . data . forEach ( ( item , index ) => {
37- req . results [ index ] = { ID : item . qname } ;
38- } ) ;
39- req . results . $count = resp . data . length ;
40- } else { // Offline / Console Mode - Mocked printer queues
41- const offlineQueues = [
42- { ID : 'DEFAULT_PRINTER' } ,
43- { ID : 'HP_LASERJET_PRO' } ,
44- { ID : 'CANON_IMAGECLASS' } ,
45- { ID : 'XEROX_WORKCENTRE' } ,
46- { ID : 'OFFICE_PRINTER_01' } ,
47- { ID : 'OFFICE_PRINTER_02' }
48- ] ;
34+ let resp ;
35+ try {
36+ resp = await api . get ( '/qm/api/v1/rest/queues' ) ;
37+ } catch ( e ) {
38+ logger . error ( 'Failed to fetch queues' , e . response ?. data || e . message ) ;
39+ return req . error ( 500 , 'Failed to fetch queues' ) ;
40+ }
41+
42+ const results = Array . isArray ( resp . data )
43+ ? resp . data . map ( q => ( { ID : q . qname } ) )
44+ : [ { ID : resp . data . qname } ] ;
45+ return results ;
4946
50- offlineQueues . forEach ( ( item , index ) => {
51- req . results [ index ] = { ID : item . ID } ;
52- } ) ;
53- req . results . $count = offlineQueues . length ;
54- return ;
55- }
5647}
5748
5849/**
@@ -61,8 +52,21 @@ const populateQueueValueHelp = async function (_, req) {
6152 * @param {Object } req - The request object.
6253 */
6354const print = async function ( _ , req ) {
64- let { qname, numberOfCopies, docsToPrint } = await getPrintConfigFromActionOrEntity ( req ) ;
65- if ( ! CONSOLE_MODE ) {
55+
56+ cds . log ( '=== REQUEST BASIC INFO ===' ) ;
57+ cds . log ( 'Event:' , req . event ) ;
58+ cds . log ( 'Target:' , req . target ?. name ) ;
59+ cds . log ( 'User ID:' , req . user ?. id ) ;
60+
61+ let qname , numberOfCopies , docsToPrint ;
62+
63+ if ( req ?. target ?. name ) {
64+ const printConfig = await getPrintConfigFromActionOrEntity ( req ) ;
65+ ( { qname, numberOfCopies, docsToPrint } = printConfig ) ;
66+ } else {
67+ ( { qname, numberOfCopies, docsToPrint } = req ) ;
68+ }
69+
6670 const vcap = await readVcapServices ( req ) ;
6771 if ( ! vcap || vcap ?. status === 500 ) {
6872 // For Production, return the error if print service is not found
@@ -131,13 +135,14 @@ const print = async function (_, req) {
131135 return req . error ( 'Print task failed' ) ;
132136 }
133137 logger . info ( `Document sent to print queue ${ qname } ` ) ;
134- return req . info ( 200 , `Document sent to print queue ${ qname } \n
135- No. of copies requested: ${ numberOfCopies } ` ) ;
136- } else { // Offline / Console Mode
137- docsToPrint . forEach ( ( doc ) => {
138- logger . info ( `Document ${ doc . fileName } with object key ${ doc . objectKey } and content length ${ doc . content . length } has been sent to print queue ${ qname } ` ) ;
139- } ) ;
140- }
138+
139+ return {
140+ status : 'SUCCESS' ,
141+ queue : qname ,
142+ numberOfCopies,
143+ taskId : itemId ,
144+ rawResponse : printTaskResp ?. data
145+ } ;
141146}
142147
143- module . exports = { print, populateQueueValueHelp } ;
148+ module . exports = { print, getQueues } ;
0 commit comments