protected void InsertFlexyDetails(string BecRefID)
{
int errRet = 0;
try
{
IList<Entities.EmployeeCompensation> lstEmployeeCompensation = new List<Entities.EmployeeCompensation>();
string strXML = string.Empty;
objEmpComp = new BusinessLayer.EmployeeCompensation();
foreach (DataGridItem dgItem in grdComponent.Items)
{
if (dgItem.ItemType == ListItemType.Item || dgItem.ItemType == ListItemType.AlternatingItem)
{
DropDownList ddlFlexyAmount = (DropDownList)dgItem.FindControl("ddlFlexyAmount");
TextBox txtFlexyAmount = (TextBox)dgItem.FindControl("txtFlexyAmount");
Label lblFcID = (Label)dgItem.FindControl("lblFcID");
entEmpComp = new Entities.EmployeeCompensation();
entEmpComp.Id = Convert.ToInt32(lblFcID.Text);
if (ddlFlexyAmount.Visible == true)
{
entEmpComp.Amount = Convert.ToInt32(ddlFlexyAmount.SelectedValue);
}
else if (txtFlexyAmount.Visible == true)
{
entEmpComp.Amount = Convert.ToInt32(txtFlexyAmount.Text);
}
lstEmployeeCompensation.Add(entEmpComp);
}
}
errRet = objEmpComp.InsertCompensation(lstEmployeeCompensation);
}
catch
{
throw;
}
}
public int InsertCompensation(IList<Entities.EmployeeCompensation> lstEmployeeCompensation)
{
int retVal = 0;
string strFlexiAmntXML = string.Empty;
try
{
if (lstEmployeeCompensation.Count > 0)
{
strFlexiAmntXML = "<FlexiComponentDetails>";
for (int i = 0; i <= lstEmployeeCompensation.Count - 1; i++)
{
strFlexiAmntXML += "<FlexiComponent>";
strFlexiAmntXML += "<FC_ID>" + lstEmployeeCompensation[i].Id + "</FC_ID>";
strFlexiAmntXML += "<EC_Amount>" + lstEmployeeCompensation[i].Amount + "</EC_Amount>";
strFlexiAmntXML += "</FlexiComponent>";
}
strFlexiAmntXML += "</FlexiComponentDetails>";
}
DataAccess.EmployeeCompensation empCompensation = new DataAccess.EmployeeCompensation();
retVal = empCompensation.InsertCompensation(strFlexiAmntXML);
}
catch (Exception ex)
{
}
return retVal;
}
public int InsertCompensation(string strFlexiAmntXML)
{
int errRet = 0;
try
{
DbCommand cmd = dbHelper.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_Insert_FlexiComponents";
DbParameterBuilder.Add(cmd, "InputXML", DbType.String, ParameterDirection.Input, strFlexiAmntXML);
errRet = dbHelper.ExecuteNonQuery(cmd);
}
catch (Exception ex)
{
errRet = 1;
}
return errRet;
}
CREATE PROCEDURE [dbo].[sp_Insert_FlexiComponents]
-- Add the parameters for the stored procedure here
@InputXML AS VARCHAR(MAX)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @XML AS XML
DECLARE @AmountTable TABLE
(
ID INT IDENTITY(1,1),
EC_FC_ID int,
EC_Amount int
)
SELECT @XML = @InputXML
INSERT INTO @AmountTable (EC_FC_ID, EC_Amount)
SELECT M.Item.query('./FC_ID').value('.','INT') EC_FC_ID,
M.Item.query('./EC_Amount').value('.','INT') EC_Amount
FROM @XML.nodes('/FlexiComponentDetails/FlexiComponent') AS M(Item)
END
{
int errRet = 0;
try
{
IList<Entities.EmployeeCompensation> lstEmployeeCompensation = new List<Entities.EmployeeCompensation>();
string strXML = string.Empty;
objEmpComp = new BusinessLayer.EmployeeCompensation();
foreach (DataGridItem dgItem in grdComponent.Items)
{
if (dgItem.ItemType == ListItemType.Item || dgItem.ItemType == ListItemType.AlternatingItem)
{
DropDownList ddlFlexyAmount = (DropDownList)dgItem.FindControl("ddlFlexyAmount");
TextBox txtFlexyAmount = (TextBox)dgItem.FindControl("txtFlexyAmount");
Label lblFcID = (Label)dgItem.FindControl("lblFcID");
entEmpComp = new Entities.EmployeeCompensation();
entEmpComp.Id = Convert.ToInt32(lblFcID.Text);
if (ddlFlexyAmount.Visible == true)
{
entEmpComp.Amount = Convert.ToInt32(ddlFlexyAmount.SelectedValue);
}
else if (txtFlexyAmount.Visible == true)
{
entEmpComp.Amount = Convert.ToInt32(txtFlexyAmount.Text);
}
lstEmployeeCompensation.Add(entEmpComp);
}
}
errRet = objEmpComp.InsertCompensation(lstEmployeeCompensation);
}
catch
{
throw;
}
}
public int InsertCompensation(IList<Entities.EmployeeCompensation> lstEmployeeCompensation)
{
int retVal = 0;
string strFlexiAmntXML = string.Empty;
try
{
if (lstEmployeeCompensation.Count > 0)
{
strFlexiAmntXML = "<FlexiComponentDetails>";
for (int i = 0; i <= lstEmployeeCompensation.Count - 1; i++)
{
strFlexiAmntXML += "<FlexiComponent>";
strFlexiAmntXML += "<FC_ID>" + lstEmployeeCompensation[i].Id + "</FC_ID>";
strFlexiAmntXML += "<EC_Amount>" + lstEmployeeCompensation[i].Amount + "</EC_Amount>";
strFlexiAmntXML += "</FlexiComponent>";
}
strFlexiAmntXML += "</FlexiComponentDetails>";
}
DataAccess.EmployeeCompensation empCompensation = new DataAccess.EmployeeCompensation();
retVal = empCompensation.InsertCompensation(strFlexiAmntXML);
}
catch (Exception ex)
{
}
return retVal;
}
public int InsertCompensation(string strFlexiAmntXML)
{
int errRet = 0;
try
{
DbCommand cmd = dbHelper.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "sp_Insert_FlexiComponents";
DbParameterBuilder.Add(cmd, "InputXML", DbType.String, ParameterDirection.Input, strFlexiAmntXML);
errRet = dbHelper.ExecuteNonQuery(cmd);
}
catch (Exception ex)
{
errRet = 1;
}
return errRet;
}
CREATE PROCEDURE [dbo].[sp_Insert_FlexiComponents]
-- Add the parameters for the stored procedure here
@InputXML AS VARCHAR(MAX)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @XML AS XML
DECLARE @AmountTable TABLE
(
ID INT IDENTITY(1,1),
EC_FC_ID int,
EC_Amount int
)
SELECT @XML = @InputXML
INSERT INTO @AmountTable (EC_FC_ID, EC_Amount)
SELECT M.Item.query('./FC_ID').value('.','INT') EC_FC_ID,
M.Item.query('./EC_Amount').value('.','INT') EC_Amount
FROM @XML.nodes('/FlexiComponentDetails/FlexiComponent') AS M(Item)
END