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.
---Below is the 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
UPDATE SEP
SET SEP.AgentID = TA.AgentID
from #SendEmailPAX_CS SEP
INNER JOIN tbl_Agent TA
ON TA.AgentGalaxyName=@AgentName
UPDATE SEP
SET SEP.BookingID = TPD.PassengerDetailID , BookingTypeID=TPD.BookingTypeID
from #SendEmailPAX_CS SEP
INNER JOIN tbl_PassengerDetail TPD
ON TPD.PassengerUID=@PAXUID
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;
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