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.WebControls;
public partial class controls_admin_surfacecodes : System.Web.UI.UserControl
{
#region methods
///
/// Method to Bind Code Data
///
private void BindCodeData()
{
try
{
DataTable codeTable = SurfaceCodeSource;
if (codeTable.Rows.Count == 0)
codeTable.Rows.Add(codeTable.NewRow());
grvSurfaceCodes.DataSource = codeTable;
grvSurfaceCodes.DataBind();
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
#endregion
#region events
///
/// Page Load Event
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!Page.IsPostBack)
{
Session["surfaceCodeSource"] = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceItemCode), "", "", "");
BindCodeData();
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// New surfaceItemCode Click
///
///
///
protected void btnNewSurfaceCode_Click(object sender, EventArgs e)
{
try
{
pnlResult.Visible = false;
int rowIndex = 0;
if (Session["surfaceCodeSource"] != null)
{
DataTable dtCurrentTable = (DataTable)Session["surfaceCodeSource"];
DataRow drCurrentRow = null;
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
DropDownList ddlCode = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[1].FindControl("ddlCode");
DropDownList ddlUser = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[0].FindControl("ddlUser");
TextBox txtRangeStart = (TextBox)grvSurfaceCodes.Rows[rowIndex].Cells[2].FindControl("txtRangeStart");
TextBox txtRangeEnd = (TextBox)grvSurfaceCodes.Rows[rowIndex].Cells[3].FindControl("txtRangeEnd");
Label lblLastUsed = (Label)grvSurfaceCodes.Rows[rowIndex].Cells[4].FindControl("lblLastUsed");
DropDownList ddlStatus = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[5].FindControl("ddlStatus");
dtCurrentTable.Rows[i - 1]["userId"] = ddlUser.SelectedValue;
dtCurrentTable.Rows[i - 1]["code"] = ddlCode.SelectedValue;
dtCurrentTable.Rows[i - 1]["rangeStart"] = txtRangeStart.Text;
dtCurrentTable.Rows[i - 1]["rangeEnd"] = txtRangeEnd.Text;
dtCurrentTable.Rows[i - 1]["lastUsed"] = lblLastUsed.Text;
dtCurrentTable.Rows[i - 1]["status"] = ddlStatus.SelectedValue;
rowIndex++;
}
drCurrentRow = dtCurrentTable.NewRow();
dtCurrentTable.Rows.Add(drCurrentRow);
Session["surfaceCodeSource"] = dtCurrentTable;
grvSurfaceCodes.DataSource = dtCurrentTable;
grvSurfaceCodes.DataBind();
}
}
//Set Previous Data on Postbacks
SetPreviousData();
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
private void SetPreviousData()
{
try
{
int rowIndex = 0;
if (Session["surfaceCodeSource"] != null)
{
DataTable dt = (DataTable)Session["surfaceCodeSource"];
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DropDownList ddlCode = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[1].FindControl("ddlCode");
DropDownList ddlUser = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[0].FindControl("ddlUser");
TextBox txtRangeStart = (TextBox)grvSurfaceCodes.Rows[rowIndex].Cells[2].FindControl("txtRangeStart");
TextBox txtRangeEnd = (TextBox)grvSurfaceCodes.Rows[rowIndex].Cells[3].FindControl("txtRangeEnd");
Label lblLastUsed = (Label)grvSurfaceCodes.Rows[rowIndex].Cells[4].FindControl("lblLastUsed");
DropDownList ddlStatus = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[5].FindControl("ddlStatus");
ddlUser.SelectedValue = dt.Rows[i]["code"].ToString();
ddlCode.SelectedValue = dt.Rows[i]["userId"].ToString();
txtRangeStart.Text = dt.Rows[i]["rangeStart"].ToString() == "" ? "0" : dt.Rows[i]["rangeStart"].ToString();
txtRangeEnd.Text = dt.Rows[i]["rangeEnd"].ToString() == "" ? "0" : dt.Rows[i]["rangeEnd"].ToString();
lblLastUsed.Text = dt.Rows[i]["lastUsed"].ToString() == "" ? "0" : dt.Rows[i]["lastUsed"].ToString();
ddlStatus.SelectedValue = dt.Rows[i]["status"].ToString();
rowIndex++;
}
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Cancel
///
///
///
protected void btnCancel_Click(object sender, EventArgs e)
{
try
{
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
///
/// Save Click
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
try
{
pnlResult.Visible = false;
if (ValidateData())
{
int rowIndex = 0;
if (Session["surfaceCodeSource"] != null)
{
DataTable dtCurrentTable = (DataTable)Session["surfaceCodeSource"];
if (dtCurrentTable.Rows.Count > 0)
{
for (int i = 1; i <= dtCurrentTable.Rows.Count; i++)
{
DropDownList ddlCode = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[1].FindControl("ddlCode");
DropDownList ddlUser = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[0].FindControl("ddlUser");
TextBox txtRangeStart = (TextBox)grvSurfaceCodes.Rows[rowIndex].Cells[2].FindControl("txtRangeStart");
TextBox txtRangeEnd = (TextBox)grvSurfaceCodes.Rows[rowIndex].Cells[3].FindControl("txtRangeEnd");
Label lblLastUsed = (Label)grvSurfaceCodes.Rows[rowIndex].Cells[4].FindControl("lblLastUsed");
DropDownList ddlStatus = (DropDownList)grvSurfaceCodes.Rows[rowIndex].Cells[5].FindControl("ddlStatus");
dtCurrentTable.Rows[i - 1]["userId"] = ddlUser.SelectedValue;
dtCurrentTable.Rows[i - 1]["code"] = ddlCode.SelectedValue;
dtCurrentTable.Rows[i - 1]["rangeStart"] = txtRangeStart.Text;
dtCurrentTable.Rows[i - 1]["rangeEnd"] = txtRangeEnd.Text;
dtCurrentTable.Rows[i - 1]["lastUsed"] = lblLastUsed.Text;
dtCurrentTable.Rows[i - 1]["status"] = ddlStatus.SelectedValue;
string recId = dtCurrentTable.Rows[i - 1]["recId"].ToString();
if (recId == "")
recId = "0";
oSurfaceItemCode surfaceItemCode = new oSurfaceItemCode();
surfaceItemCode.recId = Convert.ToInt32(recId);
surfaceItemCode.userId = Convert.ToInt32(dtCurrentTable.Rows[i - 1]["userId"].ToString());
surfaceItemCode.code = dtCurrentTable.Rows[i - 1]["code"].ToString();
surfaceItemCode.rangeStart = Convert.ToInt32(dtCurrentTable.Rows[i - 1]["rangeStart"].ToString());
surfaceItemCode.rangeEnd = Convert.ToInt32(dtCurrentTable.Rows[i - 1]["rangeEnd"].ToString());
surfaceItemCode.lastUsed = Convert.ToInt32(dtCurrentTable.Rows[i - 1]["lastUsed"].ToString());
surfaceItemCode.status = dtCurrentTable.Rows[i - 1]["status"].ToString();
if (surfaceItemCode.recId == 0)
{
surfaceItemCode.recId = xData.SaveTyped("recId", typeof(oSurfaceItemCode), surfaceItemCode);
}
else
{
xData.UpdateTyped("recId", surfaceItemCode.recId.ToString(), typeof(oSurfaceItemCode), surfaceItemCode);
}
rowIndex++;
}
Session["surfaceCodeSource"] = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceItemCode), "", "", "");
DataTable codeTable = SurfaceCodeSource;
if (codeTable.Rows.Count == 0)
codeTable.Rows.Add(codeTable.NewRow());
grvSurfaceCodes.DataSource = codeTable;
grvSurfaceCodes.DataBind();
lblResult.Text = "save successful";
pnlResult.Visible = true;
}
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
private bool ValidateData()
{
bool isValid =true;
try
{
foreach (GridViewRow row in grvSurfaceCodes.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
DropDownList ddluser = (DropDownList)row.FindControl("ddlUser");
if (ddluser.SelectedIndex == 0)
{
lblResult.Text = "make sure all users are selected";
pnlResult.Visible = true;
isValid = false;
}
DropDownList ddlCode = (DropDownList)row.FindControl("ddlCode");
string rowCode = ddlCode.SelectedValue;
//todo: validate ranges
switch (rowCode)
{
case "A":
break;
case "B":
break;
default:
break;
}
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
return isValid;
}
///
/// row databound
///
///
///
protected void grvSurfaceCodes_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView rowView = (DataRowView)e.Row.DataItem;
DropDownList ddlUser = (DropDownList)e.Row.FindControl("ddlUser");
ddlUser.DataSource = UserSource;
ddlUser.DataTextField = "userDisplay";
ddlUser.DataValueField = "recId";
ddlUser.DataBind();
ddlUser.Items.Insert(0, new ListItem("select user", "0"));
if (ddlUser.Items.FindByValue(rowView["userId"].ToString()) != null)
ddlUser.SelectedValue = rowView["userId"].ToString();
DropDownList ddlCode = (DropDownList)e.Row.FindControl("ddlCode");
if (ddlCode.Items.FindByValue(rowView["code"].ToString()) != null)
ddlCode.SelectedValue = rowView["code"].ToString();
TextBox txtRangeStart = (TextBox)e.Row.FindControl("txtRangeStart");
txtRangeStart.Text = rowView["rangeStart"].ToString();
TextBox txtRangeEnd = (TextBox)e.Row.FindControl("txtRangeEnd");
txtRangeEnd.Text = rowView["rangeEnd"].ToString();
Label lblLastUsed = (Label)e.Row.FindControl("lblLastUsed");
lblLastUsed.Text = rowView["lastUsed"].ToString();
DropDownList ddlStatus = (DropDownList)e.Row.FindControl("ddlStatus");
if (ddlStatus.Items.FindByValue(rowView["status"].ToString()) != null)
ddlStatus.SelectedValue = rowView["status"].ToString();
if (rowView["recId"].ToString() == "")
{
txtRangeStart.Text = "0";
txtRangeEnd.Text = "0";
lblLastUsed.Text = "0";
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
}
#endregion
#region properties
public DataTable SurfaceCodeSource
{
get
{
if (Session["surfaceCodeSource"] != null)
{
return (DataTable)Session["surfaceCodeSource"];
}
else
{
Session["surfaceCodeSource"] = xData.GetTypedByCriteriaSpecificTable("recId", typeof(oSurfaceItemCode), "", "", "");
return (DataTable)Session["surfaceCodeSource"];
}
}
set
{
Session["surfaceCodeSource"] = value;
}
}
public ArrayList UserSource
{
get
{
if (ViewState["userSource"] != null)
{
return (ArrayList)ViewState["userSource"];
}
else
{
string customer = handler.ReturnSetup().code.ToString();
return xData.GetTypedByCriteriaSpecific("recId", typeof(ovUserShared), "customerCode,userType", customer + "," + pNums.UserType.WebsiteUser.GetHashCode().ToString());
}
}
set
{
ViewState["userSource"] = value;
}
}
#endregion
protected void txtRangeStart_TextChanged(object sender, EventArgs e)
{
GridViewRow row = (GridViewRow)((Control)sender).NamingContainer;
DropDownList ddlCode = (DropDownList)row.FindControl("ddlCode");
string code = ddlCode.SelectedValue;
pnlResult.Visible = false;
btnSave.Enabled = true;
TextBox txtStartRange = (TextBox)sender;
int startRange = Convert.ToInt32(txtStartRange.Text);
if (startRange <= MaxUsed(code))
{
lblResult.Text = "start of range must be higher that maximum end of range";
pnlResult.Visible = true;
txtStartRange.Focus();
btnSave.Enabled = false;
}
}
private int MaxUsed(string code)
{
int maxNum = 0;
try
{
foreach (GridViewRow row in grvSurfaceCodes.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlCode = (DropDownList)row.FindControl("ddlCode");
string rowCode = ddlCode.SelectedValue;
if (rowCode == code)
{
int rangeEnd = Convert.ToInt32(((TextBox)row.FindControl("txtRangeEnd")).Text);
if (rangeEnd > maxNum)
maxNum = rangeEnd;
}
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
return maxNum;
}
protected void txtRangeEnd_TextChanged(object sender, EventArgs e)
{
GridViewRow row = (GridViewRow)((Control)sender).NamingContainer;
DropDownList ddlCode = (DropDownList)row.FindControl("ddlCode");
TextBox txtStartRange = (TextBox)row.FindControl("txtRangeStart");
string code = ddlCode.SelectedValue;
pnlResult.Visible = false;
btnSave.Enabled = true;
TextBox txtEndRange = (TextBox)sender;
int endRange = Convert.ToInt32(txtEndRange.Text);
int startRange = Convert.ToInt32(txtStartRange.Text);
if (endRange <= MinUsed(code))
{
lblResult.Text = "end of range must be lower that minimum start of range";
pnlResult.Visible = true;
txtEndRange.Focus();
btnSave.Enabled = false;
}
if (endRange < startRange)
{
lblResult.Text = "end of range must be higher than start of range";
pnlResult.Visible = true;
txtEndRange.Focus();
btnSave.Enabled = false;
}
}
private int MinUsed(string code)
{
int minNum = MaxUsed(code);
try
{
foreach (GridViewRow row in grvSurfaceCodes.Rows)
{
if (row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlCode = (DropDownList)row.FindControl("ddlCode");
string rowCode = ddlCode.SelectedValue;
if (rowCode == code)
{
int rangeStart = Convert.ToInt32(((TextBox)row.FindControl("txtRangeStart")).Text);
if (rangeStart < minNum)
minNum = rangeStart;
}
}
}
}
catch (Exception ex)
{
exception.HandleException("surfaceItemCodes:", MethodBase.GetCurrentMethod().Name, ex, Session["user"]);
Response.Redirect("/error", false);
}
return minNum;
}
}