private OperationDataConfigurationViewModel ConfigurationViewModel(OperationDataParamConfigurationViewModel paramViewModel, bool?isIncludeGroup) { PeriodeType pType = string.IsNullOrEmpty(paramViewModel.PeriodeType) ? PeriodeType.Yearly : (PeriodeType)Enum.Parse(typeof(PeriodeType), paramViewModel.PeriodeType); var request = paramViewModel.MapTo <GetOperationDataConfigurationRequest>(); request.PeriodeType = pType; request.IsPartial = isIncludeGroup.HasValue && isIncludeGroup.Value; var response = _operationDataService.GetOperationDataConfiguration(request); var viewModel = response.MapTo <OperationDataConfigurationViewModel>(); viewModel.Years = _dropdownService.GetYearsForOperationData().MapTo <SelectListItem>(); viewModel.PeriodeType = pType.ToString(); viewModel.Year = request.Year; viewModel.ConfigType = ConfigType.OperationData.ToString(); return(viewModel); }
public ActionResult DownloadTemplateForAllGroup(OperationDataParamConfigurationViewModel paramViewModel) { PeriodeType pType = string.IsNullOrEmpty(paramViewModel.PeriodeType) ? PeriodeType.Yearly : (PeriodeType)Enum.Parse(typeof(PeriodeType), paramViewModel.PeriodeType); var request = paramViewModel.MapTo <GetOperationDataConfigurationRequest>(); request.PeriodeType = pType; request.IsPartial = false; var response = _operationDataService.GetOperationDataConfigurationForAllGroup(request); var viewModel = response.MapTo <OperationDataConfigurationViewModel>(); viewModel.Years = _dropdownService.GetYearsForOperationData().MapTo <SelectListItem>(); viewModel.PeriodeType = pType.ToString(); viewModel.Year = request.Year; viewModel.ConfigType = ConfigType.OperationData.ToString(); return(ConvertToExcelFile(paramViewModel, viewModel)); }
private ActionResult ConvertToExcelFile(OperationDataParamConfigurationViewModel viewModel, OperationDataConfigurationViewModel data) { var resultPath = Server.MapPath(string.Format("{0}{1}/", TemplateDirectory, ConfigType.OperationData)); if (!Directory.Exists(resultPath)) { Directory.CreateDirectory(resultPath); } string workSheetName = new StringBuilder(viewModel.PeriodeType).ToString(); string dateFormat = string.Empty; switch (viewModel.PeriodeType) { case "Yearly": dateFormat = "yyyy"; break; case "Monthly": dateFormat = "mmm-yy"; workSheetName = string.Format("{0}_{1}", workSheetName, viewModel.Year); break; default: dateFormat = "dd-mmm-yy"; workSheetName = string.Format("{0}_{1}-{2}", workSheetName, viewModel.Year, viewModel.Month.ToString().PadLeft(2, '0')); break; } string fileName = string.Format(@"{0}.xlsx", DateTime.Now.ToString("yyyymmddMMss")); /*string fileName = new StringBuilder(guid).Append(".xlsx").ToString();*/ IWorkbook workbook = new Workbook(); Worksheet worksheet = workbook.Worksheets[0]; worksheet.Name = workSheetName; workbook.Worksheets.ActiveWorksheet = worksheet; RowCollection rows = workbook.Worksheets[0].Rows; ColumnCollection columns = workbook.Worksheets[0].Columns; Row headerRow = rows[0]; headerRow.FillColor = Color.DarkGray; headerRow.Alignment.Horizontal = SpreadsheetHorizontalAlignment.Center; headerRow.Alignment.Vertical = SpreadsheetVerticalAlignment.Center; Column kpiIdColumn = columns[0]; Column kpiNameColumn = columns[1]; kpiIdColumn.Visible = false; headerRow.Worksheet.Cells[headerRow.Index, kpiIdColumn.Index].Value = "KPI ID"; headerRow.Worksheet.Cells[headerRow.Index, kpiNameColumn.Index].Value = "KPI Name"; int i = 1; foreach (var kpi in data.Kpis) { int j = 2; worksheet.Cells[i, kpiIdColumn.Index].Value = kpi.Id; worksheet.Cells[i, kpiNameColumn.Index].Value = string.Format(@"{0} ({1})", kpi.Name, kpi.MeasurementName); foreach (var operationData in kpi.OperationData.OrderBy(x => x.Periode)) { worksheet.Cells[headerRow.Index, j].Value = operationData.Periode; worksheet.Cells[headerRow.Index, j].NumberFormat = dateFormat; worksheet.Cells[headerRow.Index, j].AutoFitColumns(); worksheet.Cells[i, j].Value = operationData.Value; worksheet.Cells[i, j].NumberFormat = "#,0.#0"; worksheet.Columns[j].AutoFitColumns(); j++; } Column totalValueColumn = worksheet.Columns[j]; if (i == headerRow.Index + 1) { worksheet.Cells[headerRow.Index, totalValueColumn.Index].Value = "Average"; worksheet.Cells[headerRow.Index, totalValueColumn.Index + 1].Value = "SUM"; Range r1 = worksheet.Range.FromLTRB(kpiNameColumn.Index + 1, i, j - 1, i); worksheet.Cells[i, j].Formula = string.Format("=AVERAGE({0})", r1.GetReferenceA1()); worksheet.Cells[i, j + 1].Formula = string.Format("=SUM({0})", r1.GetReferenceA1()); } else { // add formula Range r2 = worksheet.Range.FromLTRB(kpiNameColumn.Index + 1, i, j - 1, i); worksheet.Cells[i, j].Formula = string.Format("=AVERAGE({0})", r2.GetReferenceA1()); worksheet.Cells[i, j + 1].Formula = string.Format("=SUM({0})", r2.GetReferenceA1()); } i++; } kpiNameColumn.AutoFitColumns(); worksheet.FreezePanes(headerRow.Index, kpiNameColumn.Index); string resultFilePath = string.Format("{0},{1}", resultPath, fileName); using (FileStream stream = new FileStream(resultFilePath, FileMode.Create, FileAccess.ReadWrite)) { workbook.SaveDocument(stream, DevExpress.Spreadsheet.DocumentFormat.Xlsx); stream.Close(); } string namafile = Path.GetFileName(resultFilePath); byte[] fileBytes = System.IO.File.ReadAllBytes(resultFilePath); var response = new FileContentResult(fileBytes, "application/octet-stream") { FileDownloadName = fileName }; return(response); }
public ActionResult DownloadTemplate(OperationDataParamConfigurationViewModel viewModel) { var data = ConfigurationViewModel(viewModel, false); return(ConvertToExcelFile(viewModel, data)); }
public ActionResult DetailPartialPeriodeType(OperationDataParamConfigurationViewModel paramViewModel) { var viewModel = ConfigurationViewModel(paramViewModel, true); return(PartialView("DetailPartial/_" + viewModel.PeriodeType, viewModel)); }
public ActionResult DetailPartial(OperationDataParamConfigurationViewModel paramViewModel) { return(View("_DetailPartial", ConfigurationViewModel(paramViewModel, true))); }
public ActionResult Configuration(OperationDataParamConfigurationViewModel paramViewModel) { var viewModel = ConfigurationViewModel(paramViewModel, null); return(View(viewModel)); }
//actually it can also be processed by check if it is ajax request but you know.. deadline happens public ActionResult ConfigurationPartial(OperationDataParamConfigurationViewModel paramViewModel) { var viewModel = ConfigurationViewModel(paramViewModel, null); return(PartialView("Configuration/_" + viewModel.PeriodeType, viewModel)); }