// Methode für den PDF Download eines Artikels public ActionResult Download(int?KategorieID, int?FiBuKontoID, int?RaumID, int?BenutzerID, int?ArtikelYearsStart, int?ArtikelYearsEnd, string Search) { // Das Searchmodel wird hier abgefüllt ArtikelSearchModel artikelSearchModel = new ArtikelSearchModel() { KategorieID = KategorieID, FiBuKontoID = FiBuKontoID, RaumID = RaumID, BenutzerID = BenutzerID, ArtikelYearsStart = ArtikelYearsStart, ArtikelYearsEnd = ArtikelYearsEnd, Search = Search }; IEnumerable <Artikel> artikelList = _artikelService.GetArtikels(artikelSearchModel); Response.ContentEncoding = new System.Text.UTF8Encoding(); // UTF-8 Response.ContentType = "application/pdf"; FileContentResult fcr = new FileContentResult(RenderViewToPDF("Artikel", "exportpdf", artikelList.ToArray()), "application/pdf"); fcr.FileDownloadName = "LabelsInventar_" + GetTimestamp(DateTime.Now) + ".pdf"; return(fcr); }
// Diese Methode wird benötigt zum erstellen der Excel Liste public ActionResult ArtikelExport(int?KategorieID, int?FiBuKontoID, int?RaumID, int?BenutzerID, int?ArtikelYearsStart, int?ArtikelYearsEnd, string Search) { // Das Searchmodel wird hier abgefüllt ArtikelSearchModel artikelSearchModel = new ArtikelSearchModel() { KategorieID = KategorieID, FiBuKontoID = FiBuKontoID, RaumID = RaumID, BenutzerID = BenutzerID, ArtikelYearsStart = ArtikelYearsStart, ArtikelYearsEnd = ArtikelYearsEnd, Search = Search }; IEnumerable <Artikel> artikelList = _artikelService.GetArtikels(artikelSearchModel); MemoryStream ms = ArtikelToExcel(artikelList.OrderBy(d => d.InventarNummer).ToList()); ms.WriteTo(Response.OutputStream); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.ContentEncoding = new System.Text.UTF8Encoding(); // UTF-8 Response.AddHeader("Content-Disposition", "attachment;filename=InventarListe_" + GetTimestamp(DateTime.Now) + ".xlsx"); Response.StatusCode = 200; Response.End(); return(null); }
// Das ist die Übersicht über alle Artikel, die Parameter sind optional und werden für den Suchfilter benötigt // Die PagedList habe ich nach diesem Tutorial aufgebaut // http://www.itprotoday.com/web-development/aspnet-mvc-paging-done-perfectly public ActionResult Index(int?KategorieID, int?FiBuKontoID, int?RaumID, int?BenutzerID, int?ArtikelYearsStart, int?ArtikelYearsEnd, string Search, string sortOrder, int page = 1, int pagesize = 25) { // Das Searchmodel wird hier abgefüllt ArtikelSearchModel artikelSearchModel = new ArtikelSearchModel() { KategorieID = KategorieID, FiBuKontoID = FiBuKontoID, RaumID = RaumID, BenutzerID = BenutzerID, ArtikelYearsStart = ArtikelYearsStart, ArtikelYearsEnd = ArtikelYearsEnd, Search = Search }; IEnumerable <Artikel> artikelList = _artikelService.GetArtikels(artikelSearchModel); ViewBag.exportLink = "/Artikel/ArtikelExport?KategorieID=" + KategorieID + "&FiBuKontoID=" + FiBuKontoID + "&RaumID=" + RaumID + "&BenutzerID=" + BenutzerID + "&ArtikelYearsStart=" + ArtikelYearsStart + "&ArtikelYearsEnd=" + ArtikelYearsEnd + "&Search=" + Search; ViewBag.exportLinkPDF = "/Artikel/Download?KategorieID=" + KategorieID + "&FiBuKontoID=" + FiBuKontoID + "&RaumID=" + RaumID + "&BenutzerID=" + BenutzerID + "&ArtikelYearsStart=" + ArtikelYearsStart + "&ArtikelYearsEnd=" + ArtikelYearsEnd + "&Search=" + Search; Session["BackLink"] = "/Artikel?KategorieID=" + KategorieID + "&FiBuKontoID=" + FiBuKontoID + "&RaumID=" + RaumID + "&BenutzerID=" + BenutzerID + "&ArtikelYearsStart=" + ArtikelYearsStart + "&ArtikelYearsEnd=" + ArtikelYearsEnd + "&Search=" + Search + "&sortOrder=" + sortOrder + "&page=" + page; ViewBag.KategorieID = new SelectList(_kategorieService.GetKategories().OrderBy(x => x.Bezeichnung), "ID", "Bezeichnung", KategorieID); ViewBag.FiBuKontoID = new SelectList(_fiBuKontoService.GetFiBuKontos().OrderBy(x => x.Nummer), "ID", "Nummer", FiBuKontoID); ViewBag.RaumID = new SelectList(_raumService.GetRaums().OrderBy(x => x.Bezeichnung), "ID", "Bezeichnung", RaumID); ViewBag.BenutzerID = new SelectList(_benutzerService.GetBenutzers().OrderBy(x => x.Fullname), "ID", "Fullname", BenutzerID); ViewBag.ArtikelYearsStart = ArtikelYears(); ViewBag.ArtikelYearsEnd = ArtikelYears(); //Sortieren der Tabelle nach dem Beispiel im angegebenen Tutorial //https://www.itworld.com/article/2956575/development/how-to-sort-search-and-paginate-tables-in-asp-net-mvc-5.html ViewBag.InventarNummerSortParam = sortOrder == "InventarNummer" ? "InventarNummer_desc" : "InventarNummer"; ViewBag.GegenstandSortParam = sortOrder == "Gegenstand" ? "Gegenstand_desc" : "Gegenstand"; ViewBag.KategorieSortParam = sortOrder == "Kategorie" ? "Kategorie_desc" : "Kategorie"; ViewBag.OrtSortParam = sortOrder == "Ort" ? "Ort_desc" : "Ort"; ViewBag.NutzerSortParam = sortOrder == "Nutzer" ? "Nutzer_desc" : "Nutzer"; ViewBag.FiBuKontoSortParam = sortOrder == "FiBuKonto" ? "FiBuKonto_desc" : "FiBuKonto"; ViewBag.BeschaffungsdatumSortParam = sortOrder == "Beschaffungsdatum" ? "Beschaffungsdatum_desc" : "Beschaffungsdatum"; ViewBag.BeschaffungswertSortParam = sortOrder == "Beschaffungswert" ? "Beschaffungswert_desc" : "Beschaffungswert"; ViewBag.CurrentSort = sortOrder; switch (sortOrder) { case "InventarNummer": artikelList = artikelList.OrderBy(x => x.InventarNummer); break; case "InventarNummer_desc": artikelList = artikelList.OrderByDescending(x => x.InventarNummer); break; case "Gegenstand": artikelList = artikelList.OrderBy(x => x.Gegenstand); break; case "Gegenstand_desc": artikelList = artikelList.OrderByDescending(x => x.Gegenstand); break; case "Kategorie": artikelList = artikelList.OrderBy(x => x.Kategorie.Bezeichnung); break; case "Kategorie_desc": artikelList = artikelList.OrderByDescending(x => x.Kategorie.Bezeichnung); break; case "Ort": artikelList = artikelList.OrderBy(x => x.Ort); break; case "Ort_desc": artikelList = artikelList.OrderByDescending(x => x.Ort); break; case "Nutzer": artikelList = artikelList.OrderBy(x => x.Nutzer.Fullname); break; case "Nutzer_desc": artikelList = artikelList.OrderByDescending(x => x.Nutzer.Fullname); break; case "FiBuKonto": artikelList = artikelList.OrderBy(x => x.Kategorie.FiBuKonto.Nummer); break; case "FiBuKonto_desc": artikelList = artikelList.OrderByDescending(x => x.Kategorie.FiBuKonto.Nummer); break; case "Beschaffungsdatum": artikelList = artikelList.OrderBy(x => x.Beschaffungsdatum); break; case "Beschaffungsdatum_desc": artikelList = artikelList.OrderByDescending(x => x.Beschaffungsdatum); break; case "Beschaffungswert": artikelList = artikelList.OrderBy(x => x.Beschaffungswert); break; case "Beschaffungswert_desc": artikelList = artikelList.OrderByDescending(x => x.Beschaffungswert); break; default: break; } ViewBag.ExportButtons = artikelList.Count() == 0 ? "disabled" : ""; // Wenn es keine Einträge in der artikelList hat, sind die Buttons deaktiviert return(View(new PagedList <Artikel>(artikelList.ToList(), page, pagesize))); }