private void ReadExcelSchemaAndCreateBooks(ManageBooksViewModel manageBooksViewModel) { try { var fileName = manageBooksViewModel.ExcelSchemaBase.FileName; if (_fileFormatValidation.IsExcelType(fileName)) { var filePath = SaveOnServer(manageBooksViewModel.ExcelSchemaBase.FileName, Keys.ExcelSchemaBase); var excelSchema = new FileInfo(filePath); var datafile = new ExcelPackage(excelSchema); var workbook = datafile.Workbook; var workSheet = workbook.Worksheets.First(); const int startRowIndex = 2; for (var rowIndex = startRowIndex; rowIndex <= workSheet.Dimension.End.Row; rowIndex++) { var book = ExtractValuesFromWorksheetAndCreateBook(workSheet, rowIndex); if (book != null) { _bookService.Add(book); } } } else { ModelState.AddModelError(string.Empty, "Please upload a valid Excel document."); } } catch (Exception e) { ModelState.AddModelError(string.Empty, "Something was wrong with the upload, please make sure the Excel template is correctly defined."); _logger.Error(e); } }
public ActionResult AddBooks(ManageBooksViewModel manageBooksViewModel) { if (manageBooksViewModel == null) { return(View("~/Views/Common/NotFound.cshtml", new NotFoundViewModel() { ElementName = "Books" })); } if (ModelState.IsValid) { ReadExcelSchemaAndCreateBooks(manageBooksViewModel); if (ModelState.Values.Any(x => x.Errors.Count >= 1)) { return(View("AddMany", manageBooksViewModel)); } } else { ModelState.AddModelError(string.Empty, "Please upload an Excel file with book information."); return(View("AddMany", manageBooksViewModel)); } return(RedirectToAction("index")); }
public IActionResult Manage() { var viewModel = new ManageBooksViewModel(); List <PendingBook> pBooks = ctx.PendingBooks.ToList(); List <Book> allBooks = ctx.Books.Where(a => a.Status == 1).ToList(); List <Book> disabledBooks = ctx.Books.Where(a => a.Status == 0).ToList(); if (pBooks != null) { viewModel.pendingBooks = pBooks; } if (allBooks != null) { viewModel.allBooks = allBooks; } if (disabledBooks != null) { viewModel.disabledBooks = disabledBooks; } return(View(viewModel)); }