using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FrameworkDAL.Query.MessageHubService.TemplateApproval { /// /// SQL Query Builder for Template Approval and WA Ticket Assignment setup. /// Includes TCALL updates, MEIP metadata inserts, and REST action configuration. /// public static class TemplateApprovalQB { #region TCALL Updates /// /// Accept a ticket: sets status to 1, action taken to ACCEPT, updates modification time. /// Requires TemplateApprovalDTO.TicketNumber. /// public const string ACCEPT_TEMPLATE_APPROVAL = @" UPDATE TCALL SET STATUS = 1, ACTIONTAKEN = 'ACCEPT', MODIFIEDON = SYSUTCDATETIME() WHERE CALLNUMBER = @TicketNumber; "; /// /// Reject a ticket: sets status to 2, action taken to REJECT, updates modification time. /// Requires TemplateApprovalDTO.TicketNumber. /// public const string REJECT_TEMPLATE_APPROVAL = @" UPDATE TCALL SET STATUS = 2, ACTIONTAKEN = 'REJECT', MODIFIEDON = SYSUTCDATETIME() WHERE CALLNUMBER = @TicketNumber; "; /// /// Forward a ticket: sets status to 3, action taken to FORWARD, stores customer remarks. /// Requires TemplateApprovalDTO.TicketNumber and TemplateApprovalDTO.Remarks. /// public const string FORWARD_TEMPLATE = @" UPDATE TCALL SET STATUS = 3, ACTIONTAKEN = 'FORWARD', CUSTOMERREMARKS = @Remarks, MODIFIEDON = SYSUTCDATETIME() WHERE CALLNUMBER = @TicketNumber; "; #endregion #region MEIP Inserts public const string INSERT_CAPABILITY_CALL_STATUS_UPDATE = @" INSERT INTO MEIPCAPABILITY (CAPABILITYCODE, DESCRIPTION) VALUES ('CALL_STATUS_UPDATE', 'Update call status via REST API'); "; public const string INSERT_ACTION_GENERIC_REST = @" INSERT INTO MEIPACTIONREGISTRY (ACTIONNAME, ASSEMBLYNAME, CLASSNAME) VALUES ('GenericRestAction', 'EIP.Core', 'GenericRestAction'); "; public const string INSERT_CAPABILITY_ACTION_MAP = @" INSERT INTO MEIPCAPABILITYACTIONMAP (CAPABILITYCODE, ACTIONNAME, SEQUENCEORDER) VALUES ('CALL_STATUS_UPDATE', 'GenericRestAction', 1); "; public const string INSERT_FLOW_WA_TICKET_ASSIGNMENT = @" INSERT INTO MEIPFLOWDEFINITION (TENANTID, FLOWCODE, VERSION, STATUS, JSONDEFINITION) VALUES ( 'TNT001', 'WA_TICKET_ASSIGNMENT', 1, 'Published', N'{ ""flowCode"": ""WA_TICKET_ASSIGNMENT"", ""version"": 1, ""start"": ""SEND_MESSAGE"", ""steps"": { ""SEND_MESSAGE"": { ""type"": ""MESSAGE"", ""messageKey"": ""WA_TICKET_ASSIGNMENT"", ""next"": ""WAIT_DECISION"" }, ""WAIT_DECISION"": { ""type"": ""EXTERNAL_ACTION"", ""decisionMap"": { ""ACCEPT"": ""UPDATE_STATUS_ACCEPT"", ""REJECT"": ""UPDATE_STATUS_REJECT"" } }, ""UPDATE_STATUS_ACCEPT"": { ""type"": ""CAPABILITY"", ""capabilityCode"": ""CALL_STATUS_UPDATE"", ""next"": ""END"" }, ""UPDATE_STATUS_REJECT"": { ""type"": ""CAPABILITY"", ""capabilityCode"": ""CALL_STATUS_UPDATE"", ""next"": ""END"" }, ""END"": { ""type"": ""END"" } } }'); "; public const string INSERT_MESSAGE_TEMPLATE_WA_TICKET = @" INSERT INTO MEIPMESSAGETEMPLATE (TENANTID, MESSAGEKEY, LANGUAGECODE, CHANNEL, TEMPLATECONTENT) VALUES ( 'TNT001', 'WA_TICKET_ASSIGNMENT', 'en', 'WA', N'You have a new ticket {{data.callId}}. Customer: {{data.customerName}} Reply: ACCEPT - to accept REJECT - to reject Or click buttons below.' ); "; public const string INSERT_CHANNEL_ENDPOINT_INTERNAL_API = @" INSERT INTO MEIPCHANNELENDPOINT (TENANTID, CHANNELTYPE, PROVIDERNAME) VALUES ('TNT001', 'INTERNAL_API', 'PrimaryBackend'); "; #endregion #region MEIP REST Action Config /// /// Insert REST action config for CALL_STATUS_UPDATE. /// Maps capability to HTTP POST endpoint with JSON payload. /// public const string INSERT_REST_ACTION_CONFIG_CALL_STATUS_UPDATE = @" INSERT INTO MEIPRESTACTIONCONFIG (ActionName, HttpMethod, EndpointPath, PayloadTemplate, HeadersJson, TimeoutSeconds, IsActive) VALUES ( 'CALL_STATUS_UPDATE_REST', 'POST', '/call/statusupdate/', N'{ ""callId"": ""{{data.callId}}"", ""choice"": ""{{decision}}"", ""remarks"": ""{{data.remarks}}"" }', '{""Content-Type"":""application/json""}', 30, 1 ); "; #endregion } }