From 2368e10d3212b8ac0cb7ea22d22a59c526e7c0e4 Mon Sep 17 00:00:00 2001 From: Chad Elliott Date: Mon, 3 Feb 2025 12:33:41 -0600 Subject: [PATCH] It looks like a block id is required to retrieve values from the posted data. --- .../SlackPulseResponseConverter.java | 50 ++++++++++++++----- .../resources/slack/pulse_slack_blocks.json | 4 ++ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/SlackPulseResponseConverter.java b/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/SlackPulseResponseConverter.java index e2e6f5754..9ddadce57 100644 --- a/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/SlackPulseResponseConverter.java +++ b/server/src/main/java/com/objectcomputing/checkins/services/pulseresponse/SlackPulseResponseConverter.java @@ -42,22 +42,25 @@ public PulseResponseCreateDTO get( final Map values = (Map)state.get("values"); + dumpMap(values, ""); + // Create the pulse DTO and fill in the values. PulseResponseCreateDTO response = new PulseResponseCreateDTO(); response.setTeamMemberId(lookupUser(memberProfileServices, map)); response.setSubmissionDate(LocalDate.now()); - response.setInternalScore(Integer.parseInt( - getMappedValue(values, "internalScore", true))); - response.setInternalFeelings( - getMappedValue(values, "internalFeelings", false)); + response.setInternalScore(Integer.parseInt(getMappedValue( + values, "internalNumber", "internalScore", true))); + response.setInternalFeelings(getMappedValue( + values, "internaltext", "internalFeelings", false)); - String score = getMappedValue(values, "externalScore", false); + String score = getMappedValue(values, "externalScore", + "externalScore", false); if (!score.isEmpty()) { response.setExternalScore(Integer.parseInt(score)); } - response.setExternalFeelings( - getMappedValue(values, "externalFeelings", false)); + response.setExternalFeelings(getMappedValue( + values, "externalText", "externalFeelings", false)); return response; } catch(JsonProcessingException ex) { @@ -69,20 +72,32 @@ public PulseResponseCreateDTO get( } } - private String getMappedValue(Map map, + private String getMappedValue(Map map, String blockId, String key, boolean required) { + if (!map.containsKey(blockId)) { + if (required) { + throw new BadArgException( + String.format("Block ID - %s was not found", blockId)); + } else { + return ""; + } + } + Map blockMap = (Map)map.get(blockId); + final String valueKey = "value"; - if (map.containsKey(key)) { - final Map other = (Map)map.get(key); + if (blockMap.containsKey(key)) { + final Map other = + (Map)blockMap.get(key); if (other.containsKey(valueKey)) { return (String)other.get(valueKey); } } if (required) { - LOG.error("Expected {}.{} was not found", key, valueKey); + LOG.error("Expected {}.{}.{} was not found", blockId, key, valueKey); throw new BadArgException( - String.format("Expected %s.%s was not found", key, valueKey)); + String.format("Expected %s.%s.%s was not found", + blockId, key, valueKey)); } else { return ""; } @@ -101,4 +116,15 @@ private UUID lookupUser(MemberProfileServices memberProfileServices, MemberProfile member = memberProfileServices.findByWorkEmail(email); return member.getId(); } + + // DEBUG Only + private void dumpMap(Map map, String indent) { + for (Map.Entry entry : map.entrySet()) { + LOG.info(indent + entry.getKey() + " : " + entry.getValue()); + + if (entry.getValue() instanceof Map) { + dumpMap((Map) entry.getValue(), indent + " "); + } + } + } } diff --git a/server/src/main/resources/slack/pulse_slack_blocks.json b/server/src/main/resources/slack/pulse_slack_blocks.json index 070cb9978..ad0f7342a 100644 --- a/server/src/main/resources/slack/pulse_slack_blocks.json +++ b/server/src/main/resources/slack/pulse_slack_blocks.json @@ -18,6 +18,7 @@ "blocks": [ { "type": "section", + "block_id": "internalNumber", "text": { "type": "plain_text", "text": "How are you feeling about work today?" @@ -71,6 +72,7 @@ }, { "type": "input", + "block_id": "internalText", "optional": true, "element": { "type": "plain_text_input", @@ -88,6 +90,7 @@ }, { "type": "section", + "block_id": "externalNumber", "text": { "type": "plain_text", "text": "How are you feeling about life outside of work?" @@ -141,6 +144,7 @@ }, { "type": "input", + "block_id": "externalText", "optional": true, "element": { "type": "plain_text_input",