using System; using System.Collections.Generic; using System.Data; using System.Linq; using HRM.BO; using HRM.DA; using Microsoft.Reporting.NETCore; using Microsoft.Reporting.NETCore.Internal.Soap.ReportingServices2005.Execution; using Microsoft.VisualBasic; using NPOI.SS.Formula.Functions; namespace HRM.Report { public class EmpLeaveLedger { public EmpLeaveLedger() { } /*public static List ApplicableParams(Employee oEmp, int payrollTypeId) { LeaveParameterService leaveParameterService = new LeaveParameterService(); List leaveParamIds = SetupManager.ApplicableParameters(oEmp, EnumParameterSetup.Leave); List leaveParamss = leaveParameterService.Get(true, payrollTypeId); List leaveParams = new List(); foreach (LeaveParameter lparam in leaveParamss) { if (lparam.Leave.ApplicableFor != (EnumGender)oEmp.Gender && lparam.Leave.ApplicableFor != EnumGender.Other && lparam.Leave.ApplicableFor != EnumGender.None) { continue; } bool found = false; foreach (int id in leaveParamIds) { if (id == lparam.ID) { found = true; break; } } if (found) { switch (lparam.ApplicableFor) { case LeaveApplicableType.Probetionary: if (!oEmp.IsConfirmed) { leaveParams.Add(lparam); } break; case LeaveApplicableType.Confirmed: if (oEmp.IsConfirmed) { leaveParams.Add(lparam); } break; case LeaveApplicableType.Regardless: leaveParams.Add(lparam); break; default: break; } } } return leaveParams; }*/ //#region New code for ShowReportNew 2023 public byte[] ShowReportNew(string sEmpIDs, int leaveYear, int payrollTypeId, string reportType) { //DateTime fromDate = DateTime.Now, toDate = DateTime.Now; DataSet dsSub = null; string caption = "Employee Leave Balance"; //string embeddedResource = "LeaveLedgerNmgt.rdlc"; string embeddedResource = ""; //SystemInformation systemInformation = new SystemInformationService().Get(); var companyNameObj = new SystemConfigarationService().GetconfigValue(EnumConfigurationType.Logic, "system", "company"); string companyName = Convert.ToString(companyNameObj); //string[] sEmp = sEmpID.Split(new char[] { ',' }); List oCurrYearLeaveStatusEmployee = new LeaveProcessService().GetLeaveBalance(leaveYear, payrollTypeId, sEmpIDs); //var employee = new EmployeeService().Get(int.Parse(sEmpIDs)); DataSet resultDataSet = new DataSet(); DataTable oBody = new PayrollDataSet.dsEmpLeaveLedger.EmpLeaveLedgerDataTable(); DataTable oBody2 = new PayrollDataSet.dsEmpLeaveLedger.EmpInformationDataTable(); DataTable oBody3 = new PayrollDataSet.dsEmpLeaveLedger.LeaveYearDataTable(); DataTable oBody4 = new PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable(); List employees = new EmployeeService().Get(sEmpIDs); List oLeaveEntrysEmployees = new List(); oLeaveEntrysEmployees = new LeaveEntryService().GetEmployeeWiseLeaveDetailReport(sEmpIDs, leaveYear, 0); foreach (Employee employee in employees) { employee.Department = employee.DepartmentID != null ? new DepartmentService().Get(employee.DepartmentID.Value) : null; employee.Designation = employee.DesignationID != null ? new DesignationService().Get(employee.DesignationID.Value) : null; List oLeaveEntrys = new List(); oLeaveEntrys = oLeaveEntrysEmployees.FindAll( x=> x.EmpID == employee.ID); //oLeaveEntrys = new LeaveEntryService().GetEmployeeWiseLeaveDetailReport(sEmpIDs, fromDate, toDate, leaveType); oLeaveEntrys = oLeaveEntrys.OrderBy(x => x.AppliedLeaveDate).ToList(); List setupTypes = new SetupDetailService().GetTypes(EnumParameterSetup.Leave); //List setupDetails = new SetupDetailService().GetParameters(EnumParameterSetup.Leave); //List leaveParamss = new LeaveParameterService().GetAllByPayrollTypeID(payrollTypeId); //List lps = LeaveParameterService.ApplicableParams(employee, setupTypes, setupDetails, leaveParamss); LeaveParameter lp = null; List oEmps = new List(); List leaves = new LeaveService().GetAll(); oLeaveEntrys.ForEach(leaveEntry => leaveEntry.Leave = (leaves.Find(x => x.ID == leaveEntry.LeaveID))); oEmps.Add(employee); //List oCurrYearStatus = new LeaveProcessService().CurrentYearStatus(oEmps, new LeaveYearService().GetCurrentYear(), payrollTypeId); //List oCurrYearStatus = new LeaveProcessService().GetLeaveBalance(oEmps, new LeaveYearService().GetCurrentYear(payrollTypeId), payrollTypeId); List oCurrYearStatus = oCurrYearLeaveStatusEmployee.FindAll(x => x.EmpId == employee.ID); //List GetLeaveBalance(leaveYear, payrollTypeId, EmpIDsIn, empID = null); foreach (EmpLeaveStatus oItem in oCurrYearStatus) { oItem.Leave = leaves.Find(x => x.ID == oItem.LeaveId); ////lp = lps.FirstOrDefault(o => o.LeaveId == oItem.LeaveId); //if (lp != null && (lp.CalculationType == EnumLeaveCalculationType.Hourly || lp.CalculationType == EnumLeaveCalculationType.Hourly_Prorated)) //{ // if (lp.MaxAccumulatedDays > 0) // oBody4.Rows.Add(oItem.Leave.Description, Math.Round(oItem.OpeningBalance / 8, 2).ToString(), Math.Round(oItem.LeaveAvailed / 8, 2).ToString(), Math.Round(oItem.ClosingBalance / 8).ToString(), // employee.EmployeeNo, "", "", "", "", "", oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), Math.Round(lp.MaxAccumulatedDays / 8, 2), lp.MaxAccumulatedDays); //} //else if (lp != null) //{ // if (lp.MaxAccumulatedDays > 0) // oBody4.Rows.Add(oItem.Leave.Description, oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), // employee.EmployeeNo, "", "", "", "", "", (oItem.OpeningBalance * 8).ToString(), (oItem.LeaveAvailed * 8).ToString(), (oItem.ClosingBalance * 8).ToString(), lp.MaxAccumulatedDays, lp.MaxAccumulatedDays * 8); //} oBody4.Rows.Add(oItem.Leave.Description, oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), employee.EmployeeNo, "", "", "", "", "", "", "", "", 0, 0); } try { List empWPGroups = new EmployeeWorkPlanSetupService().Get(); EmployeeWorkPlanSetup oEmployeeWorkPlanSetup = null; List workPGroups = new WorkPlanGroupService().GetAll(); WorkPlanGroup oWorkPlanGroup = null; string shift = ""; oEmployeeWorkPlanSetup = empWPGroups.Where(o => o.EmployeeID == employee.ID).FirstOrDefault(); if (oEmployeeWorkPlanSetup != null) { oWorkPlanGroup = workPGroups.Where(o => o.ID == oEmployeeWorkPlanSetup.WorkPlanGroupID).FirstOrDefault(); //oMonthlyWorkPlan = monthlyWorkPlans.Where(o => o.WorkPlanGroupID == oWorkPlanGroup.ID && o.WorkDate == DateTime.Today).FirstOrDefault(); shift = oWorkPlanGroup == null ? "" : oWorkPlanGroup.Name; } oBody2.Rows.Add(employee.EmployeeNo, employee.Name, employee.Department != null ? employee.Department.Name : string.Empty, employee.Designation != null ? employee.Designation.Name : string.Empty, employee.JoiningDate.ToString("dd MMM yyyy"), shift); } catch (Exception ex) { throw new Exception(ex.Message); } List dataSource = new List(); if (oLeaveEntrys != null) { foreach (LeaveEntry le in oLeaveEntrys) { if (le.Leave != null) { oBody.Rows.Add(employee.EmployeeNo, le.Leave.Description, le.ApprovedFromDate.ToString("dd MMM yyyy"), le.ApprovedToDate.ToString("dd MMM yyyy"), le.ApprovedTotalDays, le.Remarks, le.AppliedLeaveDate.ToString("MMM, yyyy")); } else { oBody.Rows.Add(employee.EmployeeNo, le.Leave.Description, le.ApprovedFromDate.ToString("dd MMM yyyy"), le.ApprovedToDate.ToString("dd MMM yyyy"), le.ApprovedTotalDays, le.Remarks, le.AppliedLeaveDate.ToString("MMM, yyyy")); } } //dataSource.Add(new ReportDataSource("dsEmpLeaveLedger_EmpLeaveLedger", oBody)); } //dataSource.Add(new ReportDataSource("dsEmpLeaveLedger_EmpInformation", oBody2)); //dataSource.Add(new ReportDataSource("dsEmpLeaveLedger_LeaveBalance", oBody4)); //string RDLCName = "HRM.Report.RDLC.LeaveLedgerNmgt.rdlc"; } DataSet subDataSet = new DataSet(); List reportParameters = new List(); string RDLCName; if (companyName == "SGS Bangladesh Limited") { RDLCName = "HRM.Report.RDLC.LeaveLedgerSGS.rdlc"; subDataSet = null; embeddedResource = "LeaveLedgerSGS.rdlc"; oBody.TableName = "dsEmpLeaveLedger_EmpLeaveLedger"; resultDataSet.Tables.Add(oBody); oBody2.TableName = "dsEmpLeaveLedger_EmpInformation"; resultDataSet.Tables.Add(oBody2); oBody3.TableName = "dsEmpLeaveLedger_LeaveYear"; resultDataSet.Tables.Add(oBody3); oBody4.TableName = "dsEmpLeaveLedger_LeaveBalance"; resultDataSet.Tables.Add(oBody4); //reportParameters = null; } else { RDLCName = "HRM.Report.RDLC.LeaveLedgerNmgtMultiple.rdlc"; embeddedResource = "LeaveLedgerNmgtMultiple.rdlc"; oBody2.TableName = "dsEmpLeaveLedger_EmpInformation"; resultDataSet.Tables.Add(oBody2); oBody4.TableName = "dsEmpLeaveLedger_LeaveBalance"; subDataSet.Tables.Add(oBody4); oBody.TableName = "dsEmpLeaveLedger_EmpLeaveLedger"; subDataSet.Tables.Add(oBody); } string leavePeriod = ""; if (leaveYear != 0) { leavePeriod = new LeaveYearService().Get(leaveYear).Name; } Microsoft.Reporting.NETCore.ReportParameter rParam = new Microsoft.Reporting.NETCore.ReportParameter("Period", leavePeriod); reportParameters.Add(rParam); ReportProcessor reportProcessor = new ReportProcessor(); // return reportProcessor.ShowLeaveBalanceNew(dataSource, embeddedResource, caption, payrollTypeId, reportType); return reportProcessor.CommonReportView(null, RDLCName, resultDataSet, subDataSet, reportParameters, true, payrollTypeId, reportType); } //#endregion #region previous code for ShowReportNew //public byte[] ShowReportNew(string sEmpIDs, DateTime fromDate, DateTime toDate, int leaveType, int payrollTypeId, // string reportType) //{ // DataSet dsSub = null; // string caption = "Employee Leave Balance"; // //string embeddedResource = "LeaveLedgerNmgt.rdlc"; // string embeddedResource = "LeaveLedgerSGS.rdlc"; // //string[] sEmp = sEmpID.Split(new char[] { ',' }); // var employee = new EmployeeService().Get(int.Parse(sEmpIDs)); // //List employee = new EmployeeService().Get(sEmpIDs); // employee.Department = employee.DepartmentID != null ? new DepartmentService().Get(employee.DepartmentID.Value) : null; // employee.Designation = employee.DesignationID != null ? new DesignationService().Get(employee.DesignationID.Value) : null; // List oLeaveEntrys = new List(); // DataTable oBody = new PayrollDataSet.dsEmpLeaveLedger.EmpLeaveLedgerDataTable(); // DataTable oBody2 = new PayrollDataSet.dsEmpLeaveLedger.EmpInformationDataTable(); // DataTable oBody3 = new PayrollDataSet.dsEmpLeaveLedger.LeaveYearDataTable(); // DataTable oBody4 = new PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable(); // oLeaveEntrys = new LeaveEntryService().GetEmployeeWiseLeaveDetailReport(sEmpIDs, fromDate, toDate, leaveType); // oLeaveEntrys = oLeaveEntrys.OrderBy(x => x.AppliedLeaveDate).ToList(); // List setupTypes = new SetupDetailService().GetTypes(EnumParameterSetup.Leave); // List setupDetails = new SetupDetailService().GetParameters(EnumParameterSetup.Leave); // List leaveParamss = new LeaveParameterService().GetAllByPayrollTypeID(payrollTypeId); // List lps = LeaveParameterService.ApplicableParams(employee, setupTypes, setupDetails, leaveParamss); // LeaveParameter lp = null; // List oEmps = new List(); // List leaves = new LeaveService().GetAll(); // oLeaveEntrys.ForEach(leaveEntry => leaveEntry.Leave = (leaves.Find(x => x.ID == leaveEntry.LeaveID))); // oEmps.Add(employee); // //List oCurrYearStatus = new LeaveProcessService().CurrentYearStatus(oEmps, new LeaveYearService().GetCurrentYear(), payrollTypeId); // List oCurrYearStatus = new LeaveProcessService().GetLeaveBalance(oEmps, new LeaveYearService().GetCurrentYear(payrollTypeId), payrollTypeId); // foreach (EmpLeaveStatus oItem in oCurrYearStatus) // { // oItem.Leave = leaves.Find(x => x.ID == oItem.LeaveId); // lp = lps.FirstOrDefault(o => o.LeaveId == oItem.LeaveId); // if (lp != null && (lp.CalculationType == EnumLeaveCalculationType.Hourly || lp.CalculationType == EnumLeaveCalculationType.Hourly_Prorated)) // { // if (lp.MaxAccumulatedDays > 0) // oBody4.Rows.Add(oItem.Leave.Description, Math.Round(oItem.OpeningBalance / 8, 2).ToString(), Math.Round(oItem.LeaveAvailed / 8, 2).ToString(), Math.Round(oItem.ClosingBalance / 8).ToString(), // "", "", "", "", "", "", oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), Math.Round(lp.MaxAccumulatedDays / 8, 2), lp.MaxAccumulatedDays); // } // else if (lp != null) // { // if (lp.MaxAccumulatedDays > 0) // oBody4.Rows.Add(oItem.Leave.Description, oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), // "", "", "", "", "", "", (oItem.OpeningBalance * 8).ToString(), (oItem.LeaveAvailed * 8).ToString(), (oItem.ClosingBalance * 8).ToString(), lp.MaxAccumulatedDays, lp.MaxAccumulatedDays * 8); // } // } // try // { // List empWPGroups = new EmployeeWorkPlanSetupService().Get(); // EmployeeWorkPlanSetup oEmployeeWorkPlanSetup = null; // List workPGroups = new WorkPlanGroupService().GetAll(); // WorkPlanGroup oWorkPlanGroup = null; // string shift = ""; // oEmployeeWorkPlanSetup = empWPGroups.Where(o => o.EmployeeID == employee.ID).FirstOrDefault(); // if (oEmployeeWorkPlanSetup != null) // { // oWorkPlanGroup = workPGroups.Where(o => o.ID == oEmployeeWorkPlanSetup.WorkPlanGroupID).FirstOrDefault(); // //oMonthlyWorkPlan = monthlyWorkPlans.Where(o => o.WorkPlanGroupID == oWorkPlanGroup.ID && o.WorkDate == DateTime.Today).FirstOrDefault(); // shift = oWorkPlanGroup == null ? "" : oWorkPlanGroup.Name; // } // oBody2.Rows.Add(employee.EmployeeNo, employee.Name, employee.Department != null ? employee.Department.Name : string.Empty, employee.Designation != null ? employee.Designation.Name : string.Empty, employee.JoiningDate.ToString("dd MMM yyyy"), shift); // } // catch (Exception ex) // { // throw new Exception(ex.Message); // } // List dataSource = new List(); // if (oLeaveEntrys != null) // { // foreach (LeaveEntry le in oLeaveEntrys) // { // if (le.Leave != null) // { // oBody.Rows.Add("", le.Leave.Description, le.ApprovedFromDate.ToString("dd MMM yyyy"), le.ApprovedToDate.ToString("dd MMM yyyy"), le.ApprovedTotalDays, le.Remarks, le.AppliedLeaveDate.ToString("MMM, yyyy")); // } // else // { // oBody.Rows.Add("", le.Leave.Description, le.ApprovedFromDate.ToString("dd MMM yyyy"), le.ApprovedToDate.ToString("dd MMM yyyy"), le.ApprovedTotalDays, le.Remarks, le.AppliedLeaveDate.ToString("MMM, yyyy")); // } // } // dataSource.Add(new ReportDataSource("dsEmpLeaveLedger_EmpLeaveLedger", oBody)); // } // dataSource.Add(new ReportDataSource("dsEmpLeaveLedger_EmpInformation", oBody2)); // dataSource.Add(new ReportDataSource("dsEmpLeaveLedger_LeaveBalance", oBody4)); // //string RDLCName = "HRM.Report.RDLC.LeaveLedgerNmgt.rdlc"; // string RDLCName = "HRM.Report.RDLC.LeaveLedgerSGS.rdlc"; // DataSet resultDataSet = new DataSet(); // oBody.TableName = "dsEmpLeaveLedger_EmpLeaveLedger"; // resultDataSet.Tables.Add(oBody); // oBody2.TableName = "dsEmpLeaveLedger_EmpInformation"; // resultDataSet.Tables.Add(oBody2); // oBody3.TableName = "dsEmpLeaveLedger_LeaveYear"; // resultDataSet.Tables.Add(oBody3); // oBody4.TableName = "dsEmpLeaveLedger_LeaveBalance"; // resultDataSet.Tables.Add(oBody4); // ReportProcessor reportProcessor = new ReportProcessor(); // // return reportProcessor.ShowLeaveBalanceNew(dataSource, embeddedResource, caption, payrollTypeId, reportType); // return reportProcessor.CommonReportView(null, RDLCName, resultDataSet, null, null, true, payrollTypeId, reportType); //} #endregion public byte[] ShowReport(string sEmpIDs, DateTime fromDate, DateTime toDate, int leaveType, int payrollTypeId, string reportType) { LeaveEntryService leaveEntryService = new LeaveEntryService(); LeaveParameterService leaveParameterService = new LeaveParameterService(); LeaveProcessService leaveProcessService = new LeaveProcessService(); LeaveYearService leaveYearService = new LeaveYearService(); EmployeeWorkPlanSetupService workPlanSetupService = new EmployeeWorkPlanSetupService(); WorkPlanGroupService workPlanGroupService = new WorkPlanGroupService(); EmployeeService employeeService = new EmployeeService(); DepartmentService departmentService = new DepartmentService(); DesignationService designationService = new DesignationService(); DataSet dsSub = null; List dataSource = new List(); string embeddedResource = "MultipleLeaveLedger.rdlc"; string caption = "Employee Leave Ledger"; List oLeaveEntrys = new List(); List oLeaveEntrysIndividual = new List(); List leaves = new LeaveService().Get(EnumStatus.Active, payrollTypeId); List empWPGroups = new EmployeeWorkPlanSetupService().Get(); List workPGroups = new WorkPlanGroupService().GetAll(); List employees = new List(); List departments = new List(); List designations = new List(); DataTable oBody = new PayrollDataSet.dsEmpLeaveLedger.EmpLeaveLedgerDataTable(); DataTable oBody2 = new PayrollDataSet.dsEmpLeaveLedger.EmpInformationDataTable(); DataTable oBody3 = new PayrollDataSet.dsEmpLeaveLedger.LeaveYearDataTable(); DataTable oBody4 = new PayrollDataSet.dsEmpLeaveLedger.LeaveBalanceDataTable(); oLeaveEntrys = leaveEntryService.GetEmployeeWiseLeaveDetailReport(sEmpIDs, fromDate, toDate, leaveType); foreach (var leaveEntry in oLeaveEntrys) { leaveEntry.Leave = leaves.Find(x => x.ID == leaveEntry.LeaveID); } //oLeaveEntrys = oLeaveEntrys.OrderBy(x => x.AppliedLeaveDate).ToObjectsTemplate(); employees = employeeService.GetByEmpIDs(sEmpIDs); var arrDeptId= employees.Select(x => Convert.ToString(x.DepartmentID.GetValueOrDefault())).Distinct().ToArray(); var arrDesignationId= employees.Select(x => Convert.ToString(x.DesignationID.GetValueOrDefault())).Distinct().ToArray(); string deptIds = Strings.Join(arrDeptId, ","); string designationIds = Strings.Join(arrDesignationId, ","); departments = departmentService.GetByDeptIDs(deptIds); designations = designationService.GetByDesignationIDs(designationIds); foreach (Employee emp in employees) { emp.Department = departments.Find(x => x.ID == emp.DepartmentID); emp.Designation = designations.Find(x => x.ID == emp.DesignationID); List oEmps = new List(); oEmps.Add(emp); List oCurrYearStatus = leaveProcessService.CurrentYearStatus(oEmps, leaveYearService.GetCurrentYear(payrollTypeId), payrollTypeId); foreach (EmpLeaveStatus oItem in oCurrYearStatus) { // lp = lps.FirstOrDefault(o => o.LeaveId == oItem.LeaveId); // if (lp != null && lp.CalculationType == EnumLeaveCalculationType.Hourly || lp.CalculationType == EnumLeaveCalculationType.Hourly_Prorated) // { // if (lp.MaxAccumulatedDays > 0) // oBody4.Rows.Add(oItem.Leave.Description, Math.Round(oItem.OpeningBalance / 8, 2).ToString(), Math.Round(oItem.LeaveAvailed / 8, 2).ToString(), Math.Round(oItem.ClosingBalance / 8).ToString(), // emp.EmployeeNo, "", "", "", "", "", oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), (oItem.ClosingBalance - oItem.LateLeaveAdjustmentConsumed).ToString(), Math.Round(lp.MaxAccumulatedDays / 8, 2), lp.MaxAccumulatedDays, oItem.LateLeaveAdjustmentConsumed.ToString()); // } // else if (lp != null) // { // if (lp.MaxAccumulatedDays > 0) oBody4.Rows.Add(oItem.Leave.Description, Math.Round(oItem.OpeningBalance, MidpointRounding.AwayFromZero).ToString(), Math.Round(oItem.LeaveAvailed, MidpointRounding.AwayFromZero).ToString(), Math.Round(oItem.ClosingBalance, MidpointRounding.AwayFromZero).ToString(), emp.EmployeeNo, "", "", "", "", "", (oItem.OpeningBalance * 8).ToString(), (oItem.LeaveAvailed * 8).ToString(), (oItem.ClosingBalance * 8).ToString(), "", "", oItem.LateLeaveAdjustmentConsumed.ToString()); //if (lp.MaxAccumulatedDays > 0) //oBody4.Rows.Add(oItem.Leave.Description, oItem.OpeningBalance.ToString(), oItem.LeaveAvailed.ToString(), oItem.ClosingBalance.ToString(), // "", "", "", "", "", "", (oItem.OpeningBalance * 8).ToString(), (oItem.LeaveAvailed * 8).ToString(), (oItem.ClosingBalance * 8).ToString(), lp.MaxAccumulatedDays, lp.MaxAccumulatedDays * 8, oItem.LateLeaveAdjustmentConsumed.ToString()); //} } try { EmployeeWorkPlanSetup oEmployeeWorkPlanSetup = null; WorkPlanGroup oWorkPlanGroup = null; string shift = ""; oEmployeeWorkPlanSetup = empWPGroups.Where(o => o.EmployeeID == emp.ID).FirstOrDefault(); if (oEmployeeWorkPlanSetup != null) { oWorkPlanGroup = workPGroups.Where(o => o.ID == oEmployeeWorkPlanSetup.WorkPlanGroupID).FirstOrDefault(); //oMonthlyWorkPlan = monthlyWorkPlans.Where(o => o.WorkPlanGroupID == oWorkPlanGroup.ID && o.WorkDate == DateTime.Today).FirstOrDefault(); shift = oWorkPlanGroup == null ? "" : oWorkPlanGroup.Name; } oBody2.Rows.Add(emp.EmployeeNo, emp.Name, emp.Department != null ? emp.Department.Name : string.Empty, emp.Designation != null ? emp.Designation.Name : string.Empty, emp.JoiningDate.ToString("dd MMM yyyy"), shift); } catch (Exception exp) { } } if (oLeaveEntrys != null) { foreach (LeaveEntry le in oLeaveEntrys) { Employee tempEmp = employees.Find(item => item.ID == le.EmpID); if (le.Leave != null) { oBody.Rows.Add(tempEmp.EmployeeNo, le.Leave.Description, le.ApprovedFromDate.ToString("dd MMM yyyy"), le.ApprovedToDate.ToString("dd MMM yyyy"), le.ApprovedTotalDays, le.Remarks, le.AppliedLeaveDate.ToString("MMM, yyyy")); } else { oBody.Rows.Add(tempEmp.EmployeeNo, "", le.ApprovedFromDate.ToString("dd MMM yyyy"), le.ApprovedToDate.ToString("dd MMM yyyy"), le.ApprovedTotalDays, le.Remarks, le.AppliedLeaveDate.ToString("MMM, yyyy")); } } } dsSub = new DataSet(); oBody4.TableName = "dsEmpLeaveLedger_LeaveBalance"; dsSub.Tables.Add(oBody4); oBody.TableName = "dsEmpLeaveLedger_EmpLeaveLedger"; dsSub.Tables.Add(oBody); DataSet resultDataSet = new DataSet(); oBody2.TableName = "dsEmpLeaveLedger_EmpInformation"; resultDataSet.Tables.Add(oBody2); oBody3.TableName = "dsEmpLeaveLedger_LeaveYear"; dsSub.Tables.Add(oBody3); string RDLCName = "HRM.Report.RDLC.MultipleLeaveLedger.rdlc"; ReportProcessor reportProcessor = new ReportProcessor(); //return reportProcessor.ShowLeaveLedger(oBody2,dsSub, embeddedResource, caption, payrollTypeId, reportType); return reportProcessor.CommonReportView(null, RDLCName, resultDataSet, dsSub, null, true, payrollTypeId, reportType); } } }