problem1: If multiple agents are sending emails to multiple users at the same time, then the email of one agent is getting inserted into the other. for exp: Agent Amit send email to user alex and agent shiva send email to user aman then after send email only agent shiva logs [Which Agent has sent the email to which user] will be created for both user alex and aman. Hope you will understand.
----SQL Procedure
CREATE PROCEDURE [dbo].[Get_SendEmailSendTOPAX_CS_V1]
@PAXUID Varchar(250),
@AgentName Varchar(250)
AS
BEGIN
SET NOCOUNT ON;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRANSACTION;
if EXISTS(select 1 from [dbo].[tbl_agent] where agentgalaxyname=@AgentName AND Isactive=1)
BEGIn
IF OBJECT_ID('#SendEmailPAX_CS', 'U') IS NOT NULL
DROP TABLE #SendEmailPAX_CS;
--DROP TABLE IF EXISTS dbo.#SendEmailPAX_CS;
Create table #SendEmailPAX_CS
(
PAXUID Varchar(250),
AgentName Varchar(250),
BookingID INT,
BookingTypeID INT,
AgentID INT ,
Gateway_Type nvarchar(250),
Gateway_Type_Name nvarchar(250),
Gateway_Email nvarchar(250),
AirlineName nvarchar(250),
Gateway nvarchar(250),
TollFreeNumber nvarchar(250),
Subject_TFN varchar(50),
ConsentURL_ varchar(50) ,
GatewayID INT ,
PAX_Email varchar(50),
PAXEmailSend_ID INT,
EMail_Subject varchar(250),
FinalGateway varchar(250)
)
INSERt INTO #SendEmailPAX_CS (PAXUID,AgentName)
SELeCT @PAXUID,@AgentName
--For AgentID
UPDATE SEP
SET SEP.AgentID = TA.AgentID
from #SendEmailPAX_CS SEP
INNER JOIN tbl_Agent TA
ON TA.AgentGalaxyName=@AgentName
--For BookingID
UPDATE SEP
SET SEP.BookingID = TPD.PassengerDetailID , BookingTypeID=TPD.BookingTypeID
from #SendEmailPAX_CS SEP
INNER JOIN tbl_PassengerDetail TPD
ON TPD.PassengerUID=@PAXUID
--Charging gateway Type
UPDATE #SendEmailPAX_CS
SET Gateway_Type = APD.Gateway_Type,Gateway_Type_Name=APD.Gateway_Type_Name,PAX_Email=APD.PAX_Email,
FinalGateway=(
case
when #SendEmailPAX_CS.Gateway_Type='Everyware' THEN 'SFC'
when #SendEmailPAX_CS.BookingTypeID in (4,1023,1025) THEN 'Cancellation'
ELSE APD.Gateway_Type end)
FROM (SELECT TOP 1 SUBSTRING(gateway,0, CHARINDEX('-',gateway)) [Gateway_Type],Gateway [Gateway_Type_Name] ,PAX_Email,PNR FROM [dbo].tbl_AuthorizePaymentDetails
where pnr=(select cast(BookingID as varchar) from #SendEmailPAX_CS where PAXUID=@PAXUID) ORDER BY ID DESC) AS APD
WHERE #SendEmailPAX_CS.BookingID = APD.PNR;
--GET Gateway Details
UPDATE #SendEmailPAX_CS
SEt Gateway_Email=MGT.Gateway_Email,Gateway=MGT.Gateway,TollFreeNumber=MGT.TollFreeNumber,AirlineName=MGT.AirlineName,Subject_TFN=MGT.Subject_TFN,
ConsentURL_=MGT.ConsentURL
from (select top 1 Gateway_Email [Gateway_Email],TravelName [Gateway], AirlineName [AirlineName],
REPLACE(REPLACE(TollFreeNumber, CHAR(13), ''), CHAR(10), '') [TollFreeNumber],
REPLACE(REPLACE(Subject_TFN, CHAR(13), ''), CHAR(10), '')[Subject_TFN],ConsentURL[ConsentURL]
from [dbo].tbl_ManageGateway where Gateway_type=(Select top 1 FinalGateway from #SendEmailPAX_CS where PAXUID=@PAXUID)) AS MGT
Select PAXUID,AgentName,BookingID,BookingTypeID,AgentID,Gateway_Type,Gateway_Type_Name,
Gateway_Email,AirlineName,Gateway,
TollFreeNumber,Subject_TFN,ConsentURL_,
GatewayID,PAX_Email ,
PAXEmailSend_ID ,
EMail_Subject ,
FinalGateway from #SendEmailPAX_CS where PAXUID=@PAXUID
DROP TABLE #SendEmailPAX_CS
END
COMMIT TRANSACTION;
END
------------------procedure 2
CREATE procedure [dbo].[InsertCaseHistory_SendEmail]
@AgentID varchar(250),
@Query nvarchar(MAX),
@PassengerID varchar(250)
AS
BEGIn
SET NOCOUNT ON;
INSERT INTO dbo.tbl_CaseHistory (AgentID,Query,PassengerID,CreationDate,isactive)
VALUES (@AgentID, @Query, @PassengerID,GETDATE(),1)
END
-----------------------
C# Code
rahul singh rathourPosted Jan 24, 2024, 11:25 AM
Hi Asma,
instead of a temp table, I have created a history table that is working fine sometimes when multiple agents are working on the same page results are the same however results should be different. If after rebuilding the table it is working fine.
Asma KhalidPosted Jan 15, 2024, 1:53 PM
Your Drop Temp table is actually the issue. Since you are dropping this table each time a new agent send is received, only the last agent info will be maintained. Here what you can do is instead of a temp table create a history table with properties to, from, msg, creation_datetime, update_datetime . This table will only holds inserts, no deletion and no updating. You can then do processing on this table and get latest or any other date/time conversation history.
Thanks & Regards