using framework_business;
using framework_library;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
public partial class controls_module_calendarEventType : System.Web.UI.UserControl
{
public int CalendarId
{
get
{
if (ViewState["calendarId"] == null)
return 0;
else
return (int)ViewState["calendarId"];
}
set
{
ViewState["calendarId"] = value;
}
}
#region methods
///
/// Reload Control
///
///
public void ReloadControl(int calId)
{
this.CalendarId = calId;
BindGrid();
BindSequence();
}
//bind Event Types Grid
private void BindGrid()
{
try
{
DataTable dt = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oCalendarEventType), "calendarId", this.CalendarId.ToString(), "sequence");
rptEventType.DataSource = dt;
rptEventType.DataBind();
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("Error.aspx", false);
}
}
///
/// Bind Sequences
///
private void BindSequence()
{
try
{
for (int i = 0; i < 20; i++)
{
//append sequence item
ddSequence.Items.Add(new ListItem(i.ToString(), i.ToString()));
}
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, 0);
Response.Redirect("/error", false);
}
}
///
/// Toggle Display
///
///
private void TogglePanels(string panelName)
{
switch (panelName)
{
case "pnlForm":
pnlForm.Visible = true;
pnlGrid.Visible = false;
lblHeading.Visible = true;
break;
case "pnlGrid":
pnlForm.Visible = false;
pnlGrid.Visible = true;
lblHeading.Visible = false;
break;
}
//clear result
pnlResult.Visible = false;
pnlGridResult.Visible = false;
}
///
/// Populate Form Values
///
///
private void PopulateFormValues(oCalendarEventType eventType)
{
try
{
txtEventType.Text = eventType.name;
chkActive.Checked = eventType.isActive;
ddColour.ClearSelection();
if (ddColour.Items.FindByValue(eventType.colour.ToString()) != null)
{
ddColour.Items.FindByValue(eventType.colour.ToString()).Selected = true;
ddColour.Attributes.Add("style", "background-color:" + ddColour.SelectedItem.Value);
}
ddSequence.ClearSelection();
if (ddSequence.Items.FindByValue(eventType.sequence.ToString()) != null)
ddSequence.Items.FindByValue(eventType.sequence.ToString()).Selected = true;
if (eventType.interval > 0)
{
ddInterval.SelectedValue = eventType.interval.ToString();
}
else
{
ddInterval.SelectedValue = "15";
}
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
/// Save Form Values
///
///
private void SaveFormValues(ref oCalendarEventType eventType)
{
try
{
eventType.name = txtEventType.Text;
eventType.isActive = chkActive.Checked;
eventType.colour = ddColour.SelectedItem.Value;
eventType.interval = int.Parse(ddInterval.SelectedValue);
eventType.sequence = int.Parse(ddSequence.SelectedItem.Value);
eventType.calendarId = this.CalendarId;
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
#endregion
#region events
///
///
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
BindGrid();
BindSequence();
}
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "setLoadOptions", "if(typeof(setLoadOptions) == \"function\"){window.onload = setLoadOptions()};", true);
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
///
///
///
///
protected void btnNewType_Click(object sender, EventArgs e)
{
try
{
utils.disposeSession("EventType");
oCalendarEventType eventType = new oCalendarEventType();
PopulateFormValues(eventType);
TogglePanels("pnlForm");
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
///
///
///
///
protected void lnkEdit_Click(object sender, EventArgs e)
{
try
{
oCalendarEventType eventType = new oCalendarEventType();
ArrayList list = new ArrayList();
if (sender.GetType() == typeof(LinkButton))
{
int recId = int.Parse(((LinkButton)sender).CommandArgument);
if (recId > 0)
{
//get cat
list = xData.GetTypedByCriteriaSpecific("recId", typeof(oCalendarEventType), "recId", recId.ToString());
//enumerate list
foreach (oCalendarEventType t in list)
{
//assign object
eventType = t;
//populate page form
PopulateFormValues(eventType);
Session["EventType"] = eventType;
break;
}
TogglePanels("pnlForm");
}
}
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
///
///
///
///
protected void lnkRemove_Click(object sender, EventArgs e)
{
try
{
if (sender.GetType() == typeof(LinkButton))
{
int recId = int.Parse(((LinkButton)sender).CommandArgument);
//first check if there are any events linked to this type
ArrayList events = xData.GetTypedByCriteriaSpecific("recId", typeof(oCalendarEvent), "calendarEventTypeId", recId.ToString());
if (events != null && events.Count > 0)
{
pnlGridResult.Visible = true;
lblGridResult.Text = "the selected Event Type has Events linked to it and cannot be deleted.";
}
//Delete event type
else if (xData.DeleteTyped("recId", recId.ToString(), typeof(oCalendarEventType)))
{
//rebind pages grid
BindGrid();
pnlResult.Visible = true;
//display successful result
lblResult.Text = "the selected Event Type was deleted successfully.";
}
}
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
///
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
try
{
oCalendarEventType eventType = new oCalendarEventType();
if (utils.verifySession("EventType"))//update mode
{
eventType = (oCalendarEventType)Session["EventType"];
//save form values
SaveFormValues(ref eventType);
if (xData.UpdateTyped("recId", eventType.recId.ToString(), typeof(oCalendarEventType), eventType))
{
Session["EventType"] = eventType;
BindGrid();
pnlResult.Visible = true;
lblResult.Text = "your changes were updated successfully.";
}
}
else
{
if (!xData.VerifyExists("recId", typeof(oCalendarEventType), "name,calendarId", txtEventType.Text + "," + this.CalendarId))
{
//save form values
SaveFormValues(ref eventType);
eventType.recId = xData.SaveTyped("recId", typeof(oCalendarEventType), eventType);
if (eventType.recId > 0)
{
Session["EventType"] = eventType;
BindGrid();
pnlResult.Visible = true;
lblResult.Text = "your Event Type was created successfully.";
}
}
else
{
pnlResult.Visible = true;
lblResult.Text = "An Event Type with this name already exists on the system";
}
}
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
///
///
///
///
protected void btnCancel_Click(object sender, EventArgs e)
{
try
{
utils.disposeSession("EventType");
BindGrid();
TogglePanels("pnlGrid");
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
///
///
///
///
protected void ddColour_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
//ddColour.CssClass = "form-control";
//ddColour.AddCssClass(ddColour.SelectedItem.Value);
ddColour.Attributes.Add("style", "background-color:" + ddColour.SelectedItem.Value);
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
///
/// Item data bound
///
///
///
protected void rptEventType_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
try
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
HtmlControl tdColour = (HtmlControl)e.Item.FindControl("tdColour");
if (tdColour != null)
{
Label lblColour = (Label)tdColour.FindControl("lblColour");
if (lblColour != null)
{
tdColour.Style.Add("background-color", lblColour.Text);
tdColour.Controls.Remove(lblColour);
}
}
}
}
catch (Exception ex)
{
exception.HandleException("CalendarEventType:", MethodBase.GetCurrentMethod().Name, ex, Session["admin"]);
Response.Redirect("/error", false);
}
}
#endregion
}