public ActionResult GetReportProfileIsWaitingStopWorkingList([DataSourceRequest] DataSourceRequest request, Hre_ReportProfileWaitingStopWorkingSearchModel model) { string status = string.Empty; //var isDataTable = false; var actionService = new ActionService(UserLogin); //object obj = new Hre_ProfileModel(); HeaderInfo headerInfo1 = new HeaderInfo() { Name = "DateFrom", Value = model.DateFrom }; HeaderInfo headerInfo2 = new HeaderInfo() { Name = "DateTo", Value = model.DateTo }; List<HeaderInfo> listHeaderInfo = new List<HeaderInfo>() { headerInfo1, headerInfo2 }; ListQueryModel lstModel = new ListQueryModel { PageIndex = request.Page, PageSize = request.PageSize, Filters = ExtractFilterAttributes(request), Sorts = ExtractSortAttributes(request), AdvanceFilters = ExtractAdvanceFilterAttributes(model) }; if ((model.IsCreateTemplate == true && model.IsCreateTemplateForDynamicGrid == true) || model.ExportId != Guid.Empty) { lstModel = new ListQueryModel { PageSize = int.MaxValue - 1, PageIndex = 1, Filters = ExtractFilterAttributes(request), Sorts = ExtractSortAttributes(request), AdvanceFilters = ExtractAdvanceFilterAttributes(model) }; } var listProfile = actionService.GetData<Hre_ProfileEntity>(lstModel, ConstantSql.hrm_hr_sp_get_ProfileWaitingStopWoking, ref status); var ReportServices = new Hre_ReportServices(); var result = ReportServices.GetReportProfileWaitingStopWorking(listProfile); var isDataTable = false; object obj = new DataTable(); if (model.IsCreateTemplateForDynamicGrid) { var col = result.Columns.Count; result.Columns.RemoveAt(col - 1); obj = result; isDataTable = true; } if (model != null && model.IsCreateTemplate) { var path = Common.GetPath("Templates"); ExportService exportService = new ExportService(); ConfigExport cfgExport = new ConfigExport() { Object = obj, FileName = "Hre_ReportProfileWaitingStopWorkingEntity", OutPutPath = path, HeaderInfo = listHeaderInfo, DownloadPath = Hrm_Main_Web + "Templates", IsDataTable = isDataTable }; var str = exportService.CreateTemplate(cfgExport); return Json(str); } if (model.ExportId != Guid.Empty) { var fullPath = string.Empty; if (headerInfo1.Value == null || headerInfo2.Value == null) { fullPath = ExportService.Export(model.ExportId, result, null, model.ExportType); } else { fullPath = ExportService.Export(model.ExportId, result, listHeaderInfo, model.ExportType); } return Json(fullPath); } //return new JsonResult() { Data = result.ToDataSourceResult(request), MaxJsonLength = int.MaxValue }; #region mapping dataTable to dataList List<Hre_ReportProfileWaitingStopWorkingModel> dataList = new List<Hre_ReportProfileWaitingStopWorkingModel>(); Hre_ReportProfileWaitingStopWorkingModel aTSource = null; if (result.Rows.Count > 0) { const BindingFlags flags = BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic; var objFieldNames = (from PropertyInfo aProp in typeof(Hre_ReportProfileWaitingStopWorkingModel).GetProperties(flags) select new { Name = aProp.Name, Type = Nullable.GetUnderlyingType(aProp.PropertyType) ?? aProp.PropertyType }).ToList(); var dataTblFieldNames = (from DataColumn aHeader in result.Columns select new { Name = aHeader.ColumnName, Type = aHeader.DataType }).ToList(); var commonFields = objFieldNames.Intersect(dataTblFieldNames).ToList(); foreach (DataRow dataRow in result.AsEnumerable().ToList()) { aTSource = new Hre_ReportProfileWaitingStopWorkingModel(); foreach (var aField in commonFields) { PropertyInfo propertyInfos = aTSource.GetType().GetProperty(aField.Name); if (dataRow[aField.Name] == DBNull.Value) continue; propertyInfos.SetValue(aTSource, dataRow[aField.Name], null); } dataList.Add(aTSource); } } #endregion return Json(dataList.ToDataSourceResult(request)); }