public IActionResult Export(string sortBy = "id", string sortDir = "asc", int itemsPerPage = 5, int currentPage = 1, string filterValue = "", string currentLine = null) { PagedFilteredSortedResult <ItemModel> model = _services.ForgePageSortFilterResult(sortBy, sortDir, currentPage, itemsPerPage, filterValue, currentLine); var path = _services.ExportToXLS(model); return(File(System.IO.File.ReadAllBytes(path), "application/octet-stream", "Export.xlsx")); }
public IActionResult Index(PagedFilteredSortedResult <ItemModel> model) { PagedFilteredSortedResult <ItemModel> filteredModel = _services.ForgePageSortFilterResult(model.SortBy, model.SortDir, model.CurrentPage, model.ItemsPerPage, model.FilterValue, model.Admin.ID); return(View("Index", filteredModel)); }
public IActionResult Index(string sortBy = "id", string sortDir = "asc", int itemsPerPage = 5, int currentPage = 1, string filterValue = "", string userId = "", string currentLine = null) { PagedFilteredSortedResult <ItemModel> model = _services.ForgePageSortFilterResult(sortBy, sortDir, currentPage, itemsPerPage, filterValue, userId, currentLine); return(View(model)); }
public string ExportToXLS(PagedFilteredSortedResult <ItemModel> model) { SpreadsheetInfo.SetLicense("FREE-LIMITED-KEY"); var exportFile = new ExcelFile(); var workSheet = exportFile.Worksheets.Add("Exported data"); var dataTable = new DataTable(); var objModel = model.Items.ToList()[0]; foreach (var prop in objModel.GetType().GetProperties()) { dataTable.Columns.Add(prop.Name); } foreach (var item in model.Items) { dataTable.Rows.Add(new object[] { item.ID, item.ProductCode, item.Name, item.Quantity, item.Price, item.Image }); } workSheet.InsertDataTable(dataTable, new InsertDataTableOptions() { ColumnHeaders = true, StartRow = 0 }); for (int i = 0; i <= 6; i++) { workSheet.Columns[i].AutoFit(); } exportFile.Save("wwwroot/exports/Export.xlsx"); var path = Path.GetFullPath("wwwroot/exports/Export.xlsx"); return(path); }
public PagedFilteredSortedResult <ItemModel> ForgePageSortFilterResult(string sortBy = "id", string sortDir = "asc", int currentPage = 1, int itemsPerPage = 5, string filterValue = "", string userId = "", string currentLine = null) { string xmlPath = @"C:\Users\HP\source\repos\Orders\Orders\wwwroot\xml\autogentestbase.xml"; IEnumerable <ItemModel> data = XmlHelper.ReadFromXml <ItemModel>(xmlPath); if (string.IsNullOrEmpty(filterValue)) { filterValue = ""; } else { filterValue = filterValue.ToLower(); currentPage = 1; data = data.Where(x => x.ID.ToString().ToLower().Contains(filterValue) || x.Name.ToLower().Contains(filterValue) || x.ProductCode.ToString().ToLower().Contains(filterValue) || x.Price.ToLower().Contains(filterValue) || x.Quantity.ToString().ToLower().Contains(filterValue)); } Func <ItemModel, object> order = x => x.ID; switch (sortBy.ToLower()) { case "id": order = x => long.Parse(x.ID); break; case "name": order = x => x.Name; break; case "quantity": order = x => x.Quantity; break; case "price": order = x => double.Parse(x.Price, CultureInfo.InvariantCulture); break; case "productcode": order = x => x.ProductCode; break; } data = (sortDir == "asc") ? data.OrderBy(order) : data.OrderByDescending(order); PagedFilteredSortedResult <ItemModel> model = new PagedFilteredSortedResult <ItemModel>() { SortBy = sortBy, SortDir = sortDir, ItemsPerPage = itemsPerPage, CurrentPage = currentPage, Items = data, FilterValue = filterValue }; model.Count = model.Items.ToList().Count; model.TotalPages = (int)Math.Ceiling(decimal.Divide(model.Count, itemsPerPage)); model.CurrentPage = model.CurrentPage > model.TotalPages ? model.TotalPages : currentPage; model.Items = data.Skip((model.CurrentPage - 1) * itemsPerPage).Take(itemsPerPage).ToList(); model.CurrentElementIndex = currentLine; model.Admin = new UserService().PullUserFromXML(userId); return(model); }