/// <summary> /// This function is for exporting a target table to excel file and send the exported one to client. /// </summary> /// <param name="findTableRecordsViewModel"> /// This instance is for retrieving table name sent from client [page|record] are /// useless /// </param> /// <returns></returns> public ActionResult ExportDatabaseToExcel(FindTableRecordsViewModel findTableRecordsViewModel) { // Set page & record to one to prevent validation errors on service. findTableRecordsViewModel.Page = 1; findTableRecordsViewModel.Records = 1; // Validate the model again. ValidateModel(findTableRecordsViewModel); // Model state is invalid. if (!ModelState.IsValid) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } // Export the target table to DataTable instance. var dataTable = _exportReportDomain.ExportSqlToDataTable(findTableRecordsViewModel.Table); // Memorizing data table instance by using MemoryStream. var memorizedDataTable = _exportReportDomain.ExportDataTableToMemoryStream(dataTable); // Export report to client download. ExportExcelFileToClientDownload(findTableRecordsViewModel.Table, memorizedDataTable, Response); // Export the datatable into an excel file. return(new HttpStatusCodeResult(HttpStatusCode.OK)); }
public async Task <ActionResult> RetrieveTableRecords(FindTableRecordsViewModel findTableRecordsViewModel) { try { // Model hasn't been initialize. Initialize it and do validation. if (findTableRecordsViewModel == null) { findTableRecordsViewModel = new FindTableRecordsViewModel(); ValidateModel(findTableRecordsViewModel); } // Request parameters are invalid. if (!ModelState.IsValid) { // Build validation messages and respond to client. Response.StatusCode = (int)HttpStatusCode.BadRequest; return(Json(new { validationMessages = FindValidationMessages(ModelState) })); } var tableColumns = await _masterDatabaseDomain.FindTableColumns(findTableRecordsViewModel.Table); var tableRows = await _masterDatabaseDomain.FindTableRecords(findTableRecordsViewModel.Table, findTableRecordsViewModel.Page, findTableRecordsViewModel.Records); var tableViewModel = new { Headers = tableColumns, Body = tableRows }; return(Json(tableViewModel)); } catch (Exception exception) { Response.StatusCode = (int)HttpStatusCode.InternalServerError; return(Json(new { exception.Message })); } }