private void GetpaidLeavesData(int locationID, DateTime startDt, DateTime EndDt,int shiftID)
 {
     try
     {
         EmployeeBL obj = new EmployeeBL();
         DataTable dt = obj.GetEmpPaidleavesDetailsByLocation(locationID,startDt,EndDt,shiftID);
         lblLeaveReport.Text = "(" + startDt.ToString("MM/dd/yyyy") + "-" + EndDt.ToString("MM/dd/yyyy") + ")";
         if (dt.Rows.Count > 0)
         {
             grdUsers.DataSource = dt;
             Session["AllPaidLeavesData"] = dt;
             grdUsers.DataBind();
             lblTotal.Visible = true;
             lblTotal.Text = "Total Employee(s) :" + dt.Rows.Count;
             lblNodata.Visible = false;
             dvlblNodata.Style["display"] = "none";
         }
         else
         {
             lblNodata.Visible = true;
             dvlblNodata.Style["display"] = "block";
             lblNodata.Text = "No data found";
             lblTotal.Text = "";
             grdUsers.DataSource = null;
             grdUsers.DataBind();
         }
     }
     catch (Exception ex)
     {
     }
 }
        private DataTable GetReportIndia1(DateTime StartDate, DateTime EndTime, int LocationID, int shiftID)
        {
            DataTable dtPayroll = new DataTable();
            dtPayroll.Columns.Add("empid", typeof(string));
            dtPayroll.Columns.Add("Empname", typeof(string));
            dtPayroll.Columns.Add("PEmpname", typeof(string));
            dtPayroll.Columns.Add("Termdate", typeof(DateTime));
            dtPayroll.Columns.Add("Startdate", typeof(DateTime));
            dtPayroll.Columns.Add("DeptName", typeof(string));
            dtPayroll.Columns.Add("LocationName", typeof(string));
            dtPayroll.Columns.Add("MasterEmpType", typeof(string));
            dtPayroll.Columns.Add("LocDescriptiom", typeof(string));

            dtPayroll.Columns.Add("userid", typeof(string));
            dtPayroll.Columns.Add("Workingdays", typeof(int));
            dtPayroll.Columns.Add("Present", typeof(double));
            dtPayroll.Columns.Add("paidLeaves", typeof(int));
            dtPayroll.Columns.Add("Leaves", typeof(int));
            dtPayroll.Columns.Add("Holidays", typeof(int));
            dtPayroll.Columns.Add("LeavesAvailable", typeof(int));
            dtPayroll.Columns.Add("PaidLeaveStartDt", typeof(DateTime));
            dtPayroll.Columns.Add("PaidLeavesBalanced", typeof(int));
            dtPayroll.Columns.Add("PaidLeavesUsed", typeof(int));
            dtPayroll.Columns.Add("CalLeaves", typeof(int));
            dtPayroll.Columns.Add("Salary", typeof(double));
            dtPayroll.Columns.Add("Noshow", typeof(int));

            dtPayroll.Columns.Add("CalSalary", typeof(double));
            dtPayroll.Columns.Add("Bonus", typeof(double));
            dtPayroll.Columns.Add("Incentives", typeof(double));
            dtPayroll.Columns.Add("PrevUnpaid", typeof(double));
            dtPayroll.Columns.Add("AdvancePaid", typeof(double));
            dtPayroll.Columns.Add("Expenses", typeof(double));
            dtPayroll.Columns.Add("LoanDeduct", typeof(double));
            dtPayroll.Columns.Add("TotalPay", typeof(double));
            try
            {

                DataSet ds = new DataSet();
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AttendanceConn"].ToString());
                SqlCommand cmd = new SqlCommand();
                SqlDataAdapter da = new SqlDataAdapter("[USP_FnAdmin]", con);
                da.SelectCommand.Parameters.Add(new SqlParameter("@shiftID", shiftID));
                da.SelectCommand.Parameters.Add(new SqlParameter("@LocationID", LocationID));
                da.SelectCommand.Parameters.Add(new SqlParameter("@startdate", StartDate));
                da.SelectCommand.Parameters.Add(new SqlParameter("@EndDate", EndTime));

                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.Fill(ds);
                EmployeeBL obj = new EmployeeBL();

                // DataTable dtPaid = GetPayrollDataByLoc(LocationID, StartDate.AddMonths(-1), StartDate.AddSeconds(-1));
                DataTable dtPaid1 = obj.Usp_GetEmployeePayrollDataByLocation(LocationID, StartDate, EndTime,Convert.ToInt32(ddlShift.SelectedValue));
                DataTable dtPaid = obj.GetEmpPaidleavesDetailsByLocation(LocationID, StartDate.AddMonths(-1), StartDate.AddSeconds(-1),Convert.ToInt32(ddlShift.SelectedValue));
                int days = (Convert.ToInt32(EndTime.ToString("dd")) - Convert.ToInt32(StartDate.ToString("dd"))) + 1;
                if (ds.Tables.Count > 0)
                {
                    if (ds.Tables.Count > 1)
                    {
                        for (int j = 0; j < ds.Tables[0].Rows.Count; j++)
                        {
                            dtPayroll.Rows.Add();
                            if (dtPaid1.Rows.Count > 0)
                            {

                                DataView dvP = dtPaid1.DefaultView;
                                DataTable dtPaidLev = new DataTable();
                                dvP.RowFilter = "empid='" + ds.Tables[0].Rows[j]["empid"].ToString() + "'";
                                dtPaidLev = dvP.ToTable();
                                dtPayroll.Rows[j]["userid"] = ds.Tables[0].Rows[j]["userid"].ToString();
                                dtPayroll.Rows[j]["empid"] = ds.Tables[0].Rows[j]["empid"].ToString();
                                dtPayroll.Rows[j]["Empname"] = ds.Tables[0].Rows[j]["firstName"].ToString() + " " + ds.Tables[0].Rows[j]["lastname"].ToString();
                                dtPayroll.Rows[j]["PEmpname"] = ds.Tables[0].Rows[j]["PfirstName"].ToString() + " " + ds.Tables[0].Rows[j]["Plastname"].ToString();
                                dtPayroll.Rows[j]["Termdate"] = ds.Tables[0].Rows[j]["Termdate"].ToString() == "NULL" ? Convert.ToDateTime("01/01/1900") : ds.Tables[0].Rows[j]["Termdate"].ToString() == "" ? Convert.ToDateTime("01/01/1900") : Convert.ToDateTime(Convert.ToDateTime(ds.Tables[0].Rows[j]["Termdate"]).ToString("MM/dd/yyyy"));
                                dtPayroll.Rows[j]["Startdate"] = ds.Tables[0].Rows[j]["Startdate"].ToString() == "NULL" ? Convert.ToDateTime("01/01/1900") : ds.Tables[0].Rows[j]["Startdate"].ToString() == "" ? Convert.ToDateTime("01/01/1900") : Convert.ToDateTime(Convert.ToDateTime(ds.Tables[0].Rows[j]["Startdate"]).ToString("MM/dd/yyyy"));
                                dtPayroll.Rows[j]["DeptName"] = ds.Tables[0].Rows[j]["DeptName"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["DeptName"].ToString();
                                dtPayroll.Rows[j]["LocationName"] = ds.Tables[0].Rows[j]["LocationName"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["LocationName"].ToString();
                                dtPayroll.Rows[j]["MasterEmpType"] = ds.Tables[0].Rows[j]["EmpType"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["EmpType"].ToString();
                                dtPayroll.Rows[j]["LocDescriptiom"] = ds.Tables[0].Rows[j]["LocDescriptiom"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["LocDescriptiom"].ToString();
                                dtPayroll.Rows[j]["Salary"] = ds.Tables[0].Rows[j]["Salary"].ToString() == "" ? 0.0 : ds.Tables[0].Rows[j]["Salary"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(ds.Tables[0].Rows[j]["Salary"].ToString());
                                dtPayroll.Rows[j]["Workingdays"] = dtPaidLev.Rows[0]["WkngDays"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["WkngDays"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["WkngDays"].ToString());
                                dtPayroll.Rows[j]["Present"] = dtPaidLev.Rows[0]["Atndays"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["Atndays"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["Atndays"].ToString());
                                dtPayroll.Rows[j]["Leaves"] = dtPaidLev.Rows[0]["Leaves"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["Leaves"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["Leaves"].ToString());
                                dtPayroll.Rows[j]["Noshow"] = dtPaidLev.Rows[0]["Noshow"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["Noshow"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["Noshow"].ToString());
                                dtPayroll.Rows[j]["LeavesAvailable"] = dtPaidLev.Rows[0]["PaidLeaves"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["PaidLeaves"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["PaidLeaves"].ToString());
                                dtPayroll.Rows[j]["PaidLeavesUsed"] = dtPaidLev.Rows[0]["PaidLeavesUsed"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["PaidLeavesUsed"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["PaidLeavesUsed"].ToString());
                                dtPayroll.Rows[j]["PaidLeavesBalanced"] = dtPaidLev.Rows[0]["PaidLeavesBalanced"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["PaidLeavesBalanced"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["PaidLeavesBalanced"].ToString());
                                dtPayroll.Rows[j]["CalLeaves"] = dtPaidLev.Rows[0]["TotalCalLeaves"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["TotalCalLeaves"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["TotalCalLeaves"].ToString());
                                dtPayroll.Rows[j]["CalSalary"] = dtPaidLev.Rows[0]["CalSalary"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["CalSalary"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["CalSalary"].ToString());
                                dtPayroll.Rows[j]["Bonus"] = dtPaidLev.Rows[0]["Bonus"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["Bonus"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["Bonus"].ToString());
                                dtPayroll.Rows[j]["Incentives"] = dtPaidLev.Rows[0]["Incentives"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["Incentives"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["Incentives"].ToString());
                                dtPayroll.Rows[j]["PrevUnpaid"] = dtPaidLev.Rows[0]["PrevUnpaid"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["PrevUnpaid"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["PrevUnpaid"].ToString());
                                dtPayroll.Rows[j]["AdvancePaid"] = dtPaidLev.Rows[0]["Advancepaid"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["Advancepaid"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["Advancepaid"].ToString());
                                dtPayroll.Rows[j]["Expenses"] = dtPaidLev.Rows[0]["ExpensesRecieved"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["ExpensesRecieved"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["ExpensesRecieved"].ToString());
                                dtPayroll.Rows[j]["LoanDeduct"] = dtPaidLev.Rows[0]["LoanDeduct"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["LoanDeduct"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["LoanDeduct"].ToString());
                                dtPayroll.Rows[j]["TotalPay"] = dtPaidLev.Rows[0]["TotalPay"].ToString() == "" ? 0.0 : dtPaidLev.Rows[0]["TotalPay"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(dtPaidLev.Rows[0]["TotalPay"].ToString());
                            }
                            else
                            {
                                DataTable dt = ds.Tables[1];
                                DataView dv = dt.DefaultView;
                                DataTable dtname = new DataTable();
                                DateTime NextDate = GeneralFunction.GetNextDayOfWeekDate(StartDate);

                                DataTable dtL = ds.Tables[2];
                                DataView dvL = dtL.DefaultView;
                                DataTable dtLeave = new DataTable();

                                DataTable dtH = ds.Tables[3];
                                DataView dvH = dtH.DefaultView;
                                DataTable dtHoliday = new DataTable();

                                DataView dvP = dtPaid.DefaultView;
                                DataTable dtPaidLev = new DataTable();

                                dv.RowFilter = "empid='" + ds.Tables[0].Rows[j]["empid"].ToString() + "'";
                                dtname = dv.ToTable();

                                dvL.RowFilter = "empid='" + ds.Tables[0].Rows[j]["empid"].ToString() + "'";
                                dtLeave = dvL.ToTable();

                                dvH.RowFilter = "empid='" + ds.Tables[0].Rows[j]["empid"].ToString() + "'";
                                dtHoliday = dvH.ToTable();

                                dvP.RowFilter = "empid='" + ds.Tables[0].Rows[j]["empid"].ToString() + "'";
                                dtPaidLev = dvP.ToTable();

                                int holidays = 0;
                                int leaves = 0;
                                double present = 0.0;
                                int noshow = 0;
                                dtPayroll.Rows[j]["userid"] = ds.Tables[0].Rows[j]["userid"].ToString();
                                dtPayroll.Rows[j]["empid"] = ds.Tables[0].Rows[j]["empid"].ToString();
                                dtPayroll.Rows[j]["Empname"] = ds.Tables[0].Rows[j]["firstName"].ToString() + " " + ds.Tables[0].Rows[j]["lastname"].ToString();
                                dtPayroll.Rows[j]["PEmpname"] = ds.Tables[0].Rows[j]["PfirstName"].ToString() + " " + ds.Tables[0].Rows[j]["Plastname"].ToString();
                                dtPayroll.Rows[j]["Termdate"] = ds.Tables[0].Rows[j]["Termdate"].ToString() == "NULL" ? Convert.ToDateTime("01/01/1900") : ds.Tables[0].Rows[j]["Termdate"].ToString() == "" ? Convert.ToDateTime("01/01/1900") : Convert.ToDateTime(Convert.ToDateTime(ds.Tables[0].Rows[j]["Termdate"]).ToString("MM/dd/yyyy"));
                                dtPayroll.Rows[j]["Startdate"] = ds.Tables[0].Rows[j]["Startdate"].ToString() == "NULL" ? Convert.ToDateTime("01/01/1900") : ds.Tables[0].Rows[j]["Startdate"].ToString() == "" ? Convert.ToDateTime("01/01/1900") : Convert.ToDateTime(Convert.ToDateTime(ds.Tables[0].Rows[j]["Startdate"]).ToString("MM/dd/yyyy"));
                                dtPayroll.Rows[j]["DeptName"] = ds.Tables[0].Rows[j]["DeptName"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["DeptName"].ToString();
                                dtPayroll.Rows[j]["LocationName"] = ds.Tables[0].Rows[j]["LocationName"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["LocationName"].ToString();
                                dtPayroll.Rows[j]["MasterEmpType"] = ds.Tables[0].Rows[j]["EmpType"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["EmpType"].ToString();
                                dtPayroll.Rows[j]["LocDescriptiom"] = ds.Tables[0].Rows[j]["LocDescriptiom"].ToString() == "NULL" ? "" : ds.Tables[0].Rows[j]["LocDescriptiom"].ToString();
                                dtPayroll.Rows[j]["Salary"] = ds.Tables[0].Rows[j]["Salary"].ToString() == "" ? 0.0 : ds.Tables[0].Rows[j]["Salary"].ToString() == "NULL" ? 0.0 : Convert.ToDouble(ds.Tables[0].Rows[j]["Salary"].ToString());
                                dtPayroll.Rows[j]["LeavesAvailable"] = 0;
                                if (dtPaidLev.Rows.Count > 0)
                                {
                                    if (dtPaidLev.Rows[0]["PaidLeavesStartDt"].ToString()!="NULL" && dtPaidLev.Rows[0]["PaidLeavesStartDt"].ToString() != "" && Convert.ToDateTime(dtPaidLev.Rows[0]["PaidLeavesStartDt"]).ToString("MM/dd/yyyy") != "01/01/1900")
                                    {
                                        if (Convert.ToDateTime(dtPaidLev.Rows[0]["PaidLeavesStartDt"].ToString()) <= StartDate.AddSeconds(-1))
                                        {
                                            int PaidLeaves = dtPaidLev.Rows[0]["PaidLeavesBalanced"].ToString() == "" ? 0 : dtPaidLev.Rows[0]["PaidLeavesBalanced"].ToString() == "NULL" ? 0 : Convert.ToInt32(dtPaidLev.Rows[0]["PaidLeavesBalanced"].ToString());
                                            dtPayroll.Rows[j]["LeavesAvailable"] = PaidLeaves + (dtPaidLev.Rows[0]["MonthlyEligible"].ToString() == "" ? 0 : dtPaidLev.Rows[0]["MonthlyEligible"].ToString() == "NULL" ? 0 : Convert.ToInt32(dtPaidLev.Rows[0]["MonthlyEligible"].ToString()));
                                            dtPayroll.Rows[j]["PaidLeaveStartDt"] = dtPaidLev.Rows[0]["PaidLeavesStartDt"].ToString() == "" ? Convert.ToDateTime("01/01/1900") : dtPaidLev.Rows[0]["PaidLeavesStartDt"].ToString() == "NULL" ? Convert.ToDateTime("01/01/1900") : Convert.ToDateTime(dtPaidLev.Rows[0]["PaidLeavesStartDt"].ToString());
                                        }
                                        else
                                        {
                                            dtPayroll.Rows[j]["LeavesAvailable"] = "0";
                                        }
                                    }
                                    else
                                    {
                                        dtPayroll.Rows[j]["LeavesAvailable"] = "0";
                                    }
                                }
                                else
                                {
                                    if (ds.Tables[0].Rows[j]["PaidLeavesStartDt"].ToString() != "NULL" && ds.Tables[0].Rows[j]["PaidLeavesStartDt"].ToString() != "" && Convert.ToDateTime(ds.Tables[0].Rows[j]["PaidLeavesStartDt"]).ToString("MM/dd/yyyy") != "01/01/1900")
                                    {
                                        if (Convert.ToDateTime(ds.Tables[0].Rows[j]["PaidLeavesStartDt"].ToString()) <= StartDate.AddSeconds(-1))
                                        {
                                            int PaidLeaves = 0;
                                            dtPayroll.Rows[j]["LeavesAvailable"] = PaidLeaves + (ds.Tables[0].Rows[j]["MonthlyEligible"].ToString() == "" ? 0 : ds.Tables[0].Rows[j]["MonthlyEligible"].ToString() == "NULL" ? 0 : Convert.ToInt32(ds.Tables[0].Rows[j]["MonthlyEligible"].ToString()));
                                            dtPayroll.Rows[j]["PaidLeaveStartDt"] = ds.Tables[0].Rows[j]["PaidLeavesStartDt"].ToString() == "" ? Convert.ToDateTime("01/01/1900") : ds.Tables[0].Rows[j]["PaidLeavesStartDt"].ToString() == "NULL" ? Convert.ToDateTime("01/01/1900") : Convert.ToDateTime(ds.Tables[0].Rows[j]["PaidLeavesStartDt"].ToString());
                                        }
                                        else
                                        {
                                            dtPayroll.Rows[j]["LeavesAvailable"] = "0";
                                        }
                                    }
                                    else
                                    {
                                        dtPayroll.Rows[j]["LeavesAvailable"] = "0";
                                    }
                                }
                                if (dtname.Rows.Count > 0)
                                {
                                    DateTime startDate = StartDate;
                                    DateTime nextdate = NextDate;

                                    for (int i = 0; i < days; i++)
                                    {
                                        DataView dv1 = dtname.DefaultView;
                                        dv1.RowFilter = "Logindate >= #" + startDate + "# and Logindate<#" + nextdate + "#";
                                        DataTable dt1 = dv1.ToTable();

                                        DataView dL = dtLeave.DefaultView;
                                        dL.RowFilter = "Fromdate<=#" + startDate + "# and #" + startDate + "#<=Todate";
                                        DataTable dtLvResult = dL.ToTable();

                                        DataView dH = dtHoliday.DefaultView;
                                        dH.RowFilter = "HolidayDate >= #" + startDate + "# and HolidayDate<#" + nextdate + "#";
                                        DataTable dtHolResult = dH.ToTable();
                                        if (dtHolResult.Rows.Count > 0)
                                        {
                                            holidays += 1;
                                        }
                                        if (dt1.Rows.Count > 0)
                                        {
                                            double dayhrs = 0.0;
                                            for (int k = 0; k < dt1.Rows.Count; k++)
                                            {
                                                if (dt1.Rows[k]["logoutdate"].ToString().Trim() != "")
                                                {
                                                    if (dt1.Rows[k]["total hours worked"].ToString() == "")
                                                    {
                                                        dayhrs += 0.0;
                                                    }
                                                    else
                                                    {
                                                        dayhrs += Convert.ToDouble(dt1.Rows[k]["total hours worked"].ToString());
                                                    }
                                                }
                                                else
                                                {
                                                    noshow += 1;
                                                }
                                            }
                                            if (dayhrs > 5)
                                            {
                                                present += 1;
                                            }
                                            else if (dayhrs > 3 && dayhrs < 5)
                                            {
                                                present += 0.5;
                                            }
                                            else if (dayhrs > 0.0 && dayhrs < 3)
                                            {
                                                leaves += 1;
                                            }
                                        }
                                        else if (dtHolResult.Rows.Count <= 0 && dtLvResult.Rows.Count > 0)
                                        {
                                            leaves += 1;
                                        }
                                        else if (dtHolResult.Rows.Count <= 0 && dtLvResult.Rows.Count <= 0 && dt1.Rows.Count <= 0)
                                        {
                                            noshow += 1;
                                        }
                                        else
                                        {
                                            noshow += 1;
                                        }
                                        dL.RowFilter = null;
                                        dH.RowFilter = null;
                                        dv1.RowFilter = null;
                                        startDate = nextdate;
                                        nextdate = GeneralFunction.GetNextDayOfWeekDate(nextdate);
                                    }
                                }
                                if (dtHoliday.Rows.Count > 0)
                                {
                                    DateTime startDate = StartDate;
                                    DateTime nextdate = NextDate;
                                    for (int i = 0; i < days; i++)
                                    {
                                        DataView dH = dtHoliday.DefaultView;
                                        dH.RowFilter = "HolidayDate >= #" + startDate + "# and HolidayDate<#" + nextdate + "#";
                                        DataTable dtHolResult = dH.ToTable();
                                        DataView dL = dtLeave.DefaultView;
                                        dL.RowFilter = "Fromdate<=#" + startDate + "# and #" + startDate + "#<=Todate";
                                        DataTable dtLvResult = dL.ToTable();
                                        if (dtHolResult.Rows.Count > 0)
                                        {
                                            holidays += 1;
                                        }
                                        else if (dtLvResult.Rows.Count > 0)
                                        {
                                            leaves += 1;
                                        }
                                        else
                                        {
                                            noshow += 1;
                                        }
                                        dL.RowFilter = null;
                                        dH.RowFilter = null;
                                        startDate = nextdate;
                                        nextdate = GeneralFunction.GetNextDayOfWeekDate(nextdate);
                                    }
                                }
                                dtPayroll.Rows[j]["Present"] = present;
                                dtPayroll.Rows[j]["Workingdays"] = days - holidays;
                                dtPayroll.Rows[j]["Leaves"] = leaves;
                                dtPayroll.Rows[j]["Holidays"] = holidays;
                                if (Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]) > Convert.ToInt32(dtPayroll.Rows[j]["leaves"]))
                                {
                                    dtPayroll.Rows[j]["PaidLeavesBalanced"] = Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]) - Convert.ToInt32(dtPayroll.Rows[j]["leaves"]);
                                    dtPayroll.Rows[j]["PaidLeavesUsed"] = Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]) - Convert.ToInt32(dtPayroll.Rows[j]["PaidLeavesBalanced"]);
                                    dtPayroll.Rows[j]["CalLeaves"] = 0;
                                }
                                else if (Convert.ToInt32(dtPayroll.Rows[j]["leaves"]) > Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]))
                                {
                                    dtPayroll.Rows[j]["CalLeaves"] = Convert.ToInt32(dtPayroll.Rows[j]["leaves"]) - Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]);
                                    dtPayroll.Rows[j]["PaidLeavesUsed"] = Convert.ToInt32(dtPayroll.Rows[j]["leaves"]) - Convert.ToInt32(dtPayroll.Rows[j]["CalLeaves"]);
                                    dtPayroll.Rows[j]["PaidLeavesBalanced"] = 0;
                                }
                                else
                                {
                                    dtPayroll.Rows[j]["PaidLeavesBalanced"] = Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]) - Convert.ToInt32(dtPayroll.Rows[j]["leaves"]);
                                    dtPayroll.Rows[j]["PaidLeavesUsed"] = Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]) - Convert.ToInt32(dtPayroll.Rows[j]["PaidLeavesBalanced"]);
                                    dtPayroll.Rows[j]["CalLeaves"] = Convert.ToInt32(dtPayroll.Rows[j]["LeavesAvailable"]) - Convert.ToInt32(dtPayroll.Rows[j]["leaves"]);
                                }
                                //salary calculation  CalSalary  CalLeaves
                                double CurntSalary = Convert.ToDouble(dtPayroll.Rows[j]["Salary"]);
                                int wrkDays = Convert.ToInt32(dtPayroll.Rows[j]["Workingdays"]);
                                double CalSalary = 0.0;
                                if (Convert.ToInt32(dtPayroll.Rows[j]["Present"]) > 0)
                                {
                                    double perdaySal = wrkDays == 0 ? 0 : Math.Round(CurntSalary / Convert.ToDouble(wrkDays));
                                    double paiddaysOff = perdaySal * (dtPayroll.Rows[j]["PaidLeavesUsed"].ToString() == "" ? 0 : dtPayroll.Rows[j]["PaidLeavesUsed"].ToString() == "NULL" ? 0 : Convert.ToInt32(dtPayroll.Rows[j]["PaidLeavesUsed"]));
                                    double ActualSalary = perdaySal * Convert.ToInt32(dtPayroll.Rows[j]["Present"]);
                                    CalSalary = paiddaysOff + ActualSalary;
                                    dtPayroll.Rows[j]["CalSalary"] = CalSalary;
                                    dtPayroll.Rows[j]["TotalPay"] = CalSalary;
                                }
                                else
                                {
                                    dtPayroll.Rows[j]["CalSalary"] = 0.0;
                                    dtPayroll.Rows[j]["TotalPay"] = 0.0;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
            }
            return dtPayroll;
        }