ActionFunctionParams afp = (ActionFunctionParams) ThisObject;
DataPoint dp = afp.ActionDataPoint;
Subject subject = dp.Record.Subject;
Interaction interaction = subject.Interaction;
Project project = subject.CRFVersion.GetProject(interaction);
string projectName = project.Name;
DataPoint dpChanged_study = null;
DateTime time = DateTime.Now;
bool mailtobeSent = false;
string strToAddress = string.Empty;
Users users = Users.LoadAllUsers(dp.Interaction);
string strEnv = subject.StudySite.Study.Environment.Trim().ToUpper();
StudySite studySite = subject.StudySite;
string CTMSSiteNumber = dp.Record.Subject.StudySite.Site.Number;
string subjectName = subject.Name.Trim();
Record updatedRecord = dp.Record;
DataPoints dps = updatedRecord.DataPoints;
if (dp != null && dp.Active)
{DataPoint dp_AESFTYUPDTEMAIL = dp.Record.DataPoints.FindByFieldOID("AESFTYUPDTEMAIL");
DataPoint dp_AESFYHIDNEMAIL = dp.Record.DataPoints.FindByFieldOID("AESFYHIDNEMAIL");
DataPoint dp_AESERYN = dp.Record.DataPoints.FindByFieldOID("AESERYN");
DataPoint dpAEANTYN = dp.Record.DataPoints.FindByFieldOID("AEANTYN");
if ((dp_AESERYN != null && dp_AESERYN.Active) || (dpAEANTYN != null && dpAEANTYN.Active))
if ((dp_AESERYN.Data == "1" || dpAEANTYN.Data == "2") && dp_AESFTYUPDTEMAIL != null)
{ dp_AESFTYUPDTEMAIL.UnFreeze();
dp_AESFTYUPDTEMAIL.Enter("1", string.Empty, 0);
dp_AESFTYUPDTEMAIL.Freeze();
if (dp_AESERYN.Data != "1" && dpAEANTYN.Data != "2")
{dp_AESFTYUPDTEMAIL.UnFreeze();
dp_AESFTYUPDTEMAIL.Enter("0", string.Empty, 0);
dp_AESFTYUPDTEMAIL.Freeze();
if (GetDpChangeCountFromAudit(dp_AESFTYUPDTEMAIL) != 0)
if (dp_AESFTYUPDTEMAIL != null && GetDpChangeCountFromAudit(dp_AESFTYUPDTEMAIL) >= 1)
{ bool flag = (bool) CustomFunction.PerformCustomFunction("_GetPrev", subject.CRFVersion.ID, new object[] { dp_AESFTYUPDTEMAIL } );
for (int i = 0; i < dps.Count; i++)
DataPoint dpChanged = dps[i];
string prevValue = (string) CustomFunction.PerformCustomFunction("_GetPrevValue", subject.CRFVersion.ID, new object[] { dpChanged } );
string prevValue_1 = (string) CustomFunction.PerformCustomFunction("_GetPrevValue", subject.CRFVersion.ID, new object[] { dp_AESFTYUPDTEMAIL } );
string prevValue_2 = (string) CustomFunction.PerformCustomFunction("_GetPrevValue", subject.CRFVersion.ID, new object[] { dp_AESFYHIDNEMAIL } );
if (IsDpChanged(dpChanged) && dpChanged.ChangeCount > 1 && string.Compare(prevValue, dpChanged.Data, true) != 0 && flag && (prevValue_1 == "1" || dp_AESERYN.Data == "1" || dpAEANTYN.Data == "2") && dpChanged.Field.OID != "AE_UPD_NOW" && dpChanged.Field.OID != "AESFTYUPDTEMAIL" && prevValue_2 == "1")
LogLine = dpChanged.Record.RecordPosition;
dpChanged_study = dpChanged;
if (mailtobeSent && (dpChanged_study != null))
if (string.Compare(strEnv, "PROD", true) == 0)
User AE_PROD = users.FindByLogin("BWI_PRECEPT_SFTY_ALERTS");
if (AE_PROD != null) strToAddress = AE_PROD.Email;
User AE_AUX = users.FindByLogin("BWI_PRECEPT_AUX_ALERTS");
if (AE_AUX != null) strToAddress = AE_AUX.Email;
if (string.Compare(strToAddress, string.Empty) != 0)
string mailBody = (string) CustomFunction.PerformCustomFunction("GetAEUpdateMessageBody", subject.CRFVersion.ID, new object[] { updatedRecord } );
SendEmail(subject, mailBody, strToAddress, projectName, CTMSSiteNumber, subjectName, strEnv, LogLine, dpChanged_study);
CustomFunction.PerformCustomFunction("_GetEmailCount", subject.CRFVersion.ID, ThisObject);
private void SendEmail(Subject subject, string strMessageBody, string strToAddress, string projectName, string CTMSSiteNumber, string subjectName, string m_StrEnv, int LogLine, DataPoint dpChanged_study)
string strSubLine = string.Empty;
if (m_StrEnv == "PROD") strSubLine = "BWI PRECEPT UPDATED Serious or Unanticipated Adverse Event for " + subject.PrimaryName + " log line: " + LogLine;
else strSubLine = "BWI PRECEPT " + "<Environment: " + m_StrEnv + ">" + " UPDATED Serious or Unanticipated Adverse Event for " + subject.PrimaryName + " log line: " + LogLine;
if (m_StrEnv == "PROD") strSubLine = "BWI PRECEPT UPDATED Serious or Unanticipated Adverse Event Form for No subject log line: " + LogLine;
else strSubLine = "BWI PRECEPT " + "<Environment: " + m_StrEnv + ">" + " UPDATED Serious or Unanticipated Adverse Event for No subject log line: " + LogLine;
string strEmailFrom = "noreply@mdsol.com", strHeader = string.Empty, strBodyEmail = string.Empty, strCCAddress = string.Empty;
ArrayList AL_Msg = new ArrayList();
AL_Msg = (ArrayList) CustomFunction.PerformCustomFunction("_GetAESFTYMessage_Main", subject.CRFVersion.ID, new object[] { dpChanged_study, subject, strToAddress, strHeader, strBodyEmail, strToAddress } );
string strCreatedOrUpdatedBy = "Updated by: " + dpChanged_study.Interaction.TrueUser.FirstName + " " + dpChanged_study.Interaction.TrueUser.LastName + " [" + dpChanged_study.Interaction.TrueUser.Login + "]";
if (m_StrEnv == "PROD") strCCAddress = "";
strBodyEmail += "*** Attention: Study Safety Lead ***" + Environment.NewLine + "A Serious or Unanticipated Adverse Event has been generated/updated/inactivated/reactivated. Please review this event as soon as possible.";
strBodyEmail += Environment.NewLine;
strBodyEmail += Environment.NewLine;
strBodyEmail += AL_Msg[2].ToString();
strBodyEmail += Environment.NewLine;
strBodyEmail += strMessageBody;
strBodyEmail += strCreatedOrUpdatedBy;
strBodyEmail += Environment.NewLine + "CF Name - SFTY_ALERT_01";
strBodyEmail += Environment.NewLine;
strBodyEmail += Environment.NewLine;
strBodyEmail += "*** This message was generated by an automated system, please DO NOT reply to this message. ***";
if (string.Compare(strToAddress, string.Empty, true) != 0 && AL_Msg.Count > 3)
Message.SendEmail(AL_Msg[0].ToString(), strEmailFrom, strSubLine, strBodyEmail, AL_Msg[3].ToString(), null);