diff --git a/odatareceptionist/procedures/PrintQueue.xsjslib b/odatareceptionist/procedures/PrintQueue.xsjslib
index e7198a5..a27f8f3 100644
--- a/odatareceptionist/procedures/PrintQueue.xsjslib
+++ b/odatareceptionist/procedures/PrintQueue.xsjslib
@@ -5,10 +5,10 @@ function readParticipant(_ParticipantID) {
try {
conn = $.db.getConnection();
var select = 'SELECT "ID", "EventID", "FirstName", "LastName", "Twitter"'
- + ' FROM "com.sap.sapmentors.sitreg.data::SITreg.Participant"'
+ + ' FROM "com.sap.sapmentors.sitreg.odataparticipant.procedures::ParticipantsRead"'
+ ' WHERE "ID" = ?';
var pStmt = conn.prepareStatement(select);
- pStmt.setInteger(1, _ParticipantID);
+ pStmt.setInteger(1, parseInt(_ParticipantID));
var rs = pStmt.executeQuery();
if (rs.next()) {
participant.ParticipantID = rs.getInteger(1);
@@ -17,6 +17,9 @@ function readParticipant(_ParticipantID) {
participant.LastName = rs.getNString(4);
participant.Twitter = rs.getNString(5);
}
+ if(!participant.Twitter) {
+ participant.Twitter = "";
+ }
rs.close();
pStmt.close();
conn.close();
@@ -69,36 +72,113 @@ function getDevicesForEvent(_EventID) {
} catch (e) {
$.trace.debug("Error: exception caught:
" + e.toString());
}
+ $.trace.debug("Devices: " + JSON.stringify(devices));
return devices;
}
+function hasPrintQueueElementInSentStatusForEvent(_EventID) {
+ var conn;
+ var count;
+ try {
+ conn = $.db.getConnection();
+ var select = 'SELECT COUNT("ParticipantID") AS count '
+ + 'FROM "com.sap.sapmentors.sitreg.data::SITreg.PrintQueue" '
+ + 'WHERE "EventID" = ? AND "PrintStatus" = ' + "'S'";
+ var pStmt = conn.prepareStatement(select);
+ pStmt.setInteger(1, _EventID);
+ var rs = pStmt.executeQuery();
+ if (rs.next()) {
+ count = rs.getInteger(1);
+ }
+ pStmt.close();
+ } catch (e) {
+ $.trace.debug("Error: exception caught:
" + e.toString());
+ }
+ if(count > 0) {
+ return true;
+ } else {
+ return false;
+ }
+}
+
+function sendParticipantToDevice(_participant, _devices) {
+ var destination_package = "com.sap.sapmentors.sitreg.odatareceptionist.procedures";
+ var destination_name = "hcpiotmms";
+ var status = {};
+
+ var dest = $.net.http.readDestination(destination_package, destination_name);
+ var client = new $.net.http.Client();
+ for (var i = 0; i < _devices.length; i++) {
+ try {
+ var req = new $.web.WebRequest($.net.http.POST, _devices[i]);
+ req.headers.set('Content-Type', encodeURIComponent("application/json"));
+ var bodyJSON = {
+ "messageType":"e831c7faaf5cd1091161",
+ "messages":[
+ {
+ "timestamp": Math.round(new Date().getTime()/1000),
+ "ID": _participant.ParticipantID,
+ "EventID": _participant.EventID,
+ "FirstName": _participant.FirstName,
+ "LastName": _participant.LastName,
+ "Twitter": _participant.Twitter
+ }
+ ],
+ "method":"ws","sender":"IoT App"
+ };
+ req.setBody(JSON.stringify(bodyJSON));
+
+ client.request(req, dest);
+ var response = client.getResponse();
+ status.status = response.status;
+ status.body = response.body.asString();
+ // status.DeviceID = _devices[i];
+ } catch (e) {
+ status.error = e.message;
+ }
+ }
+ return status;
+}
+
function addParticipantToPrintQueue(_participant) {
var conn;
var status = {};
try {
var devices = getDevicesForEvent(_participant.EventID);
- if(!isParticipantInPrintQueue(_participant.EventID)) {
- conn = $.db.getConnection();
- var select = 'INSERT INTO "com.sap.sapmentors.sitreg.data::SITreg.PrintQueue" '
- + 'VALUES(?, ?, ?, ?, ?, ?, '
- + 'CURRENT_USER, CURRENT_TIMESTAMP, CURRENT_USER, CURRENT_TIMESTAMP )';
- var pStmt = conn.prepareStatement(select);
- pStmt.setInteger(1, _participant.ParticipantID);
- pStmt.setInteger(2, _participant.EventID);
- pStmt.setString(3, _participant.FirstName);
- pStmt.setString(4, _participant.LastName);
- if(!_participant.Twitter) {
- _participant.Twitter = "";
+ if(devices.length > 0) {
+ $.trace.debug('addParticipantToPrintQueue: Devices are available');
+ if(!isParticipantInPrintQueue(_participant.EventID)) {
+ if (hasPrintQueueElementInSentStatusForEvent(_participant.EventID)) {
+ _participant.PrintStatus = 'Q';
+ } else {
+ _participant.PrintStatus = 'S';
+ }
+ $.trace.debug('PrintStatus: ' + _participant.PrintStatus);
+ conn = $.db.getConnection();
+ var select = 'INSERT INTO "com.sap.sapmentors.sitreg.data::SITreg.PrintQueue" '
+ + 'VALUES(?, ?, ?, ?, ?, ?, '
+ + 'CURRENT_USER, CURRENT_TIMESTAMP, CURRENT_USER, CURRENT_TIMESTAMP )';
+ var pStmt = conn.prepareStatement(select);
+ pStmt.setInteger(1, _participant.ParticipantID);
+ pStmt.setInteger(2, _participant.EventID);
+ pStmt.setString(3, _participant.FirstName);
+ pStmt.setString(4, _participant.LastName);
+ pStmt.setString(5, _participant.Twitter);
+ pStmt.setString(6, _participant.PrintStatus);
+ pStmt.executeUpdate();
+ conn.commit();
+ pStmt.close();
+ status.toDevice = sendParticipantToDevice(_participant,devices);
+ if (_participant.PrintStatus === 'S') {
+ // Use Queueing later
+ }
+ } else {
+ status.error = "Entry does already exist";
}
- pStmt.setString(5, _participant.Twitter);
- pStmt.setString(6, _participant.PrintStatus);
- pStmt.executeUpdate();
- conn.commit();
- pStmt.close();
+ conn.close();
} else {
- status.error = "Entry does already exist";
+ status.error = "No Devices found for Event";
}
- conn.close();
} catch (e) {
status.error = "Error: exception caught:
" + e.toString();
}
@@ -114,10 +194,17 @@ function PrintQueueUpdateAfterTicketUpdate(param){
let rs = pStmt.executeQuery();
if (rs.next()) {
var ParticipantID = rs.getNString(1);
- var TicketUsed = rs.getNString(4);
+ var TicketUsed = rs.getNString(3);
+ }
+ $.trace.debug('ParticipantID:' + ParticipantID + 'TicketUsed: ' + TicketUsed);
+ if(TicketUsed === 'N' || TicketUsed === 'M') {
+ $.trace.debug('Call of readParticipant');
+ var participant = readParticipant(ParticipantID);
+ $.trace.debug('Participant: ' + JSON.stringify(participant));
+ $.trace.debug('Call of addParticipantToPrintQueue');
+ var status = addParticipantToPrintQueue(participant);
+ $.trace.debug('Status: ' + JSON.stringify(status));
}
- $.trace.debug('ParticipantID:' + ParticipantID + 'TicketUsed: ' + TicketUsed);
- // var participant = readParticipant(ParticipantID);
rs.close();
pStmt.close();
$.trace.debug('leave function PrintQueueUpdate');
diff --git a/odatareceptionist/procedures/PrintQueue.xsunit.xsjslib b/odatareceptionist/procedures/PrintQueue.xsunit.xsjslib
index 25a7552..6b25fe2 100644
--- a/odatareceptionist/procedures/PrintQueue.xsunit.xsjslib
+++ b/odatareceptionist/procedures/PrintQueue.xsunit.xsjslib
@@ -1 +1 @@
-describe("Print Queue Tests", function() {
var cut = $.import("com.sap.sapmentors.sitreg.odatareceptionist.procedures", "PrintQueue");
var participant;
var ParticipantID;
var EventID;
beforeOnce(function() {
var select = 'SELECT TOP 1 "ID", "Participant"."EventID" '
+ 'FROM "com.sap.sapmentors.sitreg.data::SITreg.Participant" AS "Participant" '
+ 'LEFT JOIN "com.sap.sapmentors.sitreg.data::SITreg.Device" AS "Device" '
+ 'ON "Device"."EventID" = "Participant"."EventID" '
+ 'WHERE "Device"."DeviceID" IS NOT NULL';
var pStmt = jasmine.dbConnection.prepareStatement(select);
var rs = pStmt.executeQuery();
if (rs.next()) {
ParticipantID = rs.getInteger(1);
EventID = rs.getInteger(2);
}
pStmt.close();
});
it('should read participant details', function() {
participant = cut.readParticipant(ParticipantID);
expect(participant.ParticipantID).toBe(ParticipantID);
expect(participant.EventID).toBe(EventID);
});
it('should read devices for event', function() {
var devices = cut.getDevicesForEvent(EventID);
expect(devices.length).toBe(1);
});
it('should check that there is no entry in Print Queue with sent status', function() {
var boolean = cut.hasPrintQueueElementInSentStatusForEvent(EventID);
expect(boolean).toBe(false);
});
it('should fill print queue', function() {
var status = cut.addParticipantToPrintQueue(participant);
expect(status.error).toBe(undefined);
});
it('should check that there is an entry in Print Queue with sent status', function() {
var boolean = cut.hasPrintQueueElementInSentStatusForEvent(EventID);
expect(boolean).toBe(true);
});
it('check if participant was inserted', function() {
var boolean = cut.isParticipantInPrintQueue(ParticipantID);
expect(boolean).toBe(true);
});
afterOnce(function() {
var select = 'DELETE FROM "com.sap.sapmentors.sitreg.data::SITreg.PrintQueue" '
+ 'WHERE "ParticipantID" = ?';
var pStmt = jasmine.dbConnection.prepareStatement(select);
pStmt.setInteger(1, participant.ParticipantID);
pStmt.execute();
jasmine.dbConnection.commit();
pStmt.close();
});
});
\ No newline at end of file
+describe("Print Queue Tests", function() {
var cut = $.import("com.sap.sapmentors.sitreg.odatareceptionist.procedures", "PrintQueue");
var participant;
var ParticipantID;
var EventID;
beforeOnce(function() {
var select = 'SELECT TOP 1 "ID", "Participant"."EventID" '
+ 'FROM "com.sap.sapmentors.sitreg.data::SITreg.Participant" AS "Participant" '
+ 'LEFT JOIN "com.sap.sapmentors.sitreg.data::SITreg.Device" AS "Device" '
+ 'ON "Device"."EventID" = "Participant"."EventID" '
+ 'WHERE "Device"."DeviceID" IS NOT NULL';
var pStmt = jasmine.dbConnection.prepareStatement(select);
var rs = pStmt.executeQuery();
if (rs.next()) {
ParticipantID = rs.getInteger(1);
EventID = rs.getInteger(2);
}
pStmt.close();
});
it('should read participant details', function() {
participant = cut.readParticipant(ParticipantID);
expect(participant.ParticipantID).toBe(ParticipantID);
expect(participant.EventID).toBe(EventID);
});
it('should read devices for event', function() {
var devices = cut.getDevicesForEvent(EventID);
expect(devices.length).toBe(1);
});
it('should check that there is no entry in Print Queue with sent status', function() {
var boolean = cut.hasPrintQueueElementInSentStatusForEvent(EventID);
expect(boolean).toBe(false);
});
it('should fill print queue', function() {
var status = cut.addParticipantToPrintQueue(participant);
expect(status.error).toBe(undefined);
expect(status.toDevice.status).toBe(200);
// expect(status.toDevice.body).toBe(200);
});
it('should check that there is an entry in Print Queue with sent status', function() {
var boolean = cut.hasPrintQueueElementInSentStatusForEvent(EventID);
expect(boolean).toBe(true);
});
it('check if participant was inserted', function() {
var boolean = cut.isParticipantInPrintQueue(ParticipantID);
expect(boolean).toBe(true);
});
afterOnce(function() {
var select = 'DELETE FROM "com.sap.sapmentors.sitreg.data::SITreg.PrintQueue"'
// + ' WHERE "ParticipantID" = ?'
;
var pStmt = jasmine.dbConnection.prepareStatement(select);
pStmt.setInteger(1, participant.ParticipantID);
pStmt.execute();
jasmine.dbConnection.commit();
pStmt.close();
});
});
\ No newline at end of file