using framework_business;
using framework_library;
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Reflection;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Linq;
using System.Collections.Generic;
public partial class controls_admin_campaigns : System.Web.UI.UserControl
{
#region methods
///
/// Method to Bind Campaign Data
///
private void BindCampaignData()
{
try
{
lblTotalCredits.Text = SMSCredit.currentBalance.ToString();
lblTotalAllocated.Text = SMSCredit.allocatedBalance.ToString();
lblTotalAvailable.Text = SMSCredit.availableBalance.ToString();
CheckThreshold();
ArrayList campaignList = xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaign), "", "", "campaignTitle");
rptCampaigns.DataSource = campaignList;
rptCampaigns.DataBind();
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
private void CheckThreshold()
{
try
{
if (SMSCredit.availableBalance < SMSCredit.threshold)
{
oEmail mail = new oEmail();
mail.Subject = "SMS Credit Threshold Reached";
StringBuilder emailBody = new StringBuilder();
emailBody.AppendLine("Your SMS Credit Threshold has been reached.");
emailBody.AppendLine("Current Avaialble Credits: " + SMSCredit.availableBalance.ToString());
mail.fromAddress = ConfigurationManager.AppSettings["from"];
mail.bccAddress = ConfigurationManager.AppSettings["bcc"];
mail.toAddress = ConfigurationManager.AppSettings["admin"];
mail.Body = emailBody.ToString();
communication.SendAnEmail(mail);
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Bind Templates
///
private void BindTemplates()
{
ArrayList templates = new ArrayList();
try
{
templates = xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplate), "templateTypeId", "3", "templateName");
ddEmailTemplate.DataSource = templates;
ddEmailTemplate.DataTextField = "templateName";
ddEmailTemplate.DataValueField = "recId";
ddEmailTemplate.DataBind();
ddEmailTemplate.Items.Insert(0, new ListItem("None Selected", "0"));
}
catch (Exception ex)
{
exception.HandleException("Admin:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("Error.aspx", false);
}
}
///
/// Populate Form Values
///
///
private void PopulatePageFormValues(ref oCampaign _Campaign)
{
try
{
BindCampaignTypes();
BindCampaignIntervals();
txtTitle.Value = _Campaign.campaignTitle;
if (ddCampaignType.Items.FindByValue(_Campaign.campaignType.ToString()) != null)
ddCampaignType.SelectedValue = _Campaign.campaignType.ToString();
ddMessageType.SelectedValue = _Campaign.messageType.ToString();
ToggleMessageTypes();
if (_Campaign.messageType == 1)
edEmailMessage.Content = _Campaign.campaignBody;
else if (_Campaign.messageType == 2)
txbMessageSMS.Value = _Campaign.campaignBody;
if (ddInterval.Items.FindByValue(_Campaign.interval.ToString()) != null)
ddInterval.SelectedValue = _Campaign.interval.ToString();
if (_Campaign.nextSend.Year > 1901)
{
txbStartDate.Text = _Campaign.nextSend.ToString("dd/MM/yyyy");
txbTime.Text = _Campaign.nextSend.ToString("HH:mm");
}
else
{
txbStartDate.Text = string.Empty;
txbTime.Text = string.Empty;
}
chkActive.Checked = _Campaign.isActive;
string currentState = "";
divCurrentState.Visible = _Campaign.recId > 0;
if (_Campaign.isDraft)
currentState = "Draft";
else if (_Campaign.lastSent > Convert.ToDateTime("1900-01-01"))
currentState = "Sent";
else
currentState = "Pending";
lblCurrentState.Text = currentState;
//<%#(Convert.ToBoolean(DataBinder.Eval(Container.DataItem, "isDraft"))==true)?"Draft":Convert.ToDateTime(DataBinder.Eval(Container.DataItem, "lastSent")) > Convert.ToDateTime("1900-01-01") ? "Sent": "Pending" %>
if (_Campaign.recId > 0)
{
divRecipients.Visible = true;
BindRecipients(_Campaign.recId);
}
else
divRecipients.Visible = false;
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
private void BindRecipients(int campaignId)
{
try
{
DataTable dtRecipients = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oCampaignRecipient), "campaignId,isIncluded", campaignId.ToString() + ",1", "recipientName");
Session["dtRecipient"] = dtRecipients;
lblRecipientCount.Text = "Number of Recipients: " + dtRecipients.Rows.Count.ToString();
if (RecipientCount > SMSCredit.availableBalance)
{
btnSave.Enabled = false;
lblRecipientCount.ForeColor = System.Drawing.Color.Red;
}
else
{
btnSave.Enabled = true;
lblRecipientCount.ForeColor = System.Drawing.Color.Empty;
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Bind Campaign Types
///
private void BindCampaignTypes()
{
try
{
DataTable dtCampaignTypes = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oCampaignType), "isActive", "1");
ddCampaignType.DataSource = dtCampaignTypes;
ddCampaignType.DataTextField = "campaignType";
ddCampaignType.DataValueField = "recId";
ddCampaignType.DataBind();
if (dtCampaignTypes.Rows.Count == 1)
ddCampaignType.Enabled = false;
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Bind Campaign Intervals
///
private void BindCampaignIntervals()
{
try
{
DataTable dtCampaignIntervals = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oCampaignInterval), "isActive", "1");
ddInterval.DataSource = dtCampaignIntervals;
ddInterval.DataTextField = "interval";
ddInterval.DataValueField = "recId";
ddInterval.DataBind();
if (dtCampaignIntervals.Rows.Count == 1)
ddInterval.Enabled = false;
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Save Form Values
///
///
private void SavePageFormValues(ref oCampaign _Campaign)
{
try
{
_Campaign.campaignTitle = txtTitle.Value;
_Campaign.campaignType = int.Parse(ddCampaignType.SelectedValue);
_Campaign.messageType = int.Parse(ddMessageType.SelectedValue);
if (_Campaign.messageType == 1)
_Campaign.campaignBody = edEmailMessage.Content;
else if (_Campaign.messageType == 2)
_Campaign.campaignBody = txbMessageSMS.Value;
else
_Campaign.campaignBody = "";
_Campaign.interval = int.Parse(ddInterval.SelectedValue);
if (_Campaign.interval == 1)
_Campaign.isRecurring = false;
else
_Campaign.isRecurring = true;
DateTime dateOnly = DateTime.Now;
DateTime timeOnly = new DateTime();
if (txbStartDate.Text != string.Empty)
dateOnly = utils.formatStringToDate(txbStartDate.Text);
if (txbTime.Text != string.Empty)
{
timeOnly = Convert.ToDateTime(txbTime.Text);
}
_Campaign.nextSend = dateOnly.Date.Add(timeOnly.TimeOfDay);
_Campaign.isActive = chkActive.Checked;
_Campaign.dateUpdated = DateTime.Now;
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Method to Toggle Panels
///
///
private void TogglePanels(string panelName)
{
switch (panelName)
{
case "pnlCampaignPage":
pnlCampaignPage.Visible = true;
pnlCampaignList.Visible = false;
break;
case "pnlCampaignList":
pnlCampaignPage.Visible = false;
pnlCampaignList.Visible = true;
break;
}
//clear result
pnlResult.Visible = false;
}
///
/// Toggle Message Types
///
private void ToggleMessageTypes()
{
switch (ddMessageType.SelectedValue)
{
case "0":
pnlEmailMessage.Visible = false;
pnlSMSMessage.Visible = false;
break;
case "1"://email
pnlEmailMessage.Visible = true;
pnlSMSMessage.Visible = false;
MessageType = "email";
break;
case "2"://sms
pnlEmailMessage.Visible = false;
pnlSMSMessage.Visible = true;
MessageType = "sms";
break;
}
}
///
/// Generate Recipient List
///
///
private void GenerateRecipients(bool clearExisting = true)
{
try
{
int surfaceId = Convert.ToInt32(ddRecipientSurface.SelectedValue.ToString());
string filterField = string.Empty;
string filterValues = string.Empty;
string filter = string.Empty;
if (handler.ReturnSetup().code == "STUD-1")
{
filterField = "School|IntakeYear";
string schoolValues = string.Empty;
string intakeYearValues = string.Empty;
foreach (ListItem item in lstRecipientFilterSchool.Items.GetSelectedItems())
{
if (item.Selected)
{
if (schoolValues != string.Empty)
schoolValues += ",'" + item.Value.ToString() + "'";
else
schoolValues += "'" + item.Value.ToString() + "'";
}
}
foreach (ListItem item in lstRecipientFilterIntakeYear.Items.GetSelectedItems())
{
if (item.Selected)
{
if (intakeYearValues != string.Empty)
intakeYearValues += ",'" + item.Value.ToString() + "'";
else
intakeYearValues += "'" + item.Value.ToString() + "'";
}
}
filterValues = schoolValues + "|" + intakeYearValues;
if (schoolValues != string.Empty)
{
if (filter != string.Empty)
filter += " AND ";
filter += "ProfileHeader_School IN (" + schoolValues + ")";
}
if (intakeYearValues != string.Empty)
{
if (filter != string.Empty)
filter += " AND ";
filter += "ProfileHeader_IntakeYear IN (" + intakeYearValues + ")";
}
}
else
{
filterField = ddRecipientFilter.SelectedValue.ToString();
foreach (ListItem item in lstRecipientFilterValue.Items.GetSelectedItems())
{
if (item.Selected)
{
if (filterValues != string.Empty)
filterValues += ",'" + item.Value.ToString() + "'";
else
filterValues += "'" + item.Value.ToString() + "'";
}
}
if (filterField != "0")
filter = filterField + " IN (" + filterValues + ")";
}
if (surfaceId > 0 && ddRecipientName.SelectedValue.ToString() != "0" && ddRecipientNumber.SelectedValue.ToString() != "0")
{
int totalRows = xData.GetSurfaceQueryDataCount(surfaceId, 0, "", filter);
oCampaign campaign = (oCampaign)Session["Campaign"];
campaign.contactSourceSurface = surfaceId;
campaign.contactNumberField = ddRecipientNumber.SelectedValue.ToString();
campaign.contactNameField = ddRecipientName.SelectedValue.ToString();
campaign.filterField = filterField;
campaign.filterValue = filterValues;
xData.UpdateTyped("recId", campaign.recId.ToString(), typeof(oCampaign), campaign);
DataTable dtRecipients = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oCampaignRecipient), "campaignId,isIncluded", campaign.recId.ToString() + ",1", "recipientName");
DataTable dtGenerated = xData.GetSurfaceQueryDataPaged(surfaceId, 0, totalRows, "", "", handler.ReturnUser().recId, 0, filter, true);
DataView view = new DataView(dtGenerated);
DataTable dtRec = view.ToTable("Recipients", false, ddRecipientName.SelectedValue.ToString(), ddRecipientNumber.SelectedValue.ToString(), "itemID");
foreach (DataRow row in dtRec.Rows)
{
DataRow newRecipientRow = dtRecipients.NewRow();
newRecipientRow["recipientName"] = row[ddRecipientName.SelectedValue.ToString()].ToString();
newRecipientRow["recipientNumber"] = row[ddRecipientNumber.SelectedValue.ToString()].ToString();
newRecipientRow["surfaceItemId"] = row["itemID"].ToString();
newRecipientRow["isIncluded"] = false;
newRecipientRow["recId"] = 0;
var dr = from r in dtRecipients.AsEnumerable()
where r.Field("recipientName") == newRecipientRow["recipientName"].ToString()
&& r.Field("recipientNumber") == newRecipientRow["recipientNumber"].ToString()
select r;
if (dr.AsDataView().Count == 0)
dtRecipients.Rows.Add(newRecipientRow);
}
Session["dtRecipient"] = dtRecipients;
grdRecipients.DataSource = dtRecipients;
grdRecipients.DataBind();
lblRecipientIncludedCount.Text = "Recipient Count: " + RecipientCount.ToString();
btnRecipientSave.Visible = RecipientCount > 0;
upRecipient.Update();
}
}
catch (Exception ex)
{
exception.HandleException("campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Validate Campaign
///
///
private bool ValidateCampaign()
{
bool result = true;
try
{
DateTime dateOnly = DateTime.Now;
DateTime timeOnly = new DateTime();
if (txbStartDate.Text != string.Empty)
dateOnly = utils.formatStringToDate(txbStartDate.Text);
if (txbTime.Text != string.Empty)
timeOnly = Convert.ToDateTime(txbTime.Text);
DateTime dateToCheck = dateOnly.Date.Add(timeOnly.TimeOfDay);
int idToIgnore = 0;
if (utils.verifySession("Campaign"))
{
idToIgnore = ((oCampaign)Session["Campaign"]).recId;
}
foreach (oCampaign campaign in xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaign), "recId,~DATEONLYnextSend", "~<>" + idToIgnore.ToString() + "," + dateOnly.ToString("MM/dd/yyyy")))
{
DateTime existingDateTime = campaign.nextSend;
if (existingDateTime.Subtract(dateToCheck).TotalMinutes < 15 && existingDateTime.Subtract(dateToCheck).TotalMinutes > -15)
{
result = false;
pnlResult.Visible = true;
lblResult.Text = "Campaign (" + campaign.campaignTitle + " - " + campaign.nextSend.ToString("dd/MM/yyyy hh:mm tt") + ") already exists for that time slot";
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
return result;
}
///
/// bind surfaces
///
private void BindSurfaces()
{
try
{
DataTable apps = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurface), "isActive", "1", "surface");
if (handler.ReturnSetup().code == "STUD-1")
{
ArrayList allowedSurfaces = new ArrayList();
allowedSurfaces.Add("Profiles");
//allowedSurfaces.Add("DetailsofPrimaryCaregivers");
DataTable sourceSurface = apps.AsEnumerable()
.Where(r => allowedSurfaces.Contains(r.Field("name")))
.CopyToDataTable();
ddRecipientSurface.DataSource = sourceSurface;
}
else
ddRecipientSurface.DataSource = apps;
ddRecipientSurface.DataTextField = "surface";
ddRecipientSurface.DataValueField = "recId";
ddRecipientSurface.DataBind();
ddRecipientSurface.Items.Insert(0, new ListItem("select...", "0"));
if (utils.verifySession("Campaign"))
{
oCampaign campaign = (oCampaign)Session["Campaign"];
if (ddRecipientSurface.Items.FindByValue(campaign.contactSourceSurface.ToString()) != null)
{
ddRecipientSurface.Items.FindByValue(campaign.contactSourceSurface.ToString()).Selected = true;
ddRecipientSurface_SelectedIndexChanged(null, null);
}
}
}
catch (Exception ex)
{
exception.HandleException("campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
#endregion
#region events
///
/// Page Load Event
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
BindCampaignData();
BindTemplates();
if (utils.verifySession("campaign"))
{
oCampaign campaign = (oCampaign)Session["campaign"];
}
if (utils.verifySession("eventToCampaigns"))
{
SetCampaignFromEvent();
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// set campaign from event
///
private void SetCampaignFromEvent()
{
try
{
oCalendarEvent evnt = (oCalendarEvent)Session["eventToCampaigns"];
oCampaign campaign = new oCampaign();
campaign.campaignTitle = "Reminder for " + evnt.subject + " (created "+DateTime.Now.ToString("dd/MM/yyyy HH:mm")+")";
campaign.campaignType = 1;
ddCampaignType.Items.Add(new ListItem("Appointment Reminder", "1"));
foreach (oCalendarEventModule calmod in xData.GetTypedByCriteriaSpecific("recId", typeof(oCalendarEventModule), "calendarId", evnt.calendarId.ToString()))
{
foreach (oSurfaceField field in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "recId", calmod.entityNameField.ToString()))
{
campaign.contactNameField = field.surfaceFieldName;
}
foreach (oSurfaceField field in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "recId", calmod.entityMobileField.ToString()))
{
campaign.contactNumberField = field.surfaceFieldName;
}
campaign.contactSourceSurface = calmod.entityId;
campaign.filterField = evnt.filterField;
campaign.filterValue = evnt.filterValue;
}
campaign.isDraft = true;
campaign.isActive = true;
campaign.isRecurring = false;
campaign.interval = 1;
campaign.messageType = 2;
campaign.nextSend = evnt.start.AddDays(-1);
campaign.recId = xData.SaveTyped("recId", typeof(oCampaign), campaign);
TogglePanels("pnlCampaignPage");
Session["CampaignId"] = campaign.recId;
Session["Campaign"] = campaign;
IncludeAll = false;
PopulatePageFormValues(ref campaign);
pnlSMSMessage.Visible = true;
//saveDraft();
ArrayList newRecipList = new ArrayList();
foreach (oCalendarEventContact contact in xData.GetTypedByCriteriaSpecific("recId", typeof(oCalendarEventContact), "calendarEventId,isIncluded", evnt.recId.ToString() + ",1"))
{
oCampaignRecipient newRecip = new oCampaignRecipient();
newRecip.campaignId = Convert.ToInt32(Session["CampaignId"].ToString());
newRecip.surfaceItemId = contact.contactSurfaceItemId;
newRecip.recipientName = contact.recipientName;
newRecip.recipientNumber = contact.recipientNumber;
newRecip.isIncluded = contact.isIncluded;
newRecipList.Add(newRecip);
}
xData.UpdateTypedCollection("recId", typeof(oCampaignRecipient), newRecipList);
DataTable dtRecipients = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oCampaignRecipient), "campaignId,isIncluded", campaign.recId.ToString() + ",1", "recipientName");
Session["dtRecipient"] = dtRecipients;
lblRecipientCount.Text = "Recipient Count: " + RecipientCount.ToString();
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showRecipientModal", "$('#modRecipient').modal('hide');", true);
if (RecipientCount > SMSCredit.availableBalance)
{
btnSave.Enabled = false;
lblRecipientCount.ForeColor = System.Drawing.Color.Red;
}
else
{
btnSave.Enabled = true;
lblRecipientCount.ForeColor = System.Drawing.Color.Empty;
}
upCampaigns.Update();
utils.disposeSession("eventToCampaigns");
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// New Campaign
///
///
///
protected void btnNewCampaign_Click(object sender, EventArgs e)
{
try
{
//show Content Specific
TogglePanels("pnlCampaignPage");
Session["CampaignId"] = 0;
utils.disposeSession("Campaign");
oCampaign Campaign = new oCampaign();
IncludeAll = false;
PopulatePageFormValues(ref Campaign);
pnlEmailMessage.Visible = false;
pnlSMSMessage.Visible = false;
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Edit the Campaign
///
///
///
protected void lnkEdit_Click(object sender, EventArgs e)
{
oCampaign _Campaign = new oCampaign();
ArrayList catList = new ArrayList();
try
{
if (sender.GetType() == typeof(LinkButton))
{
int recId = int.Parse(((LinkButton)sender).CommandArgument);
if (recId > 0)
{
Session["CampaignId"] = recId;
//enumerate list
foreach (oCampaign cat in xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaign), "recId", recId.ToString()))
{
//assign object
_Campaign = cat;
//populate page form
PopulatePageFormValues(ref _Campaign);
Session["Campaign"] = _Campaign;
break;
}
//show Campaign Form
IncludeAll = false;
TogglePanels("pnlCampaignPage");
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Clone the Campaign
///
///
///
protected void lnkClone_Click(object sender, EventArgs e)
{
oCampaign _Campaign = new oCampaign();
try
{
if (sender.GetType() == typeof(LinkButton))
{
int recId = int.Parse(((LinkButton)sender).CommandArgument);
if (recId > 0)
{
Session["CampaignId"] = 0;
foreach (oCampaign campaigntoClone in xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaign), "recId", recId.ToString()))
{
//assign object
_Campaign = campaigntoClone;
_Campaign.recId = 0;
_Campaign.campaignTitle += " (Cloned)";
//populate page form
PopulatePageFormValues(ref _Campaign);
Session["Campaign"] = _Campaign;
break;
}
//show Campaign Form
IncludeAll = false;
TogglePanels("pnlCampaignPage");
saveDraft(true);
int newCampaignId = Convert.ToInt32(Session["CampaignId"].ToString());
List recipList = xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaignRecipient), "campaignId,isIncluded", recId.ToString() + ",1")
.Cast()
.ToList();
recipList.ForEach(x => x.campaignId = newCampaignId);
ArrayList recipients = new ArrayList(recipList);
xData.SaveTypedCollection("recId", typeof(oCampaignRecipient), recipients);
BindRecipients(newCampaignId);
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// save draft method
///
///
private void saveDraft(bool isClone = false)
{
oCampaign Campaign = new oCampaign();
try
{
if (utils.verifySession("Campaign") && ((oCampaign)Session["Campaign"]).recId > 0)//update mode
{
Campaign = (oCampaign)Session["Campaign"];
Campaign.isDraft = true;
//save form values
SavePageFormValues(ref Campaign);
if (xData.UpdateTyped("recId", Campaign.recId.ToString(), typeof(oCampaign), Campaign))
{
Session["CampaignId"] = Campaign.recId;
Session["Campaign"] = Campaign;
BindCampaignData();
pnlResult.Visible = true;
lblResult.Text = "your changes were updated successfully.";
}
}
else
{
if (utils.verifySession("Campaign") && isClone)
Campaign = (oCampaign)Session["Campaign"];
//save form values
SavePageFormValues(ref Campaign);
if (!xData.VerifyExists("recId", typeof(oCampaign), "campaignTitle", Campaign.campaignTitle, ""))
{
//setup initial values for campaign
Campaign.dateSaved = DateTime.Now;
Campaign.isDraft = true;
oUser usr = handler.ReturnUser();
Campaign.createdBy = usr.recId;
Campaign.recId = xData.SaveTyped("recId", typeof(oCampaign), Campaign);
if (Campaign.recId > 0)
{
Session["CampaignId"] = Campaign.recId;
Session["Campaign"] = Campaign;
BindCampaignData();
PopulatePageFormValues(ref Campaign);
pnlResult.Visible = true;
lblResult.Text = "the Campaign was created successfully.";
}
}
else
{
pnlResult.Visible = true;
lblResult.Text = "A campaign with this title already exists on the system";
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Remove the Campaign
///
///
///
protected void lnkRemove_Click(object sender, EventArgs e)
{
try
{
if (sender.GetType() == typeof(LinkButton))
{
//
int recId = int.Parse(((LinkButton)sender).CommandArgument);
//Delete cat
if (xData.DeleteTyped("recId", recId.ToString(), typeof(oCampaign)))
{
//rebind pages grid
BindCampaignData();
pnlResult.Visible = true;
//display successful result
lblResult.Text = "the selected Campaign was deleted successfully.";
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Cancel
///
///
///
protected void btnCancel_Click(object sender, EventArgs e)
{
try
{
Session["CampaignId"] = 0;
utils.disposeSession("Campaign");
BindCampaignData();
//show list
TogglePanels("pnlCampaignList");
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Save Click
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
oCampaign Campaign = new oCampaign();
try
{
if (ValidateCampaign())
{
if (utils.verifySession("Campaign") && ((oCampaign)Session["Campaign"]).recId > 0)//update mode
{
Campaign = (oCampaign)Session["Campaign"];
Campaign.isDraft = false;
//save form values
SavePageFormValues(ref Campaign);
if (xData.UpdateTyped("recId", Campaign.recId.ToString(), typeof(oCampaign), Campaign))
{
Session["CampaignId"] = Campaign.recId;
Session["Campaign"] = Campaign;
BindCampaignData();
pnlResult.Visible = true;
lblResult.Text = "your changes were updated successfully.";
}
}
else
{
//save form values
SavePageFormValues(ref Campaign);
if (!xData.VerifyExists("recId", typeof(oCampaign), "campaignTitle", Campaign.campaignTitle, ""))
{
//setup initial values for campaign
Campaign.dateSaved = DateTime.Now;
Campaign.isDraft = false;
oUser usr = handler.ReturnUser();
Campaign.createdBy = usr.recId;
Campaign.recId = xData.SaveTyped("recId", typeof(oCampaign), Campaign);
if (Campaign.recId > 0)
{
Session["CampaignId"] = Campaign.recId;
Session["Campaign"] = Campaign;
BindCampaignData();
PopulatePageFormValues(ref Campaign);
pnlResult.Visible = true;
lblResult.Text = "the Campaign was created successfully.";
}
}
else
{
pnlResult.Visible = true;
lblResult.Text = "A campaign with this title already exists on the system";
}
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Save Draft Click
///
///
///
protected void btnDraft_Click(object sender, EventArgs e)
{
saveDraft();
}
///
/// Selected Index Changed event
///
///
///
protected void ddCampaignType_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (ddCampaignType.SelectedValue == "1")
txbMessageSMS.Value = "Dear {name}, this is just a reminder of your appointment with {customer} tomorrow, {startDate} at {startTime}.See you then.";
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Message Type Selection Changed
///
///
///
protected void ddMessageType_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
ToggleMessageTypes();
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Email Template selected index changed
///
///
///
protected void ddEmailTemplate_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (ddEmailTemplate.SelectedValue != "0")
{
ArrayList templateList = new ArrayList();
templateList = xData.GetTypedByCriteriaSpecific("recId", typeof(oTemplate), "recId", ddEmailTemplate.SelectedValue);
foreach (oTemplate template in templateList)
{
//apply template to editor
edEmailMessage.Content = template.templateContent;
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Send Test Email
///
///
///
protected void lnkSendEmailTest_Click(object sender, EventArgs e)
{
try
{
if (edEmailMessage.Content != String.Empty)
{
if (txtTestEmails.Value != String.Empty)
{
oEmail testEmail = new oEmail();
testEmail.Subject = txtTitle.Value;
testEmail.Body = edEmailMessage.Content;
testEmail.Body = testEmail.Body.Replace("src=\"/images", "src=\"" + handler.ReturnConfigAppSetting("WebAddy") + "/images");
testEmail.Body = testEmail.Body.Replace("{WebAddress}", handler.ReturnConfigAppSetting("WebAddy"));
testEmail.toAddress = txtTestEmails.Value;
testEmail.fromAddress = handler.ReturnConfigAppSetting("from");
bool success = false;
success = communication.SendAnEmail(testEmail);
lblResultEmailTest.Visible = true;
if (success)
lblResultEmailTest.Text = "Email Test message was sent successfully.";
else
lblResultEmailTest.Text = "Email Test message failed to send.";
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// Send a Test SMS
///
///
///
protected void lnkSendTextSMS_Click(object sender, EventArgs e)
{
try
{
if (txbMessageSMS.Value != String.Empty)
{
if (txtMobileNumbers.Value != String.Empty)
{
lblResultSMSTest.Visible = true;
if (txtMobileNumbers.Value.Contains(","))//send the sms in a batch
{
int resultBatch = xSendEasy.SendSMSBatch(handler.ReturnConfigAppSetting("smsU"), handler.ReturnConfigAppSetting("smsP"), txtMobileNumbers.Value.Split(char.Parse(",")), txbMessageSMS.Value);
if (resultBatch < 0)
{
lblResultSMSTest.Text = "SMS Failed: " + xSendEasy.ReturnErrorDetail(resultBatch);
}
else
{
lblResultSMSTest.Text = "SMS Test message was sent successfully.";
}
}
else//send individual
{
long resultSingle = xSendEasy.SendSMS(handler.ReturnConfigAppSetting("smsU"), handler.ReturnConfigAppSetting("smsP"), txtMobileNumbers.Value, txbMessageSMS.Value);
if (resultSingle < 0)
{
lblResultSMSTest.Text = "SMS Failed: " + xSendEasy.ReturnErrorDetail(Convert.ToInt32(resultSingle));
}
else
{
lblResultSMSTest.Text = "SMS Test message was sent successfully.";
}
}
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// recipients click
///
///
///
protected void lnkRecipients_Click(object sender, EventArgs e)
{
if (MessageType == "email")
{
lblRecipientNumber.Text = "Contact Email";
}
else if (MessageType == "sms")
{
lblRecipientNumber.Text = "Contact Number";
}
ReadonlyRecipients = false;
divRecipientsFilter.Visible = !ReadonlyRecipients;
BindSurfaces();
upRecipient.Update();
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showRecipientModal", "$('#modRecipient').modal('show');", true);
}
///
/// surface change
///
///
///
protected void ddRecipientSurface_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
if (ddRecipientSurface.SelectedValue != null)
{
if (MessageType == "sms")
{
DataTable numberFields = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceField), "isActive,validationType,surfaceId", "1," + ((int)pNums.ValidationType.ContactNumber).ToString() + "," + ddRecipientSurface.SelectedValue.ToString(), "surfaceFieldName");
foreach (oSurfaceField labelFields in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "isActive,surfaceFieldTypeId,surfaceId", "1,29," + ddRecipientSurface.SelectedValue.ToString(), "surfaceFieldName"))
{
foreach (oSurfaceField labelNumberFields in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "recId,validationType", labelFields.relationalFields + "," + ((int)pNums.ValidationType.ContactNumber).ToString()))
{
DataTable numberLabelFields = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceField), "recId", labelFields.recId.ToString());
numberFields.Merge(numberLabelFields);
}
}
ddRecipientNumber.DataSource = numberFields;
ddRecipientNumber.DataTextField = "surfaceFieldDisplay";
ddRecipientNumber.DataValueField = "surfaceFieldName";
ddRecipientNumber.DataBind();
ddRecipientNumber.Items.Insert(0, new ListItem("select...", "0"));
}
else if (MessageType == "email")
{
DataTable emailFields = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceField), "isActive,validationType,surfaceId", "1," + ((int)pNums.ValidationType.Email).ToString() + "," + ddRecipientSurface.SelectedValue.ToString(), "surfaceFieldName");
foreach (oSurfaceField labelFields in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "isActive,surfaceFieldTypeId,surfaceId", "1,29," + ddRecipientSurface.SelectedValue.ToString(), "surfaceFieldName"))
{
foreach (oSurfaceField labelEmailFields in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "recId,validationType", labelFields.relationalFields + "," + ((int)pNums.ValidationType.Email).ToString()))
{
DataTable emailLabelFields = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceField), "recId", labelFields.recId.ToString());
emailFields.Merge(emailLabelFields);
}
}
ddRecipientNumber.DataSource = emailFields;
ddRecipientNumber.DataTextField = "surfaceFieldDisplay";
ddRecipientNumber.DataValueField = "surfaceFieldName";
ddRecipientNumber.DataBind();
ddRecipientNumber.Items.Insert(0, new ListItem("select...", "0"));
}
DataTable nameFields = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceField), "isActive,surfaceFieldTypeId,surfaceId,surfaceFieldName", "1,~()3|29," + ddRecipientSurface.SelectedValue.ToString() + ",~%name", "surfaceFieldName");
ddRecipientName.DataSource = nameFields;
ddRecipientName.DataTextField = "surfaceFieldDisplay";
ddRecipientName.DataValueField = "surfaceFieldName";
ddRecipientName.DataBind();
ddRecipientName.Items.Insert(0, new ListItem("select...", "0"));
if (handler.ReturnSetup().code == "STUD-1")//only show sbf filters
{
divFilterStandard.Visible = false;
divFilterSBF.Visible = true;
int schoolLookupCatId = 0;
foreach (oSurfaceLookupCategory cat in xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceLookupCategory), "lookupCategory,isActive", "Schools,1"))
{
schoolLookupCatId = cat.recId;
}
DataTable dtSchoolValues = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceLookup), "categoryId,isActive", schoolLookupCatId.ToString() + ",1", "sequence");
lstRecipientFilterSchool.DataSource = dtSchoolValues;
lstRecipientFilterSchool.DataTextField = "display";
lstRecipientFilterSchool.DataValueField = "display";
lstRecipientFilterSchool.DataBind();
lstRecipientFilterIntakeYear.Items.Clear();
for (int i = 2010; i <= DateTime.Now.Year; i++)
{
string display = i.ToString();
if (i == DateTime.Now.Year - 4)
display = i.ToString() + " (Grade 8)";
if (i == DateTime.Now.Year - 3)
display = i.ToString() + " (Grade 9)";
if (i == DateTime.Now.Year - 2)
display = i.ToString() + " (Grade 10)";
if (i == DateTime.Now.Year - 1)
display = i.ToString() + " (Grade 11)";
if (i == DateTime.Now.Year)
display = i.ToString() + " (Grade 12)";
lstRecipientFilterIntakeYear.Items.Add(new ListItem(display, i.ToString()));
}
}
else
{
divFilterStandard.Visible = true;
divFilterSBF.Visible = false;
DataTable filterFields = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceField), "isActive,surfaceFieldTypeId,surfaceId", "1,6," + ddRecipientSurface.SelectedValue.ToString(), "surfaceFieldName");
ddRecipientFilter.DataSource = filterFields;
ddRecipientFilter.DataTextField = "surfaceFieldDisplay";
ddRecipientFilter.DataValueField = "surfaceFieldName";
ddRecipientFilter.DataBind();
ddRecipientFilter.Items.Insert(0, new ListItem("select...", "0"));
}
if (utils.verifySession("Campaign"))
{
oCampaign campaign = (oCampaign)Session["Campaign"];
if (ddRecipientNumber.Items.FindByValue(campaign.contactNumberField.ToString()) != null)
ddRecipientNumber.Items.FindByValue(campaign.contactNumberField.ToString()).Selected = true;
if (ddRecipientName.Items.FindByValue(campaign.contactNameField.ToString()) != null)
ddRecipientName.Items.FindByValue(campaign.contactNameField.ToString()).Selected = true;
if (handler.ReturnSetup().code == "STUD-1")
{
int filterIndex = 0;
foreach (string fieldType in campaign.filterValue.Split('|'))
{
foreach (string fields in fieldType.Split(','))
{
switch (filterIndex)
{
case 0://school
if (lstRecipientFilterSchool.Items.FindByValue(fields.Replace("'", "")) != null)
{
lstRecipientFilterSchool.Items.FindByValue(fields.Replace("'", "")).Selected = true;
}
break;
case 1://intake year
if (lstRecipientFilterIntakeYear.Items.FindByValue(fields.Replace("'", "")) != null)
{
lstRecipientFilterIntakeYear.Items.FindByValue(fields.Replace("'", "")).Selected = true;
}
break;
default:
break;
}
}
filterIndex++;
}
GenerateRecipients(true);
}
else
{
if (ddRecipientFilter.Items.FindByValue(campaign.filterField.ToString()) != null)
{
ddRecipientFilter.Items.FindByValue(campaign.filterField.ToString()).Selected = true;
ddRecipientFilter_SelectedIndexChanged(null, null);
}
}
}
}
}
catch (Exception ex)
{
exception.HandleException("campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// recipient filter selected index change
///
///
///
protected void ddRecipientFilter_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
string fieldId = ddRecipientFilter.SelectedValue;
if (fieldId != "0")
{
int lookupCatId = ((oSurfaceField)xData.GetTypedByCriteriaSpecific("recId", typeof(oSurfaceField), "surfaceFieldName", fieldId)[0]).lookupCategory;
DataTable dtFilterValues = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceLookup), "categoryId,isActive", lookupCatId.ToString() + ",1", "sequence");
lstRecipientFilterValue.DataSource = dtFilterValues;
lstRecipientFilterValue.DataTextField = "display";
lstRecipientFilterValue.DataValueField = "display";
lstRecipientFilterValue.DataBind();
lstRecipientFilterValue.Items.Insert(0, new ListItem("select..."));
if (utils.verifySession("Campaign"))
{
oCampaign campaign = (oCampaign)Session["Campaign"];
foreach (string fields in campaign.filterValue.Split(','))
{
if (lstRecipientFilterValue.Items.FindByValue(fields.Replace("'", "")) != null)
{
lstRecipientFilterValue.Items.FindByValue(fields.Replace("'", "")).Selected = true;
}
}
//if (lstRecipientFilterValue.SelectedIndex != -1)
// GenerateRecipients(true);
}
}
}
catch (Exception ex)
{
exception.HandleException("campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// btn generate click
///
///
///
protected void btnGenerate_Click(object sender, EventArgs e)
{
GenerateRecipients();
}
///
/// recipient save
///
///
///
protected void btnRecipientSave_Click(object sender, EventArgs e)
{
try
{
ArrayList currentList = new ArrayList();
ArrayList newList = new ArrayList();
oCampaign campaign = new oCampaign();
string contactNameField = ddRecipientName.SelectedValue.ToString();
string contactNumberField = ddRecipientNumber.SelectedValue.ToString();
if (utils.verifySession("Campaign"))
{
campaign = (oCampaign)Session["Campaign"];
currentList = xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaignRecipient), "campaignId,isIncluded", campaign.recId.ToString() + ",1");
if (currentList.Count > 0)
{
foreach (oCampaignRecipient item in currentList)
{
item.isIncluded = false;
}
xData.UpdateTypedCollection("recId", typeof(oCampaignRecipient), currentList);
}
}
DataTable dtRecipients = (DataTable)Session["dtRecipient"];
foreach (DataRow row in dtRecipients.Rows)
{
if (row["isIncluded"].ToString() == "True")
{
oCampaignRecipient campaignRecipient = new oCampaignRecipient();
campaignRecipient.campaignId = campaign.recId;
campaignRecipient.recipientName = row["recipientName"].ToString();
campaignRecipient.recipientNumber = row["recipientNumber"].ToString();
campaignRecipient.isIncluded = true;
campaignRecipient.surfaceItemId = Convert.ToInt32(row["surfaceItemId"].ToString());
newList.Add(campaignRecipient);
}
}
xData.UpdateTypedCollection("recId", typeof(oCampaignRecipient), newList);
lblRecipientCount.Text = "Recipient Count: " + RecipientCount.ToString();
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showRecipientModal", "$('#modRecipient').modal('hide');", true);
if (RecipientCount > SMSCredit.availableBalance)
{
btnSave.Enabled = false;
lblRecipientCount.ForeColor = System.Drawing.Color.Red;
}
else
{
btnSave.Enabled = true;
lblRecipientCount.ForeColor = System.Drawing.Color.Empty;
}
upCampaigns.Update();
}
catch (Exception ex)
{
exception.HandleException("campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// include all click
///
///
///
protected void lnkIncludeAll_Click(object sender, EventArgs e)
{
try
{
LinkButton lnkIncludeAll = (LinkButton)sender;
DataTable dtRecipients = (DataTable)Session["dtRecipient"];
if (IncludeAll)
{
IncludeAll = false;
foreach (DataRow row in dtRecipients.Rows)
{
row["isIncluded"] = false;
}
}
else
{
IncludeAll = true;
foreach (DataRow row in dtRecipients.Rows)
{
row["isIncluded"] = true;
}
}
Session["dtRecipient"] = dtRecipients;
grdRecipients.DataSource = dtRecipients;
grdRecipients.DataBind();
lnkIncludeAll.Text = IncludeAll ? "exclude all" : "include all";
lblRecipientIncludedCount.Text = "Recipient Count: " + RecipientCount.ToString();
btnRecipientSave.Visible = RecipientCount > 0;
upRecipient.Update();
}
catch (Exception ex)
{
exception.HandleException("campaigns:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// recipient prerender
///
///
///
protected void rptRecipient_PreRender(object sender, EventArgs e)
{
Repeater rptRecipient = (Repeater)sender;
LinkButton lnkIncludeAll = (LinkButton)rptRecipient.Controls[0].Controls[0].FindControl("lnkIncludeAll");
lnkIncludeAll.Text = IncludeAll ? "exclude all" : "include all";
}
///
/// recipient item created
///
///
///
protected void rptRecipient_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header)
{
LinkButton lnkIncludeAll = (LinkButton)e.Item.FindControl("lnkIncludeAll");
lnkIncludeAll.Text = IncludeAll ? "exclude all" : "include all";
}
}
///
/// check included
///
///
///
protected void chkIncluded_CheckedChanged(object sender, EventArgs e)
{
int selRowIndex = ((GridViewRow)(((CheckBox)sender).Parent.Parent)).RowIndex;
CheckBox cb = (CheckBox)grdRecipients.Rows[selRowIndex].FindControl("chkIncluded");
Label lblId = (Label)grdRecipients.Rows[selRowIndex].FindControl("lblId");
Label lblName = (Label)grdRecipients.Rows[selRowIndex].FindControl("lblName");
Label lblNumber = (Label)grdRecipients.Rows[selRowIndex].FindControl("lblNumber");
DataTable dtRecipients = (DataTable)Session["dtRecipient"];
DataRow[] foundRows = dtRecipients.Select("recId = " + lblId.Text + "AND recipientName = '" + lblName.Text + "' AND recipientNumber = '" + lblNumber.Text + "'");
foundRows[0]["isIncluded"] = cb.Checked;
Session["dtRecipient"] = dtRecipients;
grdRecipients.DataSource = dtRecipients;
//grdRecipients.DataBind();
lblRecipientIncludedCount.Text = "Recipient Count: " + RecipientCount.ToString();
btnRecipientSave.Visible = RecipientCount > 0;
upRecipient.Update();
}
///
/// recipientlist click
///
///
///
protected void lnkRecipientList_Click(object sender, EventArgs e)
{
oCampaign _Campaign = new oCampaign();
ArrayList catList = new ArrayList();
try
{
if (sender.GetType() == typeof(LinkButton))
{
int recId = int.Parse(((LinkButton)sender).CommandArgument);
if (recId > 0)
{
Session["CampaignId"] = recId;
catList = xData.GetTypedByCriteriaSpecific("recId", typeof(oCampaign), "recId", recId.ToString());
//enumerate list
foreach (oCampaign cat in catList)
{
//assign object
_Campaign = cat;
Session["Campaign"] = _Campaign;
break;
}
ReadonlyRecipients = true;
BindSurfaces();
GenerateRecipients();
divRecipientsFilter.Visible = !ReadonlyRecipients;
upRecipient.Update();
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "showRecipientModal", "$('#modRecipient').modal('show');", true);
}
}
}
catch (Exception ex)
{
exception.HandleException("Campaigns:", MethodBase.GetCurrentMethod().Name, ex, Session["campaign"]);
Response.Redirect("/error", false);
}
}
///
/// grid recipients prerender
///
///
///
protected void grdRecipients_PreRender(object sender, EventArgs e)
{
if (grdRecipients.Rows.Count > 0)
{
LinkButton lnkIncludeAll = (LinkButton)grdRecipients.Controls[0].Controls[0].FindControl("lnkIncludeAll");
lnkIncludeAll.Text = IncludeAll ? "exclude all" : "include all";
}
}
///
/// grid recipients rowcreated
///
///
///
protected void grdRecipients_RowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
e.Row.TableSection = TableRowSection.TableHeader;
}
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.TableSection = TableRowSection.TableBody;
}
if (e.Row.RowType == DataControlRowType.Footer)
{
e.Row.TableSection = TableRowSection.TableFooter;
}
}
#endregion
#region Properties
///
/// Include All Property
///
public bool IncludeAll
{
get
{
if (ViewState["includeAll"] == null)
return false;
else
return (bool)ViewState["includeAll"];
}
set
{
ViewState["includeAll"] = value;
}
}
///
/// Calc Recipient Count
///
public int RecipientCount
{
get
{
int counter = 0;
DataTable dtRecipients = (DataTable)Session["dtRecipient"];
foreach (DataRow row in dtRecipients.Rows)
{
if (row["isIncluded"].ToString() == "True")
{
counter++;
}
}
return counter;
}
}
public oSMSCredit SMSCredit
{
get
{
return (oSMSCredit)(xData.GetTypedByCriteriaSpecific("recId", typeof(oSMSCredit), "customerCode", handler.ReturnSetup().code, "", "pal_", true)[0]);
}
}
public string MessageType
{
get
{
string returnVal = "";
if (ViewState["messageType"] == null)
{
if (utils.verifySession("campaign"))
{
oCampaign campaign = (oCampaign)Session["campaign"];
switch (campaign.messageType)
{
case 1:
returnVal = "email";
break;
case 2:
returnVal = "sms";
break;
default:
break;
}
}
return returnVal;
}
else
return ViewState["messageType"].ToString();
}
set
{
ViewState["messageType"] = value;
}
}
public bool ReadonlyRecipients
{
get
{
if (ViewState["readonlyRecipients"] == null)
return false;
else
return (bool)ViewState["readonlyRecipients"];
}
set
{
ViewState["readonlyRecipients"] = value;
}
}
#endregion
}