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
}
}