示例#1
0
        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"));
        }
示例#2
0
        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));
        }
示例#3
0
        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));
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }