@burgan-tech/morph-touch-runtime 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/burgan-tech-morph-touch-runtime-0.0.5.tgz +0 -0
- package/{touch → morph-touch}/Functions/check-livekit-room-access.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/check-livekit-room-access.http +1 -1
- package/{touch → morph-touch}/Functions/get-absence-entry.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/get-advisor-stats.1.0.0.json +2 -2
- package/morph-touch/Functions/get-available-slots.1.0.0.json +30 -0
- package/{touch → morph-touch}/Functions/get-available-slots.http +4 -2
- package/morph-touch/Functions/get-chat-rooms.1.0.0.json +28 -0
- package/{touch → morph-touch}/Functions/get-chat-rooms.http +2 -2
- package/{touch → morph-touch}/Functions/get-customer-info.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/get-matrix-sync.1.0.0.json +2 -2
- package/morph-touch/Functions/get-rezervations.1.0.0.json +26 -0
- package/{touch → morph-touch}/Functions/get-rezervations.http +2 -2
- package/{touch → morph-touch}/Functions/get-room-messages.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/get-room-messages.http +1 -1
- package/{touch → morph-touch}/Functions/rezervation-transfer.http +1 -1
- package/{touch → morph-touch}/Functions/send-room-message.1.0.0.json +2 -2
- package/{touch → morph-touch}/Functions/src/GetAvailableSlotsMapping.csx +125 -1
- package/{touch → morph-touch}/Functions/src/GetChatRoomsMapping.csx +6 -7
- package/{touch → morph-touch}/Functions/src/GetRezervationsMapping.csx +12 -5
- package/{touch → morph-touch}/Schemas/absence-entry.1.0.0.json +3 -3
- package/{touch → morph-touch}/Schemas/advisor-chat-rooms.1.0.0.json +2 -2
- package/{touch → morph-touch}/Schemas/chat-room.1.0.0.json +2 -2
- package/morph-touch/Schemas/chat-room.1.1.0.json +132 -0
- package/morph-touch/Schemas/chat-room.1.2.0.json +174 -0
- package/{touch → morph-touch}/Schemas/notification-sender.1.0.0.json +2 -2
- package/{touch → morph-touch}/Schemas/portfolio-manager.1.0.0.json +2 -2
- package/{touch → morph-touch}/Schemas/rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/cancel-absence-entry-for-rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/check-already-completed-chat-room.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-duplicate-portfolio-manager.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-duplicate-rezervation.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-existing-permanent-chat-room.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/check-randevu-time.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/create-permanent-chat-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/determine-transfer-type.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/enrich-rezervations-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/execute-permanent-chatroom-update.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/execute-rez-chatroom-transfer.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/execute-rezervation-transfer.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/fetch-absence-entries-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-advisors-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-permanent-chatrooms-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-rez-chatrooms-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/fetch-rezervations-for-transfer.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-absence-entry-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-available-slots-http.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/get-available-slots.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-chat-room-data-for-rezervation.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-chat-token.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-matrix-room-messages.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-matrix-sync.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-rezervation-data-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-rezervation-state-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-rezervations-task.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/get-user-info-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/get-video-call-url.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/invite-user-to-rezervation-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/join-chat-room-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/join-matrix-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/join-user-to-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-invited-user.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-rezervation-update.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-target-advisor-for-transfer.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-update-body-for-randevu-update.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/merge-video-call-urls.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/query-chat-room-instances.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/remove-member-from-room.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/send-matrix-room-message.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/send-push-notification.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/send-sms-notification.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/set-chat-room-status-active.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/set-chat-room-status-deactive.1.0.0.json +1 -1
- package/morph-touch/Tasks/set-matrix-room-history-visibility.1.0.0.json +26 -0
- package/{touch → morph-touch}/Tasks/set-previous-advisor.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/set-user-from-headers-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/start-absence-entry-for-rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-chat-room-for-rezervation.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-notification-sender.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-permanent-chat-room.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-transfer-from-absence-entry.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/start-video-call.1.0.0.json +2 -2
- package/morph-touch/Tasks/summarize-chat-openai.1.0.0.json +27 -0
- package/morph-touch/Tasks/test-get-rezervation-count-by-advisor.1.0.0.json +22 -0
- package/morph-touch/Tasks/test-get-rezervation-instances-after-date.1.0.0.json +24 -0
- package/{touch → morph-touch}/Tasks/trigger-chat-room-deactivate.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-chat-room-transfer.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-chat-room-update.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-add-invited-participant.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-apply-update.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-to-in-meet.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/trigger-rezervation-video-call-update.1.0.0.json +2 -2
- package/{touch → morph-touch}/Tasks/validate-date-for-rezervation.1.0.0.json +1 -1
- package/{touch → morph-touch}/Tasks/validate-slot-for-rezervation.1.0.0.json +3 -3
- package/{touch → morph-touch}/Tasks/validate-transfer-availability.1.0.0.json +3 -3
- package/{touch → morph-touch}/Workflows/absence-entry.http +21 -21
- package/{touch → morph-touch}/Workflows/absence-entry.json +3 -3
- package/{touch → morph-touch}/Workflows/add-participant-to-rezervation.http +3 -3
- package/{touch → morph-touch}/Workflows/add-participant-to-rezervation.json +23 -24
- package/{touch → morph-touch}/Workflows/chat-room.http +10 -8
- package/{touch → morph-touch}/Workflows/chat-room.json +37 -24
- package/{touch → morph-touch}/Workflows/investment-advisor.json +2 -2
- package/{touch → morph-touch}/Workflows/notification-sender.http +13 -13
- package/{touch → morph-touch}/Workflows/notification-sender.json +5 -5
- package/{touch → morph-touch}/Workflows/portfolio-manager.json +2 -2
- package/{touch → morph-touch}/Workflows/randevu-update.http +6 -6
- package/{touch → morph-touch}/Workflows/rezervation-start.json +16 -16
- package/{touch → morph-touch}/Workflows/rezervation-transfer.json +125 -22
- package/{touch → morph-touch}/Workflows/rezervation-update.http +6 -6
- package/{touch → morph-touch}/Workflows/rezervation-update.json +19 -19
- package/{touch → morph-touch}/Workflows/rezervation.http +6 -6
- package/{touch → morph-touch}/Workflows/rezervation.json +121 -180
- package/{touch → morph-touch}/Workflows/src/CancelAbsenceEntryForRezervationMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/CancelAbsenceForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/ChatRoomRemoveMapping.csx +22 -1
- package/{touch → morph-touch}/Workflows/src/ChatRoomTransferInviteMapping.csx +21 -0
- package/{touch → morph-touch}/Workflows/src/ChatRoomUpdateMapping.csx +21 -0
- package/{touch → morph-touch}/Workflows/src/CreateAbsenceEntryForRezervationMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/CreateAbsenceForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/CreateChatRoomForRezervationMapping.csx +12 -2
- package/{touch → morph-touch}/Workflows/src/CreatePermanentChatRoomMapping.csx +50 -9
- package/morph-touch/Workflows/src/DeactivatePermanentChatRoomFromTransferMapping.csx +133 -0
- package/{touch → morph-touch}/Workflows/src/EnrichRezervationsForTransferMapping.csx +16 -3
- package/{touch → morph-touch}/Workflows/src/ExecutePermanentChatRoomUpdateMapping.csx +23 -18
- package/{touch → morph-touch}/Workflows/src/ExecuteRezChatRoomTransferMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/ExecuteTransferMapping.csx +15 -12
- package/{touch → morph-touch}/Workflows/src/FetchAdvisorsForTransferMapping.csx +55 -7
- package/{touch → morph-touch}/Workflows/src/FetchPermanentChatRoomsMapping.csx +65 -2
- package/morph-touch/Workflows/src/FetchRoomMessagesForSummaryMapping.csx +182 -0
- package/{touch → morph-touch}/Workflows/src/GetChatRoomDataForRezervationMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/GetRezervationDataForAddParticipantMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/GetRezervationDataForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/GetRezervationDataMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/GetRezervationStateForRandevuUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/GetRezervationStateMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/InvitedUserNotAllowedRule.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/JoinUserToRoomMapping.csx +22 -1
- package/morph-touch/Workflows/src/NoOpGetInstancesTestMapping.csx +19 -0
- package/morph-touch/Workflows/src/PermanentProcessNextTerminationRule.csx +51 -0
- package/{touch → morph-touch}/Workflows/src/SendPushNotificationMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/src/SendSmsNotificationMapping.csx +1 -1
- package/morph-touch/Workflows/src/SendSummaryToNewRoomMapping.csx +178 -0
- package/morph-touch/Workflows/src/SetRoomHistoryVisibilityMapping.csx +109 -0
- package/{touch → morph-touch}/Workflows/src/StartChatRoomForRezervationMapping.csx +4 -3
- package/{touch → morph-touch}/Workflows/src/StartGetChatTokenForRezervationMapping.csx +1 -1
- package/morph-touch/Workflows/src/StartNewPermanentChatRoomFromTransferMapping.csx +197 -0
- package/{touch → morph-touch}/Workflows/src/StartNotificationForAdvisorMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/StartNotificationForRezervationFromUserInfoMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/StartNotificationForUserMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/StartPermanentChatRoomMapping.csx +5 -2
- package/{touch → morph-touch}/Workflows/src/StartTransferFromAbsenceEntryMapping.csx +6 -14
- package/{touch → morph-touch}/Workflows/src/StateInMeetRule.csx +1 -1
- package/morph-touch/Workflows/src/SummarizeChatWithOpenAIMapping.csx +172 -0
- package/{touch → morph-touch}/Workflows/src/TriggerChatRoomDeactivateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerChatRoomTransferMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerChatRoomUpdateMapping.csx +3 -3
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationAddInvitedParticipantMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationApplyUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationToInMeetMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/TriggerRezervationVideoCallUpdateMapping.csx +1 -1
- package/{touch → morph-touch}/Workflows/src/ValidateSlotForRandevuUpdateMapping.csx +29 -1
- package/{touch → morph-touch}/Workflows/src/ValidateSlotForRezervationMapping.csx +29 -1
- package/{touch → morph-touch}/Workflows/src/ValidateTransferMapping.csx +2 -2
- package/{touch → morph-touch}/Workflows/start-chat.json +6 -6
- package/{touch → morph-touch}/Workflows/start-video-call.http +3 -3
- package/{touch → morph-touch}/Workflows/start-video-call.json +4 -4
- package/package.json +1 -1
- package/vnext.config.json +7 -7
- package/burgan-tech-morph-touch-runtime-0.0.3.tgz +0 -0
- package/touch/Functions/get-available-slots.1.0.0.json +0 -30
- package/touch/Functions/get-chat-rooms.1.0.0.json +0 -28
- package/touch/Functions/get-rezervations.1.0.0.json +0 -26
- /package/{touch → morph-touch}/Extensions/.gitkeep +0 -0
- /package/{touch → morph-touch}/Functions/.gitkeep +0 -0
- /package/{touch → morph-touch}/Functions/src/CheckLivekitRoomAccessMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetAbsenceEntryMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetAdvisorStatsMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetCustomerInfoMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetMatrixSyncMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/GetRoomMessagesMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/SendCancelNotificationMapping.csx +0 -0
- /package/{touch → morph-touch}/Functions/src/SendRoomMessageMapping.csx +0 -0
- /package/{touch → morph-touch}/Schemas/.gitkeep +0 -0
- /package/{touch → morph-touch}/Tasks/.gitkeep +0 -0
- /package/{touch → morph-touch}/Views/.gitkeep +0 -0
- /package/{touch → morph-touch}/Workflows/.gitkeep +0 -0
- /package/{touch → morph-touch}/Workflows/src/AllChatRoomsSuccessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/AlwaysTrueRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/AnyChatRoomFailedRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/AutoProcessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/BuildRezChatRoomPlanMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CanStartRezervationTimerMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CanStartTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ChatRoomCreatedFailedRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ChatRoomCreatedSuccessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ChatRoomTransferRemoveMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckAlreadyCompletedChatRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckDuplicatePortfolioManagerMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckDuplicateRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckExistingPermanentChatRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckRandevuTimeMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CheckRezervationStateActiveOrInMeetRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/CustomerControlToEndRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/DetermineTransferTypeMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/FetchAbsenceEntriesForTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/FetchRezervationsForTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/GetChatTokenMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/GetUserInfoForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/GetVideoCallUrlMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/HasChangedAdvisorRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/HasChatIntegrationRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/HasExistingPermanentRoomRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InviteAdvisorForRandevuUpdateMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InviteNewAdvisorToRezervationRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InviteNewParticipantToRandevuRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InvitedUserMergeMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/InvitedUserNotInMeetRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/IsNotfSentRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinChatRoomForAddParticipantMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinChatRoomForRandevuStartMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinChatRoomForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/JoinMatrixRoomMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/LoginForAddParticipantChatMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/LoginForRandevuStartChatMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/MergeRezervationUpdateMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/MergeTargetAdvisorForTransferMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/MergeUpdateBodyForRandevuUpdateMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NoExistingPermanentRoomRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationCompleteAlwaysRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationCompleteFromPendingRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationCompleteFromSmsRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationPushFromPendingRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationPushFromSmsRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/NotificationSmsPendingRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/PermanentDoneRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/PermanentProcessNextRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/RezChatRoomProcessNextRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/RezChatRoomsDoneRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetChatRoomStatusActiveMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetChatRoomStatusDeactiveMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetPreviousAdvisorMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SetUserFromHeadersForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SlotAvailableRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SlotUnavailableRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallCustomerSubFlowMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallForInvitedParticipantMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallForRandevuStartMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StartVideoCallStaffSubFlowMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateActiveForUpdateRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateActiveRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateNotActiveForUpdateRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StateNotActiveOrInMeetRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StatusCustomerEnterRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/StatusStaffEnterRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/SyncWorkingHoursRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TokenSuccessRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TransferAllDoneRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TransferHasInvalidRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/TransferProcessNextRule.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/ValidateDateForRezervationMapping.csx +0 -0
- /package/{touch → morph-touch}/Workflows/src/VideoCallUrlUpdateMergeMapping.csx +0 -0
|
Binary file
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "check-livekit-room-access",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"order": 1,
|
|
16
16
|
"task": {
|
|
17
17
|
"key": "get-rezervations-task",
|
|
18
|
-
"domain": "touch",
|
|
18
|
+
"domain": "morph-touch",
|
|
19
19
|
"version": "1.0.0",
|
|
20
20
|
"flow": "sys-tasks"
|
|
21
21
|
},
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
@baseUrl = http://localhost:4201
|
|
20
20
|
@apiVersion = 1
|
|
21
|
-
@domain = touch
|
|
21
|
+
@domain = morph-touch
|
|
22
22
|
|
|
23
23
|
# Replace with a valid LiveKit JWT token (contains video.room and sub claims)
|
|
24
24
|
@accessToken = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2aWRlbyI6eyJyb29tIjoicm9vbS0xMjMifSwic3ViIjoidG91Y2g6cG9ydGZvbGlvLW1hbmFnZXI6cG0tMDAxIn0.signature
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "get-absence-entry",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"order": 1,
|
|
16
16
|
"task": {
|
|
17
17
|
"key": "get-absence-entry-task",
|
|
18
|
-
"domain": "touch",
|
|
18
|
+
"domain": "morph-touch",
|
|
19
19
|
"version": "1.0.0",
|
|
20
20
|
"flow": "sys-tasks"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "get-advisor-stats",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"order": 1,
|
|
15
15
|
"task": {
|
|
16
16
|
"key": "get-advisor-stats-task",
|
|
17
|
-
"domain": "touch",
|
|
17
|
+
"domain": "morph-touch",
|
|
18
18
|
"version": "1.0.0",
|
|
19
19
|
"flow": "sys-tasks"
|
|
20
20
|
},
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "get-available-slots",
|
|
3
|
+
"flow": "sys-functions",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"flowVersion": "1.0.0",
|
|
7
|
+
"tags": [
|
|
8
|
+
"appointments",
|
|
9
|
+
"availability",
|
|
10
|
+
"slots",
|
|
11
|
+
"advisor",
|
|
12
|
+
"calendar"
|
|
13
|
+
],
|
|
14
|
+
"attributes": {
|
|
15
|
+
"scope": "I",
|
|
16
|
+
"task": {
|
|
17
|
+
"order": 1,
|
|
18
|
+
"task": {
|
|
19
|
+
"key": "get-available-slots-task",
|
|
20
|
+
"domain": "morph-touch",
|
|
21
|
+
"version": "1.0.0",
|
|
22
|
+
"flow": "sys-tasks"
|
|
23
|
+
},
|
|
24
|
+
"mapping": {
|
|
25
|
+
"location": "./src/GetAvailableSlotsMapping.csx",
|
|
26
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgR2V0QXZhaWxhYmxlU2xvdHNUYXNrIChEYXByU2VydmljZVRhc2sgLSBUeXBlIDMpCi8vLyBRdWVyaWVzIGFic2VuY2UtZW50cnkgd29ya2Zsb3cgKHN0YXRlOiBjb21wbGV0ZSkgdmlhIERhcHIgc2VydmljZSBpbnZvY2F0aW9uIHRvIGdldAovLy8gcHVibGljIGhvbGlkYXlzLCB3b3JraW5nIGhvdXJzIGNoYW5nZXMsIGFuZCBwZXJzb25hbCBsZWF2ZXMuCi8vLyBUaGVuIGNhbGN1bGF0ZXMgYXZhaWxhYmxlIGFwcG9pbnRtZW50IHNsb3RzIGZvciB0aGUgZ2l2ZW4gYWR2aXNvciBhbmQgZGF0ZS4KLy8vCi8vLyBXb3JraW5nIGhvdXJzIHByaW9yaXR5OiBhZHZpc29yLXNwZWNpZmljID4gY29tcGFueS13aWRlIChhZHZpc29yPW51bGwpID4gbm8gaG91cnMKLy8vIEhhbGYtZGF5IHB1YmxpYyBob2xpZGF5cyBvbmx5IGJsb2NrIHRoZSBob2xpZGF5IGhvdXJzLCBub3QgdGhlIGVudGlyZSBkYXkuCi8vLyA8L3N1bW1hcnk+CnB1YmxpYyBjbGFzcyBHZXRBdmFpbGFibGVTbG90c01hcHBpbmcgOiBTY3JpcHRCYXNlLCBJTWFwcGluZwp7CiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gSW5wdXRIYW5kbGVyKFdvcmtmbG93VGFzayB0YXNrLCBTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdmFyIHNlcnZpY2VUYXNrID0gdGFzayBhcyBEYXByU2VydmljZVRhc2s7CiAgICAgICAgaWYgKHNlcnZpY2VUYXNrID09IG51bGwpCiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT3BlcmF0aW9uRXhjZXB0aW9uKCJUYXNrIG11c3QgYmUgYSBEYXByU2VydmljZVRhc2siKTsKCiAgICAgICAgdmFyIGFwcElkID0gR2V0Q29uZmlnVmFsdWUoIkRBUFJfQVBQX0lEIik7CiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShhcHBJZCkpCiAgICAgICAgICAgIHNlcnZpY2VUYXNrLlNldEFwcElkKGFwcElkKTsKCiAgICAgICAgdmFyIGFkdmlzb3JJZCA9IGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzP1siYWR2aXNvcklkIl0/LlRvU3RyaW5nKCk7CiAgICAgICAgdmFyIGRhdGUgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bImRhdGUiXT8uVG9TdHJpbmcoKTsKCiAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3JJZCkgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZSkpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAidmFsaWRhdGlvbi1lcnJvciIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAiYWR2aXNvcklkIGFuZCBkYXRlIGFyZSByZXF1aXJlZCIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gIlZBTElEQVRJT05fRVJST1IiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJlcXVlc3RlZERhdGUgPSBEYXRlVGltZS5QYXJzZShkYXRlKTsKICAgICAgICB2YXIgdHogPSBSZXNvbHZlVGltZVpvbmUoY29udGV4dCk7CiAgICAgICAgdmFyIHRvZGF5SW5CdXNpbmVzc1R6ID0gVGltZVpvbmVJbmZvLkNvbnZlcnRUaW1lRnJvbVV0YyhEYXRlVGltZS5VdGNOb3csIHR6KS5EYXRlOwogICAgICAgIGlmIChyZXF1ZXN0ZWREYXRlLkRhdGUgPCB0b2RheUluQnVzaW5lc3NUeikKICAgICAgICAgICAgdGhyb3cgbmV3IEFyZ3VtZW50RXhjZXB0aW9uKCJEYXRlIGNhbm5vdCBiZSBpbiB0aGUgcGFzdC4iLCAiZGF0ZSIpOwoKICAgICAgICB2YXIgZmlsdGVySnNvbiA9CiAgICAgICAgICAgICJ7XCJhbmRcIjpbIiArCiAgICAgICAgICAgICJ7XCJvclwiOlt7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiY29tcGxldGVcIn19LHtcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJjb21wbGV0ZS13aXRoLXRyYW5zZmVyXCJ9fV19LCIgKwogICAgICAgICAgICAie1wib3JcIjpbIiArCiAgICAgICAgICAgICAgICAie1wiYXR0cmlidXRlc1wiOntcImFkdmlzb3JcIjp7XCJlcVwiOlwiIiArIGFkdmlzb3JJZCArICJcIn19fSwiICsKICAgICAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wiYWJzZW5jZVR5cGVcIjp7XCJlcVwiOlwicHVibGljLWhvbGlkYXlcIn19fSwiICsKICAgICAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wiYWJzZW5jZVR5cGVcIjp7XCJlcVwiOlwid29ya2luZy1ob3Vycy1jaGFuZ2VcIn19fSIgKwogICAgICAgICAgICAiXX0iICsKICAgICAgICAgICAgIl19IjsKCiAgICAgICAgdmFyIHF1ZXJ5UGFyYW1zID0gbmV3IExpc3Q8c3RyaW5nPgogICAgICAgIHsKICAgICAgICAgICAgInBhZ2VTaXplPTEwMCIsCiAgICAgICAgICAgICQiZmlsdGVyPXtmaWx0ZXJKc29ufSIKICAgICAgICB9OwoKICAgICAgICBzZXJ2aWNlVGFzay5TZXRRdWVyeVN0cmluZyhzdHJpbmcuSm9pbigiJiIsIHF1ZXJ5UGFyYW1zKSk7CgogICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlKCkpOwogICAgfQoKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBPdXRwdXRIYW5kbGVyKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB0cnkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBhZHZpc29ySWQgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bImFkdmlzb3JJZCJdPy5Ub1N0cmluZygpOwogICAgICAgICAgICB2YXIgZGF0ZVN0ciA9IGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzP1siZGF0ZSJdPy5Ub1N0cmluZygpOwogICAgICAgICAgICB2YXIgZHVyYXRpb24gPSBHZXRBcHBvaW50bWVudER1cmF0aW9uKGNvbnRleHQpOwoKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3JJZCkgfHwgc3RyaW5nLklzTnVsbE9yRW1wdHkoZGF0ZVN0cikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0gInZhbGlkYXRpb24tZXJyb3IiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gImFkdmlzb3JJZCBhbmQgZGF0ZSBhcmUgcmVxdWlyZWQiLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAiVkFMSURBVElPTl9FUlJPUiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3JJZCwKICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSA9IGRhdGVTdHIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHJlcXVlc3RlZERhdGUgPSBEYXRlVGltZS5QYXJzZShkYXRlU3RyKTsKICAgICAgICAgICAgdmFyIGRheU9mV2VlayA9IHJlcXVlc3RlZERhdGUuRGF5T2ZXZWVrLlRvU3RyaW5nKCkuVG9Mb3dlcigpOwoKICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gY29udGV4dC5Cb2R5OwoKICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3MgPT0gZmFsc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBlcnJvclR5cGUgPSBDbGFzc2lmeVNlcnZpY2VFcnJvcihyZXNwb25zZT8uZXJyb3JNZXNzYWdlPy5Ub1N0cmluZygpID8/ICIiKTsKICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0gInNlcnZpY2UtZXJyb3IiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gIkZhaWxlZCB0byBmZXRjaCBhYnNlbmNlIGVudHJpZXMiLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAiU0VSVklDRV9FUlJPUiIsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yVHlwZSA9IGVycm9yVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlID0gcmVzcG9uc2U/LmVycm9yTWVzc2FnZT8uVG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZUluZm8gPSBuZXcKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwSWQgPSByZXNwb25zZT8ubWV0YWRhdGE/LmFwcElkPy5Ub1N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kTmFtZSA9IHJlc3BvbnNlPy5tZXRhZGF0YT8ubWV0aG9kTmFtZT8uVG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBWZXJiID0gcmVzcG9uc2U/Lm1ldGFkYXRhPy5odHRwVmVyYj8uVG9TdHJpbmcoKQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAiYXBwb2ludG1lbnRzIiwgImVycm9yIiB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlPy5kYXRhOwogICAgICAgICAgICB2YXIgaXRlbXMgPSByZXNwb25zZURhdGE/Lml0ZW1zOwoKICAgICAgICAgICAgdmFyIGluc3RhbmNlcyA9IG5ldyBMaXN0PGR5bmFtaWM+KCk7CiAgICAgICAgICAgIGlmIChpdGVtcyAhPSBudWxsKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgaXRlbSBpbiBpdGVtcykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZXMuQWRkKGl0ZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgcHVibGljSG9saWRheXMgPSBuZXcgTGlzdDxkeW5hbWljPigpOwogICAgICAgICAgICB2YXIgYWR2aXNvcldvcmtpbmdIb3VycyA9IG5ldyBMaXN0PGR5bmFtaWM+KCk7CiAgICAgICAgICAgIHZhciBjb21wYW55V29ya2luZ0hvdXJzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKICAgICAgICAgICAgdmFyIHBlcnNvbmFsTGVhdmVzID0gbmV3IExpc3Q8ZHluYW1pYz4oKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKHZhciBpbnN0YW5jZSBpbiBpbnN0YW5jZXMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gaW5zdGFuY2U/LmF0dHJpYnV0ZXM7CiAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICB2YXIgYWJzZW5jZVR5cGUgPSBhdHRyaWJ1dGVzPy5hYnNlbmNlVHlwZT8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgIHZhciBhZHZpc29yID0gSGFzUHJvcGVydHkoYXR0cmlidXRlcywgImFkdmlzb3IiKSA/IGF0dHJpYnV0ZXM/LmFkdmlzb3I/LlRvU3RyaW5nKCkgOiBudWxsOwoKICAgICAgICAgICAgICAgIHN3aXRjaCAoYWJzZW5jZVR5cGUpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicHVibGljLWhvbGlkYXkiOgogICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNIb2xpZGF5cy5BZGQoaW5zdGFuY2UpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJ3b3JraW5nLWhvdXJzLWNoYW5nZSI6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoYWR2aXNvcikgJiYgYWR2aXNvciA9PSBhZHZpc29ySWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZHZpc29yV29ya2luZ0hvdXJzLkFkZChpbnN0YW5jZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFueVdvcmtpbmdIb3Vycy5BZGQoaW5zdGFuY2UpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICJwZXJzb25hbC1sZWF2ZSIgd2hlbiBhZHZpc29yID09IGFkdmlzb3JJZDoKICAgICAgICAgICAgICAgICAgICAgICAgcGVyc29uYWxMZWF2ZXMuQWRkKGluc3RhbmNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAicmV6ZXJ2YXRpb24iIHdoZW4gYWR2aXNvciA9PSBhZHZpc29ySWQ6CiAgICAgICAgICAgICAgICAgICAgICAgIHBlcnNvbmFsTGVhdmVzLkFkZChpbnN0YW5jZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgdW5hdmFpbGFibGVSYW5nZXMgPSBHZXRVbmF2YWlsYWJsZVJhbmdlcyhwZXJzb25hbExlYXZlcywgcmVxdWVzdGVkRGF0ZSk7CgogICAgICAgICAgICAvLyBIYWxmLWRheSAvIGZ1bGwtZGF5IHB1YmxpYyBob2xpZGF5IGhhbmRsaW5nCiAgICAgICAgICAgIHZhciBob2xpZGF5UmFuZ2VzID0gR2V0SG9saWRheVJhbmdlcyhwdWJsaWNIb2xpZGF5cywgcmVxdWVzdGVkRGF0ZSk7CiAgICAgICAgICAgIGlmIChob2xpZGF5UmFuZ2VzICE9IG51bGwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChob2xpZGF5UmFuZ2VzLkNvdW50ID09IDEKICAgICAgICAgICAgICAgICAgICAmJiBob2xpZGF5UmFuZ2VzWzBdLkl0ZW0xID09IFRpbWVTcGFuLlplcm8KICAgICAgICAgICAgICAgICAgICAmJiBob2xpZGF5UmFuZ2VzWzBdLkl0ZW0yID49IG5ldyBUaW1lU3BhbigyMywgNTksIDApKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPSAicHVibGljLWhvbGlkYXkiLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3IHsgYXZhaWxhYmxlU2xvdHMgPSBuZXcgTGlzdDxzdHJpbmc+KCkgfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGFncyA9IG5ld1tdIHsgImFwcG9pbnRtZW50cyIsICJob2xpZGF5IiB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdW5hdmFpbGFibGVSYW5nZXMuQWRkUmFuZ2UoaG9saWRheVJhbmdlcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFdvcmtpbmcgaG91cnMgcHJpb3JpdHk6IGFkdmlzb3Itc3BlY2lmaWMgPiBjb21wYW55LXdpZGUKICAgICAgICAgICAgdmFyIHdvcmtpbmdIb3VycyA9IEdldFdvcmtpbmdIb3Vyc0ZvckRheShhZHZpc29yV29ya2luZ0hvdXJzLCBkYXlPZldlZWspOwogICAgICAgICAgICBpZiAod29ya2luZ0hvdXJzID09IG51bGwgfHwgd29ya2luZ0hvdXJzLkNvdW50ID09IDApCiAgICAgICAgICAgICAgICB3b3JraW5nSG91cnMgPSBHZXRXb3JraW5nSG91cnNGb3JEYXkoY29tcGFueVdvcmtpbmdIb3VycywgZGF5T2ZXZWVrKTsKCiAgICAgICAgICAgIGlmICh3b3JraW5nSG91cnMgPT0gbnVsbCB8fCB3b3JraW5nSG91cnMuQ291bnQgPT0gMCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAibm8td29ya2luZy1ob3VycyIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldyB7IGF2YWlsYWJsZVNsb3RzID0gbmV3IExpc3Q8c3RyaW5nPigpIH0sCiAgICAgICAgICAgICAgICAgICAgVGFncyA9IG5ld1tdIHsgImFwcG9pbnRtZW50cyIsICJjbG9zZWQiIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgYXZhaWxhYmxlU2xvdHMgPSBDYWxjdWxhdGVBdmFpbGFibGVTbG90cyh3b3JraW5nSG91cnMsIHVuYXZhaWxhYmxlUmFuZ2VzLCBkdXJhdGlvbik7CiAgICAgICAgICAgIGF2YWlsYWJsZVNsb3RzID0gRmlsdGVyU2xvdHNFeGNsdWRpbmdQYXN0Rm9yQnVzaW5lc3NUb2RheShhdmFpbGFibGVTbG90cywgcmVxdWVzdGVkRGF0ZSwgUmVzb2x2ZVRpbWVab25lKGNvbnRleHQpKTsKCiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJhdmFpbGFibGUtc2xvdHMtc3VjY2VzcyIsCiAgICAgICAgICAgICAgICBEYXRhID0gbmV3IHsgYXZhaWxhYmxlU2xvdHMgfSwKICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJhcHBvaW50bWVudHMiLCAiYXZhaWxhYmlsaXR5IiwgInN1Y2Nlc3MiIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAib3V0cHV0LWVycm9yIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJJbnRlcm5hbCBwcm9jZXNzaW5nIGVycm9yIiwKICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAiUFJPQ0VTU0lOR19FUlJPUiIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9IGV4Lk1lc3NhZ2UKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAiYXBwb2ludG1lbnRzIiwgImVycm9yIiB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICAjcmVnaW9uIEhlbHBlciBNZXRob2RzCgogICAgcHJpdmF0ZSBzdHJpbmcgQ2xhc3NpZnlTZXJ2aWNlRXJyb3Ioc3RyaW5nIGVycm9yTWVzc2FnZSkKICAgIHsKICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLkNvbnRhaW5zKCJ0aW1lb3V0IiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAidGltZW91dCI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygidW5hdXRob3JpemVkIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAiYXV0aGVudGljYXRpb24iOwogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoImZvcmJpZGRlbiIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gImF1dGhvcml6YXRpb24iOwogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoIm5vdCBmb3VuZCIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gIm5vdC1mb3VuZCI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygic2VydmljZSB1bmF2YWlsYWJsZSIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gInNlcnZpY2UtdW5hdmFpbGFibGUiOwogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoImNvbm5lY3Rpb24iLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgcmV0dXJuICJjb25uZWN0aW9uLWVycm9yIjsKCiAgICAgICAgcmV0dXJuICJnZW5lcmFsLWVycm9yIjsKICAgIH0KCiAgICAvLy8gPHN1bW1hcnk+CiAgICAvLy8gSUFOQSBpZCAoZS5nLiBFdXJvcGUvSXN0YW5idWwpIG9yIFdpbmRvd3MgaWQgKFR1cmtleSBTdGFuZGFyZCBUaW1lKS4gUXVlcnkgb3ZlcnJpZGVzIGNvbmZpZy4KICAgIC8vLyA8L3N1bW1hcnk+CiAgICBwcml2YXRlIFRpbWVab25lSW5mbyBSZXNvbHZlVGltZVpvbmUoU2NyaXB0Q29udGV4dCBjb250ZXh0KQogICAgewogICAgICAgIHN0cmluZyBpZCA9IG51bGw7CiAgICAgICAgaWYgKGNvbnRleHQ/LlF1ZXJ5UGFyYW1ldGVycyAhPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAidGltZVpvbmUiKSkKICAgICAgICAgICAgICAgIGlkID0gY29udGV4dC5RdWVyeVBhcmFtZXRlcnNbInRpbWVab25lIl0/LlRvU3RyaW5nKCk7CiAgICAgICAgICAgIGVsc2UgaWYgKEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAidGltZXpvbmUiKSkKICAgICAgICAgICAgICAgIGlkID0gY29udGV4dC5RdWVyeVBhcmFtZXRlcnNbInRpbWV6b25lIl0/LlRvU3RyaW5nKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShpZCkpCiAgICAgICAgICAgIGlkID0gR2V0Q29uZmlnVmFsdWUoIkFwcG9pbnRtZW50czpUaW1lWm9uZSIpID8/IEdldENvbmZpZ1ZhbHVlKCJBUFBPSU5UTUVOVF9USU1FWk9ORSIpOwoKICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShpZCkpCiAgICAgICAgICAgIGlkID0gIkV1cm9wZS9Jc3RhbmJ1bCI7CgogICAgICAgIHJldHVybiBGaW5kVGltZVpvbmVCeUlkKGlkLlRyaW0oKSk7CiAgICB9CgogICAgLy8vIDxzdW1tYXJ5PgogICAgLy8vIExpbnV4L21hY09TOiBJQU5BIGlkcyAoRXVyb3BlL0lzdGFuYnVsKS4gV2luZG93czogb2Z0ZW4gVHVya2V5IFN0YW5kYXJkIFRpbWUuCiAgICAvLy8gVHJpZXMgYWxpYXNlcywgdGhlbiBmaXhlZCBVVEMrMyBmb3IgVHVya2V5IChubyBEU1Qgc2luY2UgMjAxNikgaWYgc3lzdGVtIERCIGhhcyBuZWl0aGVyLgogICAgLy8vIDwvc3VtbWFyeT4KICAgIHByaXZhdGUgc3RhdGljIFRpbWVab25lSW5mbyBGaW5kVGltZVpvbmVCeUlkKHN0cmluZyBpZCkKICAgIHsKICAgICAgICBmb3JlYWNoICh2YXIgY2FuZGlkYXRlIGluIEdldFRpbWVab25lSWRDYW5kaWRhdGVzKGlkKSkKICAgICAgICB7CiAgICAgICAgICAgIHRyeQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gVGltZVpvbmVJbmZvLkZpbmRTeXN0ZW1UaW1lWm9uZUJ5SWQoY2FuZGlkYXRlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCAoVGltZVpvbmVOb3RGb3VuZEV4Y2VwdGlvbikKICAgICAgICAgICAgewogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhdGNoIChJbnZhbGlkVGltZVpvbmVFeGNlcHRpb24pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKElzVHVya2V5VGltZVpvbmVJZChpZCkpCiAgICAgICAgICAgIHJldHVybiBDcmVhdGVUdXJrZXlGaXhlZFV0Y1BsdXMzVGltZVpvbmUoKTsKCiAgICAgICAgdGhyb3cgbmV3IFRpbWVab25lTm90Rm91bmRFeGNlcHRpb24oJCJUaW1lIHpvbmUgSUQgJ3tpZH0nIHdhcyBub3QgZm91bmQgb24gdGhpcyBzeXN0ZW0uIik7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgSUVudW1lcmFibGU8c3RyaW5nPiBHZXRUaW1lWm9uZUlkQ2FuZGlkYXRlcyhzdHJpbmcgaWQpCiAgICB7CiAgICAgICAgeWllbGQgcmV0dXJuIGlkOwoKICAgICAgICBpZiAoc3RyaW5nLkVxdWFscyhpZCwgIkV1cm9wZS9Jc3RhbmJ1bCIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgIHsKICAgICAgICAgICAgeWllbGQgcmV0dXJuICJUdXJrZXkgU3RhbmRhcmQgVGltZSI7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN0cmluZy5FcXVhbHMoaWQsICJUdXJrZXkgU3RhbmRhcmQgVGltZSIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgIHsKICAgICAgICAgICAgeWllbGQgcmV0dXJuICJFdXJvcGUvSXN0YW5idWwiOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBib29sIElzVHVya2V5VGltZVpvbmVJZChzdHJpbmcgaWQpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmluZy5FcXVhbHMoaWQsICJFdXJvcGUvSXN0YW5idWwiLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKQogICAgICAgICAgICB8fCBzdHJpbmcuRXF1YWxzKGlkLCAiVHVya2V5IFN0YW5kYXJkIFRpbWUiLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKTsKICAgIH0KCiAgICAvLy8gPHN1bW1hcnk+Rml4ZWQgVVRDKzM7IG1hdGNoZXMgVHVya2V5IHdhbGwgdGltZSBzaW5jZSAyMDE2IChEU1QgYWJvbGlzaGVkKS48L3N1bW1hcnk+CiAgICBwcml2YXRlIHN0YXRpYyBUaW1lWm9uZUluZm8gQ3JlYXRlVHVya2V5Rml4ZWRVdGNQbHVzM1RpbWVab25lKCkKICAgIHsKICAgICAgICByZXR1cm4gVGltZVpvbmVJbmZvLkNyZWF0ZUN1c3RvbVRpbWVab25lKAogICAgICAgICAgICAiRXVyb3BlL0lzdGFuYnVsLUZhbGxiYWNrIiwKICAgICAgICAgICAgVGltZVNwYW4uRnJvbUhvdXJzKDMpLAogICAgICAgICAgICAiRXVyb3BlL0lzdGFuYnVsIChVVEMrMykiLAogICAgICAgICAgICAiRXVyb3BlL0lzdGFuYnVsIChVVEMrMykiKTsKICAgIH0KCiAgICBwcml2YXRlIGludCBHZXRBcHBvaW50bWVudER1cmF0aW9uKFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICBjb25zdCBpbnQgZGVmYXVsdER1cmF0aW9uID0gMzA7CgogICAgICAgIGlmIChjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycyAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAiZHVyYXRpb24iKSkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBkdXJhdGlvblBhcmFtID0gY29udGV4dC5RdWVyeVBhcmFtZXRlcnNbImR1cmF0aW9uIl07CiAgICAgICAgICAgIGludCBxdWVyeUR1cmF0aW9uID0gMDsKICAgICAgICAgICAgaWYgKGR1cmF0aW9uUGFyYW0gIT0gbnVsbCAmJiBpbnQuVHJ5UGFyc2UoZHVyYXRpb25QYXJhbS5Ub1N0cmluZygpLCBvdXQgcXVlcnlEdXJhdGlvbikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJldHVybiBxdWVyeUR1cmF0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB2YXIgY29uZmlnRHVyYXRpb24gPSBHZXRDb25maWdWYWx1ZSgiQXBwb2ludG1lbnRzOkRlZmF1bHREdXJhdGlvbiIpOwogICAgICAgIGludCBjb25maWdEdXJhdGlvblZhbHVlID0gMDsKICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGNvbmZpZ0R1cmF0aW9uKSAmJiBpbnQuVHJ5UGFyc2UoY29uZmlnRHVyYXRpb24sIG91dCBjb25maWdEdXJhdGlvblZhbHVlKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBjb25maWdEdXJhdGlvblZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRlZmF1bHREdXJhdGlvbjsKICAgIH0KCiAgICAjZW5kcmVnaW9uCgogICAgI3JlZ2lvbiBCdXNpbmVzcyBMb2dpYyBNZXRob2RzCgogICAgLy8vIDxzdW1tYXJ5PgogICAgLy8vIFJldHVybnMgdW5hdmFpbGFibGUgdGltZSByYW5nZXMgZm9yIHB1YmxpYyBob2xpZGF5cyBvbiB0aGUgcmVxdWVzdGVkIGRhdGUuCiAgICAvLy8gbnVsbCA9IG5vIGhvbGlkYXkgb24gdGhpcyBkYXRlLgogICAgLy8vIEZ1bGwtZGF5IGhvbGlkYXk6IHNpbmdsZSByYW5nZSAwMDowMC0yMzo1OS4KICAgIC8vLyBIYWxmLWRheSBob2xpZGF5OiBwYXJ0aWFsIHJhbmdlIChlLmcuLCAwMDowMC0xMzowMCkuCiAgICAvLy8gPC9zdW1tYXJ5PgogICAgcHJpdmF0ZSBMaXN0PFR1cGxlPFRpbWVTcGFuLCBUaW1lU3Bhbj4+IEdldEhvbGlkYXlSYW5nZXMoTGlzdDxkeW5hbWljPiBob2xpZGF5cywgRGF0ZVRpbWUgZGF0ZSkKICAgIHsKICAgICAgICB2YXIgcmFuZ2VzID0gbmV3IExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4oKTsKICAgICAgICBib29sIGhhc0hvbGlkYXkgPSBmYWxzZTsKCiAgICAgICAgZm9yZWFjaCAodmFyIGhvbGlkYXkgaW4gaG9saWRheXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgaG9saWRheURhdGEgPSBob2xpZGF5Py5hdHRyaWJ1dGVzOwogICAgICAgICAgICBpZiAoaG9saWRheURhdGEgPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICBzdHJpbmcgc3RhcnREYXRlVGltZVN0ciA9IG51bGw7CiAgICAgICAgICAgIHN0cmluZyBlbmREYXRlVGltZVN0ciA9IG51bGw7CgogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkoaG9saWRheURhdGEsICJzdGFydERhdGVUaW1lIikgJiYgaG9saWRheURhdGEuc3RhcnREYXRlVGltZSAhPSBudWxsKQogICAgICAgICAgICAgICAgc3RhcnREYXRlVGltZVN0ciA9IGhvbGlkYXlEYXRhLnN0YXJ0RGF0ZVRpbWUuVG9TdHJpbmcoKTsKCiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShob2xpZGF5RGF0YSwgImVuZERhdGVUaW1lIikgJiYgaG9saWRheURhdGEuZW5kRGF0ZVRpbWUgIT0gbnVsbCkKICAgICAgICAgICAgICAgIGVuZERhdGVUaW1lU3RyID0gaG9saWRheURhdGEuZW5kRGF0ZVRpbWUuVG9TdHJpbmcoKTsKCiAgICAgICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydERhdGVUaW1lU3RyKSB8fCBzdHJpbmcuSXNOdWxsT3JFbXB0eShlbmREYXRlVGltZVN0cikpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciBzdGFydERhdGVUaW1lID0gRGF0ZVRpbWUuUGFyc2Uoc3RhcnREYXRlVGltZVN0cik7CiAgICAgICAgICAgIHZhciBlbmREYXRlVGltZSA9IERhdGVUaW1lLlBhcnNlKGVuZERhdGVUaW1lU3RyKTsKCiAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPCBzdGFydERhdGVUaW1lLkRhdGUgfHwgZGF0ZS5EYXRlID4gZW5kRGF0ZVRpbWUuRGF0ZSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgaGFzSG9saWRheSA9IHRydWU7CgogICAgICAgICAgICBpZiAoc3RhcnREYXRlVGltZS5EYXRlICE9IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPT0gc3RhcnREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKHN0YXJ0RGF0ZVRpbWUuVGltZU9mRGF5LCBuZXcgVGltZVNwYW4oMjMsIDU5LCA1OSkpKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGUuRGF0ZSA9PSBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaGFzSG9saWRheSA/IHJhbmdlcyA6IG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBMaXN0PG9iamVjdD4gR2V0V29ya2luZ0hvdXJzRm9yRGF5KExpc3Q8ZHluYW1pYz4gd29ya2luZ0hvdXJzQ2hhbmdlcywgc3RyaW5nIGRheU9mV2VlaykKICAgIHsKICAgICAgICBmb3JlYWNoICh2YXIgY2hhbmdlIGluIHdvcmtpbmdIb3Vyc0NoYW5nZXMpCiAgICAgICAgewogICAgICAgICAgICB2YXIgY2hhbmdlRGF0YSA9IGNoYW5nZT8uYXR0cmlidXRlczsKICAgICAgICAgICAgaWYgKGNoYW5nZURhdGEgPT0gbnVsbCkgY29udGludWU7CgogICAgICAgICAgICB2YXIgY3VzdG9tV0ggPSBjaGFuZ2VEYXRhPy5jdXN0b21Xb3JraW5nSG91cnM7CiAgICAgICAgICAgIGlmIChjdXN0b21XSCA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciBkYXlIb3VycyA9IEdldERheUhvdXJzRnJvbUN1c3RvbShjdXN0b21XSCwgZGF5T2ZXZWVrKTsKICAgICAgICAgICAgaWYgKGRheUhvdXJzICE9IG51bGwpIHJldHVybiBkYXlIb3VyczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByaXZhdGUgTGlzdDxvYmplY3Q+IEdldERheUhvdXJzRnJvbUN1c3RvbShkeW5hbWljIGN1c3RvbVdILCBzdHJpbmcgZGF5T2ZXZWVrKQogICAgewogICAgICAgIGR5bmFtaWMgZGF5SG91cnMgPSBudWxsOwogICAgICAgIHN3aXRjaCAoZGF5T2ZXZWVrKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAibW9uZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8ubW9uZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAidHVlc2RheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LnR1ZXNkYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJ3ZWRuZXNkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy53ZWRuZXNkYXk7IGJyZWFrOwogICAgICAgICAgICBjYXNlICJ0aHVyc2RheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LnRodXJzZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAiZnJpZGF5IjogZGF5SG91cnMgPSBjdXN0b21XSD8uZnJpZGF5OyBicmVhazsKICAgICAgICAgICAgY2FzZSAic2F0dXJkYXkiOiBkYXlIb3VycyA9IGN1c3RvbVdIPy5zYXR1cmRheTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgInN1bmRheSI6IGRheUhvdXJzID0gY3VzdG9tV0g/LnN1bmRheTsgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoZGF5SG91cnMgPT0gbnVsbCkgcmV0dXJuIG51bGw7CgogICAgICAgIHZhciByZXN1bHQgPSBuZXcgTGlzdDxvYmplY3Q+KCk7CiAgICAgICAgZm9yZWFjaCAodmFyIHJhbmdlIGluIGRheUhvdXJzKQogICAgICAgIHsKICAgICAgICAgICAgdmFyIHN0YXJ0ID0gcmFuZ2U/LnN0YXJ0Py5Ub1N0cmluZygpOwogICAgICAgICAgICB2YXIgZW5kID0gcmFuZ2U/LmVuZD8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eShzdGFydCkgJiYgIXN0cmluZy5Jc051bGxPckVtcHR5KGVuZCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHJlc3VsdC5BZGQobmV3IHsgc3RhcnQsIGVuZCB9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzdWx0LkNvdW50ID4gMCA/IHJlc3VsdCA6IG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBMaXN0PFR1cGxlPFRpbWVTcGFuLCBUaW1lU3Bhbj4+IEdldFVuYXZhaWxhYmxlUmFuZ2VzKExpc3Q8ZHluYW1pYz4gcGVyc29uYWxMZWF2ZXMsIERhdGVUaW1lIGRhdGUpCiAgICB7CiAgICAgICAgdmFyIHJhbmdlcyA9IG5ldyBMaXN0PFR1cGxlPFRpbWVTcGFuLCBUaW1lU3Bhbj4+KCk7CgogICAgICAgIGZvcmVhY2ggKHZhciBsZWF2ZSBpbiBwZXJzb25hbExlYXZlcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBsZWF2ZURhdGEgPSBsZWF2ZT8uYXR0cmlidXRlczsKICAgICAgICAgICAgaWYgKGxlYXZlRGF0YSA9PSBudWxsKSBjb250aW51ZTsKCiAgICAgICAgICAgIHN0cmluZyBzdGFydERhdGVUaW1lU3RyID0gbnVsbDsKICAgICAgICAgICAgc3RyaW5nIGVuZERhdGVUaW1lU3RyID0gbnVsbDsKCiAgICAgICAgICAgIGlmIChIYXNQcm9wZXJ0eShsZWF2ZURhdGEsICJzdGFydERhdGVUaW1lIikgJiYgbGVhdmVEYXRhLnN0YXJ0RGF0ZVRpbWUgIT0gbnVsbCkKICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZVRpbWVTdHIgPSBsZWF2ZURhdGEuc3RhcnREYXRlVGltZS5Ub1N0cmluZygpOwoKICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGxlYXZlRGF0YSwgImVuZERhdGVUaW1lIikgJiYgbGVhdmVEYXRhLmVuZERhdGVUaW1lICE9IG51bGwpCiAgICAgICAgICAgICAgICBlbmREYXRlVGltZVN0ciA9IGxlYXZlRGF0YS5lbmREYXRlVGltZS5Ub1N0cmluZygpOwoKICAgICAgICAgICAgaWYgKHN0cmluZy5Jc051bGxPckVtcHR5KHN0YXJ0RGF0ZVRpbWVTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZERhdGVUaW1lU3RyKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIHN0YXJ0RGF0ZVRpbWUgPSBEYXRlVGltZS5QYXJzZShzdGFydERhdGVUaW1lU3RyKTsKICAgICAgICAgICAgdmFyIGVuZERhdGVUaW1lID0gRGF0ZVRpbWUuUGFyc2UoZW5kRGF0ZVRpbWVTdHIpOwoKICAgICAgICAgICAgaWYgKGRhdGUuRGF0ZSA8IHN0YXJ0RGF0ZVRpbWUuRGF0ZSB8fCBkYXRlLkRhdGUgPiBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgY29udGludWU7CgogICAgICAgICAgICBpZiAoc3RhcnREYXRlVGltZS5EYXRlICE9IGVuZERhdGVUaW1lLkRhdGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChkYXRlLkRhdGUgPT0gc3RhcnREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKHN0YXJ0RGF0ZVRpbWUuVGltZU9mRGF5LCBuZXcgVGltZVNwYW4oMjMsIDU5LCA1OSkpKTsKICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGUuRGF0ZSA9PSBlbmREYXRlVGltZS5EYXRlKQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIHJhbmdlcy5BZGQoVHVwbGUuQ3JlYXRlKFRpbWVTcGFuLlplcm8sIG5ldyBUaW1lU3BhbigyMywgNTksIDU5KSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmFuZ2VzLkFkZChUdXBsZS5DcmVhdGUoc3RhcnREYXRlVGltZS5UaW1lT2ZEYXksIGVuZERhdGVUaW1lLlRpbWVPZkRheSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcmFuZ2VzOwogICAgfQoKICAgIHByaXZhdGUgTGlzdDxzdHJpbmc+IENhbGN1bGF0ZUF2YWlsYWJsZVNsb3RzKExpc3Q8b2JqZWN0PiB3b3JraW5nSG91cnMsIExpc3Q8VHVwbGU8VGltZVNwYW4sIFRpbWVTcGFuPj4gdW5hdmFpbGFibGVSYW5nZXMsIGludCBkdXJhdGlvbk1pbnV0ZXMpCiAgICB7CiAgICAgICAgdmFyIHNsb3RzID0gbmV3IExpc3Q8c3RyaW5nPigpOwogICAgICAgIHZhciBkdXJhdGlvbiA9IFRpbWVTcGFuLkZyb21NaW51dGVzKGR1cmF0aW9uTWludXRlcyk7CgogICAgICAgIGZvcmVhY2ggKHZhciB3aCBpbiB3b3JraW5nSG91cnMpCiAgICAgICAgewogICAgICAgICAgICBkeW5hbWljIHdoRHluID0gd2g7CiAgICAgICAgICAgIHZhciBzdGFydFN0ciA9IHdoRHluPy5zdGFydD8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgdmFyIGVuZFN0ciA9IHdoRHluPy5lbmQ/LlRvU3RyaW5nKCk7CgogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnRTdHIpIHx8IHN0cmluZy5Jc051bGxPckVtcHR5KGVuZFN0cikpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciB3aFN0YXJ0ID0gVGltZVNwYW4uUGFyc2Uoc3RhcnRTdHIpOwogICAgICAgICAgICB2YXIgd2hFbmQgPSBUaW1lU3Bhbi5QYXJzZShlbmRTdHIpOwoKICAgICAgICAgICAgaWYgKHdoU3RhcnQgPT0gd2hFbmQpCiAgICAgICAgICAgICAgICBjb250aW51ZTsKCiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gd2hTdGFydDsKICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnQgKyBkdXJhdGlvbiA8PSB3aEVuZCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHNsb3RTdGFydCA9IGN1cnJlbnQ7CiAgICAgICAgICAgICAgICB2YXIgc2xvdEVuZCA9IGN1cnJlbnQgKyBkdXJhdGlvbjsKCiAgICAgICAgICAgICAgICBib29sIGlzQXZhaWxhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKHZhciB1ciBpbiB1bmF2YWlsYWJsZVJhbmdlcykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdFN0YXJ0IDwgdXIuSXRlbTIgJiYgc2xvdEVuZCA+IHVyLkl0ZW0xKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaXNBdmFpbGFibGUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChpc0F2YWlsYWJsZSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBzbG90cy5BZGQoJCJ7c2xvdFN0YXJ0OmhoXFw6bW19LXtzbG90RW5kOmhoXFw6bW19Iik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQgKyBkdXJhdGlvbjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNsb3RzOwogICAgfQoKICAgIC8vLyA8c3VtbWFyeT4KICAgIC8vLyBXaGVuIHRoZSByZXF1ZXN0ZWQgY2FsZW5kYXIgZGF5IGVxdWFscyAidG9kYXkiIGluIHRoZSBidXNpbmVzcyB0aW1lem9uZSwgZHJvcCBzbG90cyB3aG9zZQogICAgLy8vIGxvY2FsIHN0YXJ0IHRpbWUgaXMgbm90IGFmdGVyICJub3ciIGluIHRoYXQgdGltZXpvbmUuIFNsb3Qgc3RyaW5ncyBtYXRjaCB3b3JraW5nIGhvdXJzICh3YWxsIGNsb2NrIGluIHRoYXQgVFopLgogICAgLy8vIDwvc3VtbWFyeT4KICAgIHByaXZhdGUgc3RhdGljIExpc3Q8c3RyaW5nPiBGaWx0ZXJTbG90c0V4Y2x1ZGluZ1Bhc3RGb3JCdXNpbmVzc1RvZGF5KExpc3Q8c3RyaW5nPiBzbG90cywgRGF0ZVRpbWUgcmVxdWVzdGVkRGF0ZSwgVGltZVpvbmVJbmZvIHR6KQogICAgewogICAgICAgIGlmIChzbG90cyA9PSBudWxsIHx8IHNsb3RzLkNvdW50ID09IDApCiAgICAgICAgICAgIHJldHVybiBzbG90cyA/PyBuZXcgTGlzdDxzdHJpbmc+KCk7CgogICAgICAgIHZhciBub3dJblR6ID0gVGltZVpvbmVJbmZvLkNvbnZlcnRUaW1lRnJvbVV0YyhEYXRlVGltZS5VdGNOb3csIHR6KTsKICAgICAgICBpZiAocmVxdWVzdGVkRGF0ZS5EYXRlICE9IG5vd0luVHouRGF0ZSkKICAgICAgICAgICAgcmV0dXJuIHNsb3RzOwoKICAgICAgICB2YXIgZmlsdGVyZWQgPSBuZXcgTGlzdDxzdHJpbmc+KCk7CiAgICAgICAgdmFyIGRheVN0YXJ0TG9jYWwgPSBuZXcgRGF0ZVRpbWUocmVxdWVzdGVkRGF0ZS5ZZWFyLCByZXF1ZXN0ZWREYXRlLk1vbnRoLCByZXF1ZXN0ZWREYXRlLkRheSwgMCwgMCwgMCwgRGF0ZVRpbWVLaW5kLlVuc3BlY2lmaWVkKTsKCiAgICAgICAgZm9yZWFjaCAodmFyIHMgaW4gc2xvdHMpCiAgICAgICAgewogICAgICAgICAgICBpZiAoc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShzKSkKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwoKICAgICAgICAgICAgdmFyIHBhcnRzID0gcy5TcGxpdChuZXdbXSB7ICctJyB9LCAyLCBTdHJpbmdTcGxpdE9wdGlvbnMuTm9uZSk7CiAgICAgICAgICAgIGlmIChwYXJ0cy5MZW5ndGggIT0gMikKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmlsdGVyZWQuQWRkKHMpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghVGltZVNwYW4uVHJ5UGFyc2UocGFydHNbMF0uVHJpbSgpLCBvdXQgdmFyIHN0YXJ0VHMpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmaWx0ZXJlZC5BZGQocyk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHNsb3RTdGFydExvY2FsID0gZGF5U3RhcnRMb2NhbC5BZGQoc3RhcnRUcyk7CiAgICAgICAgICAgIGlmIChzbG90U3RhcnRMb2NhbCA+IG5vd0luVHopCiAgICAgICAgICAgICAgICBmaWx0ZXJlZC5BZGQocyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmlsdGVyZWQ7CiAgICB9CgogICAgI2VuZHJlZ2lvbgp9Cg=="
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
# - Working hours priority: advisor-specific > company-wide (advisor=null)
|
|
8
8
|
# - Half-day public holidays only block holiday hours, not the entire day
|
|
9
9
|
# - Returns available appointment slots for a given advisor and date
|
|
10
|
+
# - Same calendar day as "today" in Appointments:TimeZone (default Europe/Istanbul): only slots whose
|
|
11
|
+
# local start is after "now" in that timezone (past wall-clock times excluded). Optional: ?timeZone=Europe/Berlin
|
|
10
12
|
#
|
|
11
13
|
# Prerequisites:
|
|
12
14
|
# 1. vNext Runtime running on localhost:4201
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
|
|
16
18
|
@baseUrl = http://localhost:4201
|
|
17
19
|
@apiVersion = 1
|
|
18
|
-
@domain = touch
|
|
20
|
+
@domain = morph-touch
|
|
19
21
|
|
|
20
22
|
###############################################################################
|
|
21
23
|
# Call get-available-slots function
|
|
@@ -23,7 +25,7 @@
|
|
|
23
25
|
|
|
24
26
|
### Get Available Slots - by advisor and date
|
|
25
27
|
# @name getAvailableSlots
|
|
26
|
-
GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-available-slots?advisorId=touch.portfolio-manager.pm-001&date=2026-02-
|
|
28
|
+
GET {{baseUrl}}/api/v{{apiVersion}}/{{domain}}/functions/get-available-slots?advisorId=morph-touch.portfolio-manager.pm-001&date=2026-02-02T00:00:00Z&duration=30
|
|
27
29
|
Accept: application/json
|
|
28
30
|
Accept-Language: tr-TR
|
|
29
31
|
X-Request-Id: {{$guid}}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "get-chat-rooms",
|
|
3
|
+
"flow": "sys-functions",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"flowVersion": "1.0.0",
|
|
7
|
+
"tags": [
|
|
8
|
+
"chat",
|
|
9
|
+
"rooms",
|
|
10
|
+
"permanent"
|
|
11
|
+
],
|
|
12
|
+
"attributes": {
|
|
13
|
+
"scope": "F",
|
|
14
|
+
"task": {
|
|
15
|
+
"order": 1,
|
|
16
|
+
"task": {
|
|
17
|
+
"key": "query-chat-room-instances",
|
|
18
|
+
"domain": "morph-touch",
|
|
19
|
+
"version": "1.0.0",
|
|
20
|
+
"flow": "sys-tasks"
|
|
21
|
+
},
|
|
22
|
+
"mapping": {
|
|
23
|
+
"location": "./src/GetChatRoomsMapping.csx",
|
|
24
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRocmVhZGluZy5UYXNrczsKdXNpbmcgQkJULldvcmtmbG93LlNjcmlwdGluZzsKdXNpbmcgQkJULldvcmtmbG93LkRlZmluaXRpb25zOwoKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgcXVlcnktY2hhdC1yb29tLWluc3RhbmNlcyBEYXByU2VydmljZVRhc2sgKFR5cGUgMykuCi8vLyBGbG93LWxldmVsIGZ1bmN0aW9uIChzY29wZTogRikgLS0gbm8gaW5zdGFuY2UgY29udGV4dC4KLy8vIFJlYWRzICJ1c2VyIiBPUiAiYWR2aXNvciIgZnJvbSBxdWVyeSBwYXJhbWV0ZXJzIChtdXR1YWxseSBleGNsdXNpdmUpLgovLy8gRm9yIGFkdmlzb3I6IHNlcnZlciBmaWx0ZXIgYWR2aXNvcklkPVggT1IgbWVtYmVyV2l0aG91dEFycmF5LntpZH0gaXMgbm90IG51bGwgKHBhcnRpY2lwYW50IG1hcCBrZXkpLgovLy8gRm9yIHVzZXI6IHJldHVybnMgcm9vbXMgd2hlcmUgdXNlcj1YIChzZXJ2ZXItc2lkZSBmaWx0ZXIpLgovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0Q2hhdFJvb21zTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgc2VydmljZVRhc2sgPSB0YXNrIGFzIERhcHJTZXJ2aWNlVGFzazsKICAgICAgICBpZiAoc2VydmljZVRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIERhcHJTZXJ2aWNlVGFzayIpOwoKICAgICAgICB2YXIgYXBwSWQgPSBHZXRDb25maWdWYWx1ZSgiREFQUl9BUFBfSUQiKTsKICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGFwcElkKSkKICAgICAgICAgICAgc2VydmljZVRhc2suU2V0QXBwSWQoYXBwSWQpOwoKICAgICAgICB2YXIgdXNlciA9IFJlYWRQYXJhbShjb250ZXh0LCAidXNlciIpOwogICAgICAgIHZhciBhZHZpc29yID0gUmVhZFBhcmFtKGNvbnRleHQsICJhZHZpc29yIik7CgogICAgICAgIGJvb2wgaGFzVXNlciA9ICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHVzZXIpOwogICAgICAgIGJvb2wgaGFzQWR2aXNvciA9ICFzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKGFkdmlzb3IpOwoKICAgICAgICBpZiAoaGFzVXNlciAmJiBoYXNBZHZpc29yKQogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9wZXJhdGlvbkV4Y2VwdGlvbigiVkFMSURBVElPTl9FUlJPUjogdXNlciBhbmQgYWR2aXNvciBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCBwcm92aWRlIG9ubHkgb25lIik7CgogICAgICAgIGlmICghaGFzVXNlciAmJiAhaGFzQWR2aXNvcikKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlZBTElEQVRJT05fRVJST1I6IGVpdGhlciB1c2VyIG9yIGFkdmlzb3IgcXVlcnkgcGFyYW1ldGVyIGlzIHJlcXVpcmVkIik7CgogICAgICAgIHN0cmluZyBhdHRyaWJ1dGVGaWx0ZXI7CiAgICAgICAgaWYgKGhhc1VzZXIpCiAgICAgICAgewogICAgICAgICAgICB2YXIgZXNjYXBlZCA9IHVzZXIuUmVwbGFjZSgiXFwiLCAiXFxcXCIpLlJlcGxhY2UoIlwiIiwgIlxcXCIiKTsKICAgICAgICAgICAgYXR0cmlidXRlRmlsdGVyID0gIntcImF0dHJpYnV0ZXNcIjp7XCJ1c2VyXCI6e1wiZXFcIjpcIiIgKyBlc2NhcGVkICsgIlwifX19IjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgdmFyIGVzY2FwZWQgPSBhZHZpc29yLlJlcGxhY2UoIlxcIiwgIlxcXFwiKS5SZXBsYWNlKCJcIiIsICJcXFwiIik7CiAgICAgICAgICAgIGF0dHJpYnV0ZUZpbHRlciA9CiAgICAgICAgICAgICAgICAie1wib3JcIjpbIiArCiAgICAgICAgICAgICAgICAie1wiYXR0cmlidXRlc1wiOntcImFkdmlzb3JJZFwiOntcImVxXCI6XCIiICsgZXNjYXBlZCArICJcIn19fSwiICsKICAgICAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wibWVtYmVyV2l0aG91dEFycmF5LiIgKyBlc2NhcGVkICsgIlwiOntcImlzTnVsbFwiOmZhbHNlfX19IiArCiAgICAgICAgICAgICAgICAiXX0iOwogICAgICAgIH0KCiAgICAgICAgdmFyIHJvb21UeXBlID0gUmVhZFBhcmFtKGNvbnRleHQsICJyb29tVHlwZSIpOwogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yV2hpdGVTcGFjZShyb29tVHlwZSkpCiAgICAgICAgewogICAgICAgICAgICB2YXIgZXNjYXBlZFR5cGUgPSByb29tVHlwZS5SZXBsYWNlKCJcXCIsICJcXFxcIikuUmVwbGFjZSgiXCIiLCAiXFxcIiIpOwogICAgICAgICAgICBhdHRyaWJ1dGVGaWx0ZXIgPSAie1wiYW5kXCI6WyIgKyBhdHRyaWJ1dGVGaWx0ZXIgKyAiLHtcImF0dHJpYnV0ZXNcIjp7XCJyb29tVHlwZVwiOntcImVxXCI6XCIiICsgZXNjYXBlZFR5cGUgKyAiXCJ9fX1dfSI7CiAgICAgICAgfQoKICAgICAgICB2YXIgc3RhdGUgPSBSZWFkUGFyYW0oY29udGV4dCwgInN0YXRlIik7CiAgICAgICAgc3RyaW5nIHN0YXRlRmlsdGVyOwogICAgICAgIGlmIChzdHJpbmcuSXNOdWxsT3JXaGl0ZVNwYWNlKHN0YXRlKSkKICAgICAgICB7CiAgICAgICAgICAgIHN0YXRlRmlsdGVyID0gIntcIm9yXCI6W3tcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJhY3RpdmF0ZWRcIn19LHtcImN1cnJlbnRTdGF0ZVwiOntcImVxXCI6XCJkZWFjdGl2YXRlZFwifX1dfSI7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHZhciBlc2NhcGVkU3RhdGUgPSBzdGF0ZS5SZXBsYWNlKCJcXCIsICJcXFxcIikuUmVwbGFjZSgiXCIiLCAiXFxcIiIpOwogICAgICAgICAgICBzdGF0ZUZpbHRlciA9ICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiIiArIGVzY2FwZWRTdGF0ZSArICJcIn19IjsKICAgICAgICB9CgogICAgICAgIHZhciBmaWx0ZXJCb2R5ID0gIntcImFuZFwiOlsiICsgYXR0cmlidXRlRmlsdGVyICsgIiwiICsgc3RhdGVGaWx0ZXIgKyAiXX0iOwogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBMaXN0PHN0cmluZz4KICAgICAgICB7CiAgICAgICAgICAgICJwYWdlU2l6ZT0xMDAiLAogICAgICAgICAgICAiZmlsdGVyPSIgKyBmaWx0ZXJCb2R5CiAgICAgICAgfTsKCiAgICAgICAgc2VydmljZVRhc2suU2V0UXVlcnlTdHJpbmcoc3RyaW5nLkpvaW4oIiYiLCBxdWVyeVBhcmFtcykpOwoKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CgogICAgICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2VzcyA9PSBmYWxzZSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvck1lc3NhZ2U/LlRvU3RyaW5nKCkgPz8gIlNlcnZpY2UgY2FsbCBmYWlsZWQiOwogICAgICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPSAiZ2V0LWNoYXQtcm9vbXMtZmFpbHVyZSIsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9IG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBlcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSA9ICJTRVJWSUNFX0VSUk9SIiwKICAgICAgICAgICAgICAgICAgICAgICAgcm9vbXMgPSBuZXcgTGlzdDxvYmplY3Q+KCkKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJjaGF0IiwgInJvb21zIiwgImVycm9yIiB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlPy5kYXRhOwogICAgICAgICAgICB2YXIgaXRlbXMgPSByZXNwb25zZURhdGE/Lml0ZW1zOwogICAgICAgICAgICB2YXIgcm9vbXMgPSBuZXcgTGlzdDxvYmplY3Q+KCk7CgogICAgICAgICAgICBpZiAoaXRlbXMgIT0gbnVsbCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZm9yZWFjaCAodmFyIGl0ZW0gaW4gaXRlbXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgLy8gUnVudGltZSBtYXkgZXhwb3NlIGluc3RhbmNlIHBheWxvYWQgYXMgImF0dHJpYnV0ZXMiIG9yICJkYXRhIgogICAgICAgICAgICAgICAgICAgIHZhciBhdHRyaWJ1dGVzID0gaXRlbT8uYXR0cmlidXRlcyA/PyBpdGVtPy5kYXRhOwogICAgICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzID09IG51bGwpIGNvbnRpbnVlOwoKICAgICAgICAgICAgICAgICAgICB2YXIgbWV0YWRhdGEgPSBpdGVtPy5tZXRhZGF0YTsKICAgICAgICAgICAgICAgICAgICBzdHJpbmcgY3VycmVudFN0YXRlID0gbWV0YWRhdGEgIT0gbnVsbCA/IEdldFN0cmluZyhtZXRhZGF0YSwgImN1cnJlbnRTdGF0ZSIpIDogbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHJvb21JZCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGF0dHJpYnV0ZXMsICJjaGF0SW50ZWdyYXRpb24iKSAmJiBhdHRyaWJ1dGVzLmNoYXRJbnRlZ3JhdGlvbiAhPSBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICByb29tSWQgPSBHZXRTdHJpbmcoYXR0cmlidXRlcy5jaGF0SW50ZWdyYXRpb24sICJyb29tSWQiKTsKCiAgICAgICAgICAgICAgICAgICAgdmFyIG1lbWJlcnMgPSBuZXcgTGlzdDxvYmplY3Q+KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKEhhc1Byb3BlcnR5KGF0dHJpYnV0ZXMsICJtZW1iZXJzIikgJiYgYXR0cmlidXRlcy5tZW1iZXJzICE9IG51bGwpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICh2YXIgbSBpbiBhdHRyaWJ1dGVzLm1lbWJlcnMpCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtaWQgPSBHZXRTdHJpbmcobSwgIm1lbWJlcklkIikgPz8gR2V0U3RyaW5nKG0sICJhZHZpc29ySWQiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcnMuQWRkKG5ldyB7IG1lbWJlcklkID0gbWlkLCByb2xlID0gR2V0U3RyaW5nKG0sICJyb2xlIikgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHZhciBpbnN0YW5jZUtleSA9IEdldFN0cmluZyhpdGVtLCAia2V5Iik7CiAgICAgICAgICAgICAgICAgICAgcm9vbXMuQWRkKG5ldwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBHZXRTdHJpbmcoaXRlbSwgImlkIikgPz8gaW5zdGFuY2VLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlS2V5ID0gaW5zdGFuY2VLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBHZXRTdHJpbmcoYXR0cmlidXRlcywgInVzZXIiKSwKICAgICAgICAgICAgICAgICAgICAgICAgYWR2aXNvclR5cGUgPSBHZXRTdHJpbmcoYXR0cmlidXRlcywgImFkdmlzb3JUeXBlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIGFkdmlzb3JJZCA9IEdldFN0cmluZyhhdHRyaWJ1dGVzLCAiYWR2aXNvcklkIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHJvb21JZCA9IHJvb21JZCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gR2V0U3RyaW5nKGF0dHJpYnV0ZXMsICJzdGF0dXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVR5cGUgPSBHZXRTdHJpbmcoYXR0cmlidXRlcywgInJvb21UeXBlIiksCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF0ZVRpbWUgPSBHZXRTdHJpbmcoYXR0cmlidXRlcywgInN0YXJ0RGF0ZVRpbWUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgZW5kRGF0ZVRpbWUgPSBHZXRTdHJpbmcoYXR0cmlidXRlcywgImVuZERhdGVUaW1lIiksCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbWJlcnMgPSBtZW1iZXJzLAogICAgICAgICAgICAgICAgICAgICAgICBtZXRhZGF0YSA9IGN1cnJlbnRTdGF0ZSAhPSBudWxsID8gbmV3IHsgY3VycmVudFN0YXRlIH0gOiBudWxsCiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBUYXNrLkZyb21SZXN1bHQobmV3IFNjcmlwdFJlc3BvbnNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSA9ICJnZXQtY2hhdC1yb29tcy1zdWNjZXNzIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcgeyByb29tcyA9IHJvb21zIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAiY2hhdCIsICJyb29tcyIsICJzdWNjZXNzIiB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gImdldC1jaGF0LXJvb21zLWVycm9yIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJJbnRlcm5hbCBwcm9jZXNzaW5nIGVycm9yIiwKICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAiUFJPQ0VTU0lOR19FUlJPUiIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9IGV4Lk1lc3NhZ2UsCiAgICAgICAgICAgICAgICAgICAgcm9vbXMgPSBuZXcgTGlzdDxvYmplY3Q+KCkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAiY2hhdCIsICJyb29tcyIsICJlcnJvciIgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgUmVhZFBhcmFtKFNjcmlwdENvbnRleHQgY29udGV4dCwgc3RyaW5nIG5hbWUpCiAgICB7CiAgICAgICAgaWYgKGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzID09IG51bGwgfHwgIUhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCBuYW1lKSkKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgdmFyIHZhbCA9IGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzW25hbWVdOwogICAgICAgIHJldHVybiB2YWwgIT0gbnVsbCA/IHZhbC5Ub1N0cmluZygpIDogbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIHN0cmluZyBHZXRTdHJpbmcoZHluYW1pYyBvYmosIHN0cmluZyBuYW1lKQogICAgewogICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICBpZiAoSGFzUHJvcGVydHkob2JqLCBuYW1lKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIHYgPSBHZXRQcm9wZXJ0eVZhbHVlKG9iaiwgbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdj8uVG9TdHJpbmcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjYXRjaCB7IH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo="
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
@baseUrl = http://localhost:4201
|
|
20
20
|
@apiVersion = 1
|
|
21
|
-
@domain = touch
|
|
21
|
+
@domain = morph-touch
|
|
22
22
|
@user = core.user.user-001
|
|
23
|
-
@advisor = touch.portfolio-manager.pm-001
|
|
23
|
+
@advisor = morph-touch.portfolio-manager.pm-001
|
|
24
24
|
|
|
25
25
|
###############################################################################
|
|
26
26
|
# Get Chat Rooms by User
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "get-customer-info",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"order": 1,
|
|
15
15
|
"task": {
|
|
16
16
|
"key": "get-customer-info-task",
|
|
17
|
-
"domain": "touch",
|
|
17
|
+
"domain": "morph-touch",
|
|
18
18
|
"version": "1.0.0",
|
|
19
19
|
"flow": "sys-tasks"
|
|
20
20
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "get-matrix-sync",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"order": 1,
|
|
16
16
|
"task": {
|
|
17
17
|
"key": "get-matrix-sync",
|
|
18
|
-
"domain": "touch",
|
|
18
|
+
"domain": "morph-touch",
|
|
19
19
|
"version": "1.0.0",
|
|
20
20
|
"flow": "sys-tasks"
|
|
21
21
|
},
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"key": "get-rezervations",
|
|
3
|
+
"flow": "sys-functions",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"flowVersion": "1.0.0",
|
|
7
|
+
"tags": [
|
|
8
|
+
"rezervation"
|
|
9
|
+
],
|
|
10
|
+
"attributes": {
|
|
11
|
+
"scope": "I",
|
|
12
|
+
"task": {
|
|
13
|
+
"order": 1,
|
|
14
|
+
"task": {
|
|
15
|
+
"key": "get-rezervations-task",
|
|
16
|
+
"domain": "morph-touch",
|
|
17
|
+
"version": "1.0.0",
|
|
18
|
+
"flow": "sys-tasks"
|
|
19
|
+
},
|
|
20
|
+
"mapping": {
|
|
21
|
+
"location": "./src/GetRezervationsMapping.csx",
|
|
22
|
+
"code": "dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UaHJlYWRpbmcuVGFza3M7CnVzaW5nIEJCVC5Xb3JrZmxvdy5TY3JpcHRpbmc7CnVzaW5nIEJCVC5Xb3JrZmxvdy5EZWZpbml0aW9uczsKLy8vIDxzdW1tYXJ5PgovLy8gTWFwcGluZyBmb3IgR2V0QXZhaWxhYmxlU2xvdHNUYXNrIChEYXByU2VydmljZVRhc2sgLSBUeXBlIDMpCi8vLyBRdWVyaWVzIGFic2VuY2UtZW50cnkgd29ya2Zsb3cgdmlhIERhcHIgc2VydmljZSBpbnZvY2F0aW9uIHRvIGdldCBwdWJsaWMgaG9saWRheXMsIAovLy8gd29ya2luZyBob3VycyBjaGFuZ2VzLCBhbmQgcGVyc29uYWwgbGVhdmVzLgovLy8gVGhlbiBjYWxjdWxhdGVzIGF2YWlsYWJsZSBhcHBvaW50bWVudCBzbG90cyBmb3IgdGhlIGdpdmVuIGFkdmlzb3IgYW5kIGRhdGUuCi8vLyAKLy8vIFJlZmVyZW5jZTogaHR0cHM6Ly9naXRodWIuY29tL2J1cmdhbi10ZWNoL3ZuZXh0LXJ1bnRpbWUvYmxvYi9tYWluL2RvYy9lbi9mbG93L3Rhc2tzL2RhcHItc2VydmljZS5tZAovLy8gPC9zdW1tYXJ5PgpwdWJsaWMgY2xhc3MgR2V0UmV6ZXJ2YXRpb25zTWFwcGluZyA6IFNjcmlwdEJhc2UsIElNYXBwaW5nCnsKICAgIHB1YmxpYyBUYXNrPFNjcmlwdFJlc3BvbnNlPiBJbnB1dEhhbmRsZXIoV29ya2Zsb3dUYXNrIHRhc2ssIFNjcmlwdENvbnRleHQgY29udGV4dCkKICAgIHsKICAgICAgICB2YXIgc2VydmljZVRhc2sgPSB0YXNrIGFzIERhcHJTZXJ2aWNlVGFzazsKICAgICAgICBpZiAoc2VydmljZVRhc2sgPT0gbnVsbCkKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRPcGVyYXRpb25FeGNlcHRpb24oIlRhc2sgbXVzdCBiZSBhIERhcHJTZXJ2aWNlVGFzayIpOwoKICAgICAgICB2YXIgYXBwSWQgPSBHZXRDb25maWdWYWx1ZSgiREFQUl9BUFBfSUQiKTsKICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGFwcElkKSkKICAgICAgICAgICAgc2VydmljZVRhc2suU2V0QXBwSWQoYXBwSWQpOwoKICAgICAgICAvLyBSZWFkIHBhcmFtZXRlcnMgZnJvbSBxdWVyeSBzdHJpbmcgKEdFVCByZXF1ZXN0KQogICAgICAgIHZhciBhZHZpc29ySWQgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycyAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAiYWR2aXNvcklkIikgPyBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bImFkdmlzb3JJZCJdPy5Ub1N0cmluZygpIDogc3RyaW5nLkVtcHR5OwogICAgICAgIHZhciB1c2VySWQgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycyAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAidXNlcklkIikgPyBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bInVzZXJJZCJdPy5Ub1N0cmluZygpIDogc3RyaW5nLkVtcHR5OwogICAgICAgIHZhciBtYW5hZ2VySWQgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycyAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAibWFuYWdlcklkIikgPyBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bIm1hbmFnZXJJZCJdPy5Ub1N0cmluZygpIDogc3RyaW5nLkVtcHR5OwogICAgICAgIHZhciBzdGFydERhdGUgPSBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycyAhPSBudWxsICYmIEhhc1Byb3BlcnR5KGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzLCAic3RhcnREYXRlIikgPyBjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycz9bInN0YXJ0RGF0ZSJdPy5Ub1N0cmluZygpIDogc3RyaW5nLkVtcHR5OwogICAgICAgIHZhciBlbmREYXRlID0gY29udGV4dC5RdWVyeVBhcmFtZXRlcnMgIT0gbnVsbCAmJiBIYXNQcm9wZXJ0eShjb250ZXh0LlF1ZXJ5UGFyYW1ldGVycywgImVuZERhdGUiKSA/IGNvbnRleHQuUXVlcnlQYXJhbWV0ZXJzP1siZW5kRGF0ZSJdPy5Ub1N0cmluZygpIDogc3RyaW5nLkVtcHR5OwoKICAgICAgICAvLyBCdWlsZCBmaWx0ZXIgY29uZGl0aW9ucwogICAgICAgIHZhciBjb25kaXRpb25zID0gbmV3IExpc3Q8c3RyaW5nPigpOwoKICAgICAgICAvLyBDdXJyZW50U3RhdGUgaW4gKCJhY3RpdmUiLCAiY2FuLXN0YXJ0LW1lZXRpbmciLCAiYWNjZXB0LXRlcm1zIikKICAgICAgICBjb25kaXRpb25zLkFkZCgKICAgICAgICAgICAgIntcIm9yXCI6WyIgKwogICAgICAgICAgICAie1wiY3VycmVudFN0YXRlXCI6e1wiZXFcIjpcImFjdGl2ZVwifX0sIiArCiAgICAgICAgICAgICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiaW4tbWVldFwifX0sIiArCiAgICAgICAgICAgICJ7XCJjdXJyZW50U3RhdGVcIjp7XCJlcVwiOlwiYWNjZXB0LXRlcm1zXCJ9fSIgKwogICAgICAgICAgICAiXX0iKTsKCiAgICAgICAgLy8gU3RhdHVzID0gIkEiCiAgICAgICAgY29uZGl0aW9ucy5BZGQoIntcInN0YXR1c1wiOntcImVxXCI6XCJBXCJ9fSIpOwoKICAgICAgICAvLyBDb25kaXRpb25hbDogYWR2aXNvciBmaWx0ZXIg4oCUIHByaW1hcnkgYWR2aXNvciBPUiB2aWRlb0NhbGxVcmxUb0FkZCBtYXAgaGFzIGFuIGVudHJ5IGZvciB0aGlzIGFkdmlzb3IgaWQKICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KGFkdmlzb3JJZCkpCiAgICAgICAgewogICAgICAgICAgICB2YXIgZXNjYXBlZEFkdmlzb3JJZCA9IGFkdmlzb3JJZC5SZXBsYWNlKCJcXCIsICJcXFxcIikuUmVwbGFjZSgiXCIiLCAiXFxcIiIpOwogICAgICAgICAgICBjb25kaXRpb25zLkFkZCgKICAgICAgICAgICAgICAgICJ7XCJvclwiOlsiICsKICAgICAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1wiYWR2aXNvclwiOntcImVxXCI6XCIiICsgZXNjYXBlZEFkdmlzb3JJZCArICJcIn19fSwiICsKICAgICAgICAgICAgICAgICJ7XCJhdHRyaWJ1dGVzXCI6e1widmlkZW9DYWxsVXJsVG9BZGQuIiArIGVzY2FwZWRBZHZpc29ySWQgKyAiXCI6e1wiaXNOdWxsXCI6ZmFsc2V9fX0iICsKICAgICAgICAgICAgICAgICJdfSIpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ29uZGl0aW9uYWw6IHVzZXIgZmlsdGVyCiAgICAgICAgaWYgKCFzdHJpbmcuSXNOdWxsT3JFbXB0eSh1c2VySWQpKQogICAgICAgICAgICBjb25kaXRpb25zLkFkZCgie1wiYXR0cmlidXRlc1wiOntcInVzZXJcIjp7XCJlcVwiOlwiIiArIHVzZXJJZCArICJcIn19fSIpOwoKICAgICAgICAvLyBDb25kaXRpb25hbDogbWFuYWdlciBmaWx0ZXIKICAgICAgICBpZiAoIXN0cmluZy5Jc051bGxPckVtcHR5KG1hbmFnZXJJZCkpCiAgICAgICAgICAgIGNvbmRpdGlvbnMuQWRkKCJ7XCJhdHRyaWJ1dGVzXCI6e1wibWFuYWdlclwiOntcImVxXCI6XCIiICsgbWFuYWdlcklkICsgIlwifX19Iik7CgogICAgICAgIC8vIENvbmRpdGlvbmFsOiBzdGFydERhdGUgZmlsdGVyIChhdHRyaWJ1dGVzLnN0YXJ0RGF0ZVRpbWUgPj0gc3RhcnREYXRlKQogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoc3RhcnREYXRlKSkKICAgICAgICAgICAgY29uZGl0aW9ucy5BZGQoIntcImF0dHJpYnV0ZXNcIjp7XCJzdGFydERhdGVUaW1lXCI6e1wiZGd0XCI6XCIiICsgc3RhcnREYXRlICsgIlwifX19Iik7CgogICAgICAgIC8vIENvbmRpdGlvbmFsOiBlbmREYXRlIGZpbHRlciAoYXR0cmlidXRlcy5lbmREYXRlVGltZSA8PSBlbmREYXRlKQogICAgICAgIGlmICghc3RyaW5nLklzTnVsbE9yRW1wdHkoZW5kRGF0ZSkpCiAgICAgICAgICAgIGNvbmRpdGlvbnMuQWRkKCJ7XCJhdHRyaWJ1dGVzXCI6e1wiZW5kRGF0ZVRpbWVcIjp7XCJkbHRcIjpcIiIgKyBlbmREYXRlICsgIlwifX19Iik7CgogICAgICAgIHZhciBmaWx0ZXJKc29uID0gIntcImFuZFwiOlsiICsgc3RyaW5nLkpvaW4oIiwiLCBjb25kaXRpb25zKSArICJdfSI7CgogICAgICAgIHZhciBxdWVyeVBhcmFtcyA9IG5ldyBMaXN0PHN0cmluZz57CiAgICAgICAgICAgICJwYWdlU2l6ZT0xMDAiLAogICAgICAgICAgICAkImZpbHRlcj17ZmlsdGVySnNvbn0iCiAgICAgICAgfTsKICAgICAgICBMb2dFcnJvcigiVGVzdCBxdWVyeSBwYXJhbXM6ICIrc3RyaW5nLkpvaW4oIiYiLCBxdWVyeVBhcmFtcykpOwogICAgICAgIHNlcnZpY2VUYXNrLlNldFF1ZXJ5U3RyaW5nKHN0cmluZy5Kb2luKCImIiwgcXVlcnlQYXJhbXMpKTsKICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgVGFzazxTY3JpcHRSZXNwb25zZT4gT3V0cHV0SGFuZGxlcihTY3JpcHRDb250ZXh0IGNvbnRleHQpCiAgICB7CiAgICAgICAgdHJ5CiAgICAgICAgewogICAgICAgICAgICB2YXIgcmVzcG9uc2UgPSBjb250ZXh0LkJvZHk7CgogICAgICAgICAgICAvLyBDaGVjayBpZiBzZXJ2aWNlIGNhbGwgd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3MgPT0gZmFsc2UpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHZhciBlcnJvclR5cGUgPSBDbGFzc2lmeVNlcnZpY2VFcnJvcihyZXNwb25zZT8uZXJyb3JNZXNzYWdlPy5Ub1N0cmluZygpID8/ICIiKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9ICJzZXJ2aWNlLWVycm9yIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0gbmV3CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJGYWlsZWQgdG8gZmV0Y2ggYWJzZW5jZSBlbnRyaWVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb2RlID0gIlNFUlZJQ0VfRVJST1IiLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvclR5cGUgPSBlcnJvclR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvck1lc3NhZ2U/LlRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2VJbmZvID0gbmV3CiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcElkID0gcmVzcG9uc2U/Lm1ldGFkYXRhPy5hcHBJZD8uVG9TdHJpbmcoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZE5hbWUgPSByZXNwb25zZT8ubWV0YWRhdGE/Lm1ldGhvZE5hbWU/LlRvU3RyaW5nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwVmVyYiA9IHJlc3BvbnNlPy5tZXRhZGF0YT8uaHR0cFZlcmI/LlRvU3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgVGFncyA9IG5ld1tdIHsgImFwcG9pbnRtZW50cyIsICJlcnJvciIgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEdldCBpdGVtcyBmcm9tIHNlcnZpY2UgcmVzcG9uc2UKICAgICAgICAgICAgLy8gUmVzcG9uc2Ugc3RydWN0dXJlOiB7IGRhdGE6IHsgaXRlbXM6IFsuLi5dIH0sIGlzU3VjY2VzczogdHJ1ZSwgLi4uIH0KICAgICAgICAgICAgdmFyIHJlc3BvbnNlRGF0YSA9IHJlc3BvbnNlPy5kYXRhOwogICAgICAgICAgICB2YXIgaXRlbXMgPSByZXNwb25zZURhdGE/Lml0ZW1zOwoKICAgICAgICAgICAgcmV0dXJuIFRhc2suRnJvbVJlc3VsdChuZXcgU2NyaXB0UmVzcG9uc2UKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ID0gInJlemVydmF0aW9ucy1zdWNjZXNzIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpdGVtcwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFRhZ3MgPSBuZXdbXSB7ICJhcHBvaW50bWVudHMiLCAiYXZhaWxhYmlsaXR5IiwgInN1Y2Nlc3MiIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gVGFzay5Gcm9tUmVzdWx0KG5ldyBTY3JpcHRSZXNwb25zZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgPSAib3V0cHV0LWVycm9yIiwKICAgICAgICAgICAgICAgIERhdGEgPSBuZXcKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBlcnJvciA9ICJJbnRlcm5hbCBwcm9jZXNzaW5nIGVycm9yIiwKICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUgPSAiUFJPQ0VTU0lOR19FUlJPUiIsCiAgICAgICAgICAgICAgICAgICAgZXJyb3JEZXNjcmlwdGlvbiA9IGV4Lk1lc3NhZ2UKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUYWdzID0gbmV3W10geyAiYXBwb2ludG1lbnRzIiwgImVycm9yIiB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICAjcmVnaW9uIEhlbHBlciBNZXRob2RzCgogICAgcHJpdmF0ZSBzdHJpbmcgQ2xhc3NpZnlTZXJ2aWNlRXJyb3Ioc3RyaW5nIGVycm9yTWVzc2FnZSkKICAgIHsKICAgICAgICBpZiAoZXJyb3JNZXNzYWdlLkNvbnRhaW5zKCJ0aW1lb3V0IiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAidGltZW91dCI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygidW5hdXRob3JpemVkIiwgU3RyaW5nQ29tcGFyaXNvbi5PcmRpbmFsSWdub3JlQ2FzZSkpCiAgICAgICAgICAgIHJldHVybiAiYXV0aGVudGljYXRpb24iOwogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoImZvcmJpZGRlbiIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gImF1dGhvcml6YXRpb24iOwogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoIm5vdCBmb3VuZCIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gIm5vdC1mb3VuZCI7CiAgICAgICAgaWYgKGVycm9yTWVzc2FnZS5Db250YWlucygic2VydmljZSB1bmF2YWlsYWJsZSIsIFN0cmluZ0NvbXBhcmlzb24uT3JkaW5hbElnbm9yZUNhc2UpKQogICAgICAgICAgICByZXR1cm4gInNlcnZpY2UtdW5hdmFpbGFibGUiOwogICAgICAgIGlmIChlcnJvck1lc3NhZ2UuQ29udGFpbnMoImNvbm5lY3Rpb24iLCBTdHJpbmdDb21wYXJpc29uLk9yZGluYWxJZ25vcmVDYXNlKSkKICAgICAgICAgICAgcmV0dXJuICJjb25uZWN0aW9uLWVycm9yIjsKCiAgICAgICAgcmV0dXJuICJnZW5lcmFsLWVycm9yIjsKICAgIH0KCiAgICAjZW5kcmVnaW9uCn0K"
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
@baseUrl = http://localhost:4201
|
|
20
20
|
@apiVersion = 1
|
|
21
|
-
@domain = touch
|
|
21
|
+
@domain = morph-touch
|
|
22
22
|
|
|
23
23
|
###############################################################################
|
|
24
24
|
# Call get-rezervations function (uses get-rezervations-task)
|
|
@@ -54,6 +54,6 @@ X-Request-Id: {{$guid}}
|
|
|
54
54
|
|
|
55
55
|
###############################################################################
|
|
56
56
|
# DaprServiceTask (get-rezervations-task) calls:
|
|
57
|
-
# GET vnext-app-touch/api/v1/touch/workflows/rezervation/instances?pageSize=100&filter=<url-encoded-json>
|
|
57
|
+
# GET vnext-app-morph-touch/api/v1/morph-touch/workflows/rezervation/instances?pageSize=100&filter=<url-encoded-json>
|
|
58
58
|
# Filter JSON: {"and":[{"or":[{"currentState":{"eq":"active"}},{"currentState":{"eq":"in-meet"}}]},{"status":{"eq":"A"}},{"attributes":{"advisor":{"eq":"<advisorId>"}}},...]}
|
|
59
59
|
###############################################################################
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "get-room-messages",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"order": 1,
|
|
17
17
|
"task": {
|
|
18
18
|
"key": "get-matrix-room-messages",
|
|
19
|
-
"domain": "touch",
|
|
19
|
+
"domain": "morph-touch",
|
|
20
20
|
"version": "1.0.0",
|
|
21
21
|
"flow": "sys-tasks"
|
|
22
22
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"key": "send-room-message",
|
|
3
3
|
"flow": "sys-functions",
|
|
4
|
-
"domain": "touch",
|
|
4
|
+
"domain": "morph-touch",
|
|
5
5
|
"version": "1.0.0",
|
|
6
6
|
"flowVersion": "1.0.0",
|
|
7
7
|
"tags": [
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"order": 1,
|
|
17
17
|
"task": {
|
|
18
18
|
"key": "send-matrix-room-message",
|
|
19
|
-
"domain": "touch",
|
|
19
|
+
"domain": "morph-touch",
|
|
20
20
|
"version": "1.0.0",
|
|
21
21
|
"flow": "sys-tasks"
|
|
22
22
|
},
|
|
@@ -42,7 +42,9 @@ public class GetAvailableSlotsMapping : ScriptBase, IMapping
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
var requestedDate = DateTime.Parse(date);
|
|
45
|
-
|
|
45
|
+
var tz = ResolveTimeZone(context);
|
|
46
|
+
var todayInBusinessTz = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz).Date;
|
|
47
|
+
if (requestedDate.Date < todayInBusinessTz)
|
|
46
48
|
throw new ArgumentException("Date cannot be in the past.", "date");
|
|
47
49
|
|
|
48
50
|
var filterJson =
|
|
@@ -199,6 +201,7 @@ public class GetAvailableSlotsMapping : ScriptBase, IMapping
|
|
|
199
201
|
}
|
|
200
202
|
|
|
201
203
|
var availableSlots = CalculateAvailableSlots(workingHours, unavailableRanges, duration);
|
|
204
|
+
availableSlots = FilterSlotsExcludingPastForBusinessToday(availableSlots, requestedDate, ResolveTimeZone(context));
|
|
202
205
|
|
|
203
206
|
return Task.FromResult(new ScriptResponse
|
|
204
207
|
{
|
|
@@ -243,6 +246,85 @@ public class GetAvailableSlotsMapping : ScriptBase, IMapping
|
|
|
243
246
|
return "general-error";
|
|
244
247
|
}
|
|
245
248
|
|
|
249
|
+
/// <summary>
|
|
250
|
+
/// IANA id (e.g. Europe/Istanbul) or Windows id (Turkey Standard Time). Query overrides config.
|
|
251
|
+
/// </summary>
|
|
252
|
+
private TimeZoneInfo ResolveTimeZone(ScriptContext context)
|
|
253
|
+
{
|
|
254
|
+
string id = null;
|
|
255
|
+
if (context?.QueryParameters != null)
|
|
256
|
+
{
|
|
257
|
+
if (HasProperty(context.QueryParameters, "timeZone"))
|
|
258
|
+
id = context.QueryParameters["timeZone"]?.ToString();
|
|
259
|
+
else if (HasProperty(context.QueryParameters, "timezone"))
|
|
260
|
+
id = context.QueryParameters["timezone"]?.ToString();
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (string.IsNullOrWhiteSpace(id))
|
|
264
|
+
id = GetConfigValue("Appointments:TimeZone") ?? GetConfigValue("APPOINTMENT_TIMEZONE");
|
|
265
|
+
|
|
266
|
+
if (string.IsNullOrWhiteSpace(id))
|
|
267
|
+
id = "Europe/Istanbul";
|
|
268
|
+
|
|
269
|
+
return FindTimeZoneById(id.Trim());
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/// <summary>
|
|
273
|
+
/// Linux/macOS: IANA ids (Europe/Istanbul). Windows: often Turkey Standard Time.
|
|
274
|
+
/// Tries aliases, then fixed UTC+3 for Turkey (no DST since 2016) if system DB has neither.
|
|
275
|
+
/// </summary>
|
|
276
|
+
private static TimeZoneInfo FindTimeZoneById(string id)
|
|
277
|
+
{
|
|
278
|
+
foreach (var candidate in GetTimeZoneIdCandidates(id))
|
|
279
|
+
{
|
|
280
|
+
try
|
|
281
|
+
{
|
|
282
|
+
return TimeZoneInfo.FindSystemTimeZoneById(candidate);
|
|
283
|
+
}
|
|
284
|
+
catch (TimeZoneNotFoundException)
|
|
285
|
+
{
|
|
286
|
+
}
|
|
287
|
+
catch (InvalidTimeZoneException)
|
|
288
|
+
{
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (IsTurkeyTimeZoneId(id))
|
|
293
|
+
return CreateTurkeyFixedUtcPlus3TimeZone();
|
|
294
|
+
|
|
295
|
+
throw new TimeZoneNotFoundException($"Time zone ID '{id}' was not found on this system.");
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
private static IEnumerable<string> GetTimeZoneIdCandidates(string id)
|
|
299
|
+
{
|
|
300
|
+
yield return id;
|
|
301
|
+
|
|
302
|
+
if (string.Equals(id, "Europe/Istanbul", StringComparison.OrdinalIgnoreCase))
|
|
303
|
+
{
|
|
304
|
+
yield return "Turkey Standard Time";
|
|
305
|
+
}
|
|
306
|
+
else if (string.Equals(id, "Turkey Standard Time", StringComparison.OrdinalIgnoreCase))
|
|
307
|
+
{
|
|
308
|
+
yield return "Europe/Istanbul";
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
private static bool IsTurkeyTimeZoneId(string id)
|
|
313
|
+
{
|
|
314
|
+
return string.Equals(id, "Europe/Istanbul", StringComparison.OrdinalIgnoreCase)
|
|
315
|
+
|| string.Equals(id, "Turkey Standard Time", StringComparison.OrdinalIgnoreCase);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/// <summary>Fixed UTC+3; matches Turkey wall time since 2016 (DST abolished).</summary>
|
|
319
|
+
private static TimeZoneInfo CreateTurkeyFixedUtcPlus3TimeZone()
|
|
320
|
+
{
|
|
321
|
+
return TimeZoneInfo.CreateCustomTimeZone(
|
|
322
|
+
"Europe/Istanbul-Fallback",
|
|
323
|
+
TimeSpan.FromHours(3),
|
|
324
|
+
"Europe/Istanbul (UTC+3)",
|
|
325
|
+
"Europe/Istanbul (UTC+3)");
|
|
326
|
+
}
|
|
327
|
+
|
|
246
328
|
private int GetAppointmentDuration(ScriptContext context)
|
|
247
329
|
{
|
|
248
330
|
const int defaultDuration = 30;
|
|
@@ -464,5 +546,47 @@ public class GetAvailableSlotsMapping : ScriptBase, IMapping
|
|
|
464
546
|
return slots;
|
|
465
547
|
}
|
|
466
548
|
|
|
549
|
+
/// <summary>
|
|
550
|
+
/// When the requested calendar day equals "today" in the business timezone, drop slots whose
|
|
551
|
+
/// local start time is not after "now" in that timezone. Slot strings match working hours (wall clock in that TZ).
|
|
552
|
+
/// </summary>
|
|
553
|
+
private static List<string> FilterSlotsExcludingPastForBusinessToday(List<string> slots, DateTime requestedDate, TimeZoneInfo tz)
|
|
554
|
+
{
|
|
555
|
+
if (slots == null || slots.Count == 0)
|
|
556
|
+
return slots ?? new List<string>();
|
|
557
|
+
|
|
558
|
+
var nowInTz = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
|
|
559
|
+
if (requestedDate.Date != nowInTz.Date)
|
|
560
|
+
return slots;
|
|
561
|
+
|
|
562
|
+
var filtered = new List<string>();
|
|
563
|
+
var dayStartLocal = new DateTime(requestedDate.Year, requestedDate.Month, requestedDate.Day, 0, 0, 0, DateTimeKind.Unspecified);
|
|
564
|
+
|
|
565
|
+
foreach (var s in slots)
|
|
566
|
+
{
|
|
567
|
+
if (string.IsNullOrWhiteSpace(s))
|
|
568
|
+
continue;
|
|
569
|
+
|
|
570
|
+
var parts = s.Split(new[] { '-' }, 2, StringSplitOptions.None);
|
|
571
|
+
if (parts.Length != 2)
|
|
572
|
+
{
|
|
573
|
+
filtered.Add(s);
|
|
574
|
+
continue;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
if (!TimeSpan.TryParse(parts[0].Trim(), out var startTs))
|
|
578
|
+
{
|
|
579
|
+
filtered.Add(s);
|
|
580
|
+
continue;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
var slotStartLocal = dayStartLocal.Add(startTs);
|
|
584
|
+
if (slotStartLocal > nowInTz)
|
|
585
|
+
filtered.Add(s);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
return filtered;
|
|
589
|
+
}
|
|
590
|
+
|
|
467
591
|
#endregion
|
|
468
592
|
}
|
|
@@ -8,7 +8,7 @@ using BBT.Workflow.Definitions;
|
|
|
8
8
|
/// Mapping for query-chat-room-instances DaprServiceTask (Type 3).
|
|
9
9
|
/// Flow-level function (scope: F) -- no instance context.
|
|
10
10
|
/// Reads "user" OR "advisor" from query parameters (mutually exclusive).
|
|
11
|
-
/// For advisor: server filter advisorId=X OR
|
|
11
|
+
/// For advisor: server filter advisorId=X OR memberWithoutArray.{id} is not null (participant map key).
|
|
12
12
|
/// For user: returns rooms where user=X (server-side filter).
|
|
13
13
|
/// </summary>
|
|
14
14
|
public class GetChatRoomsMapping : ScriptBase, IMapping
|
|
@@ -44,12 +44,11 @@ public class GetChatRoomsMapping : ScriptBase, IMapping
|
|
|
44
44
|
else
|
|
45
45
|
{
|
|
46
46
|
var escaped = advisor.Replace("\\", "\\\\").Replace("\"", "\\\"");
|
|
47
|
-
attributeFilter =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
// "]}";
|
|
47
|
+
attributeFilter =
|
|
48
|
+
"{\"or\":[" +
|
|
49
|
+
"{\"attributes\":{\"advisorId\":{\"eq\":\"" + escaped + "\"}}}," +
|
|
50
|
+
"{\"attributes\":{\"memberWithoutArray." + escaped + "\":{\"isNull\":false}}}" +
|
|
51
|
+
"]}";
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
var roomType = ReadParam(context, "roomType");
|
|
@@ -45,9 +45,16 @@ public class GetRezervationsMapping : ScriptBase, IMapping
|
|
|
45
45
|
// Status = "A"
|
|
46
46
|
conditions.Add("{\"status\":{\"eq\":\"A\"}}");
|
|
47
47
|
|
|
48
|
-
// Conditional: advisor filter
|
|
48
|
+
// Conditional: advisor filter — primary advisor OR videoCallUrlToAdd map has an entry for this advisor id
|
|
49
49
|
if (!string.IsNullOrEmpty(advisorId))
|
|
50
|
-
|
|
50
|
+
{
|
|
51
|
+
var escapedAdvisorId = advisorId.Replace("\\", "\\\\").Replace("\"", "\\\"");
|
|
52
|
+
conditions.Add(
|
|
53
|
+
"{\"or\":[" +
|
|
54
|
+
"{\"attributes\":{\"advisor\":{\"eq\":\"" + escapedAdvisorId + "\"}}}," +
|
|
55
|
+
"{\"attributes\":{\"videoCallUrlToAdd." + escapedAdvisorId + "\":{\"isNull\":false}}}" +
|
|
56
|
+
"]}");
|
|
57
|
+
}
|
|
51
58
|
|
|
52
59
|
// Conditional: user filter
|
|
53
60
|
if (!string.IsNullOrEmpty(userId))
|
|
@@ -59,11 +66,11 @@ public class GetRezervationsMapping : ScriptBase, IMapping
|
|
|
59
66
|
|
|
60
67
|
// Conditional: startDate filter (attributes.startDateTime >= startDate)
|
|
61
68
|
if (!string.IsNullOrEmpty(startDate))
|
|
62
|
-
conditions.Add("{\"attributes\":{\"startDateTime\":{\"
|
|
69
|
+
conditions.Add("{\"attributes\":{\"startDateTime\":{\"dgt\":\"" + startDate + "\"}}}");
|
|
63
70
|
|
|
64
71
|
// Conditional: endDate filter (attributes.endDateTime <= endDate)
|
|
65
72
|
if (!string.IsNullOrEmpty(endDate))
|
|
66
|
-
conditions.Add("{\"attributes\":{\"endDateTime\":{\"
|
|
73
|
+
conditions.Add("{\"attributes\":{\"endDateTime\":{\"dlt\":\"" + endDate + "\"}}}");
|
|
67
74
|
|
|
68
75
|
var filterJson = "{\"and\":[" + string.Join(",", conditions) + "]}";
|
|
69
76
|
|
|
@@ -71,7 +78,7 @@ public class GetRezervationsMapping : ScriptBase, IMapping
|
|
|
71
78
|
"pageSize=100",
|
|
72
79
|
$"filter={filterJson}"
|
|
73
80
|
};
|
|
74
|
-
|
|
81
|
+
LogError("Test query params: "+string.Join("&", queryParams));
|
|
75
82
|
serviceTask.SetQueryString(string.Join("&", queryParams));
|
|
76
83
|
return Task.FromResult(new ScriptResponse());
|
|
77
84
|
}
|