private DataTable CreateApprovalReportDataTable(ApprovalReportExportRequestModel approvalReportExportRequest) { var columns = typeof(ApprovalReportExportDataModel).GetProperties() .SelectMany(item => item.GetCustomAttributes(typeof(ExcelColumnAttribute), false)) .Select(item => (ExcelColumnAttribute)item); columns = ApplyCollumnFilters(columns: columns, isGrossCost: approvalReportExportRequest.IsGrossCost, isNetCost: approvalReportExportRequest.IsNetCost, isIncludeNonWorking: approvalReportExportRequest.IsIncludeNonWorking, isIncludeFees: approvalReportExportRequest.IsIncludeFees); var dataTable = new DataTable(); dataTable.Columns.AddRange(columns.Select(item => new DataColumn(item.Header)).ToArray()); FillDataTable(dataTable, approvalReportExportRequest); return(dataTable); }
private void FillDataTable(DataTable dataTable, ApprovalReportExportRequestModel approvalReportExportRequest) { var columns = dataTable.Columns; var approvalReports = approvalReportExportRequest.ApprovalReports; for (var i = 0; i < approvalReports.Count(); i++) { var dataRow = dataTable.NewRow(); var countDeletedColumns = 0; dataRow[columns[(int)ApprovalReportElement.ResourceSet]] = approvalReports[i].ResourceSet; dataRow[columns[(int)ApprovalReportElement.Country]] = approvalReports[i].Country; dataRow[columns[(int)ApprovalReportElement.Client]] = approvalReports[i].Client; dataRow[columns[(int)ApprovalReportElement.Product]] = approvalReports[i].Product; dataRow[columns[(int)ApprovalReportElement.NameVersion]] = approvalReports[i].NameVersion; dataRow[columns[(int)ApprovalReportElement.SubmittedBy]] = approvalReports[i].SubmittedBy; dataRow[columns[(int)ApprovalReportElement.DateSubmitted]] = approvalReports[i].DateSubmitted.ToString("MM/dd/yyyy hh:mm"); dataRow[columns[(int)ApprovalReportElement.StatusStep]] = approvalReports[i].StatusStep; dataRow[columns[(int)ApprovalReportElement.DateCompleted]] = approvalReports[i].DateCompleted?.ToString("MM/dd/yyyy hh:mm"); dataRow[columns[(int)ApprovalReportElement.Days]] = approvalReports[i].Days; dataRow[columns[(int)ApprovalReportElement.Action]] = approvalReports[i].Action; dataRow[columns[(int)ApprovalReportElement.Comments]] = approvalReports[i].Comments; dataRow[columns[(int)ApprovalReportElement.Currency]] = approvalReports[i].Currency; if (approvalReportExportRequest.IsGrossCost) { dataRow[columns[(int)ApprovalReportElement.GrossCost]] = approvalReports[i].GrossCost; } else { countDeletedColumns++; } if (approvalReportExportRequest.IsNetCost) { dataRow[columns[(int)ApprovalReportElement.NetCost - countDeletedColumns]] = approvalReports[i].NetCost; } else { countDeletedColumns++; } dataRow[columns[(int)ApprovalReportElement.WorkingCost - countDeletedColumns]] = approvalReports[i].WorkingCost; if (approvalReportExportRequest.IsIncludeNonWorking) { dataRow[columns[(int)ApprovalReportElement.NonWorkingCosts - countDeletedColumns]] = approvalReports[i].NonWorkingCosts; } else { countDeletedColumns++; } if (approvalReportExportRequest.IsIncludeFees) { dataRow[columns[(int)ApprovalReportElement.Fees - countDeletedColumns]] = approvalReports[i].Fees; } else { countDeletedColumns++; } dataRow[columns[(int)ApprovalReportElement.IsEvenGroup - countDeletedColumns]] = approvalReports[i].IsEvenGroup; dataRow[columns[(int)ApprovalReportElement.CurrencySymbol - countDeletedColumns]] = approvalReports[i].CurrencySymbol; dataTable.Rows.Add(dataRow); } }