// List Hospital Campuses for Adding a new PatientEcard: public ActionResult Add() { ListPatientEcards viewmodel = new ListPatientEcards(); viewmodel.HospitalCampuses = db.HospitalCampuses.ToList(); return(View(viewmodel)); }
// List Patient Ecards: public ActionResult List(string searchkey = "", string delivered = "", string campus = "", int pagenum = 0) { ListPatientEcards viewmodel = new ListPatientEcards(); viewmodel.HospitalCampuses = db.HospitalCampuses.ToList(); Debug.WriteLine("The searchkey is " + searchkey); if (searchkey != "") { List <PatientEcard> PatientEcards = db.PatientEcards .Where(patientecard => patientecard.SenderFirstname.Contains(searchkey) || patientecard.SenderLastname.Contains(searchkey) || patientecard.PatientFirstname.Contains(searchkey) || patientecard.PatientLastname.Contains(searchkey) || patientecard.CardMessage.Contains(searchkey) || patientecard.PatientRoom.Contains(searchkey) ).OrderByDescending(p => p.DateSubmitted).ThenBy(d => d.CardDelivered).ToList(); viewmodel.PatientEcards = PatientEcards; } else if (delivered != "") { bool deliveredbool = bool.Parse(delivered); List <PatientEcard> PatientEcards = db.PatientEcards.Where(patientcard => patientcard.CardDelivered == deliveredbool).OrderByDescending(p => p.DateSubmitted).ThenBy(d => d.CardDelivered).ToList(); viewmodel.PatientEcards = PatientEcards; } else if (campus != "") { int campusid = int.Parse(campus); List <PatientEcard> PatientEcards = db.PatientEcards.Where(patientcard => patientcard.CampusID == campusid).OrderByDescending(p => p.DateSubmitted).ThenBy(d => d.CardDelivered).ToList(); viewmodel.PatientEcards = PatientEcards; } else { List <PatientEcard> PatientEcards = db.PatientEcards.OrderByDescending(p => p.DateSubmitted).ThenBy(d => d.CardDelivered).ToList(); viewmodel.PatientEcards = PatientEcards; } // Pagination for List of Patient eCards: // "perpage": number of records per page int perpage = 3; int eventcount = viewmodel.PatientEcards.Count(); // "maxpage": -1 to offset index starting at 0 int maxpage = (int)Math.Ceiling((decimal)eventcount / perpage) - 1; // "maxpage": max number of pages. Obtained by taking total number of records divided by the number of records perpage (round up) if (maxpage < 0) { maxpage = 0; } // "pagenum": current page if (pagenum < 0) { pagenum = 0; } if (pagenum > maxpage) { pagenum = maxpage; } // "start": describes which record we start on. Obtained by multiplying the number of records per page by the total number of pages: int start = (int)(perpage * pagenum); // Get maxpage value so to only display pagination if there are more than 3 records in the PatientEcards table: ViewData["maxpage"] = maxpage; ViewData["pagenum"] = pagenum; ViewData["pagesummary"] = ""; if (maxpage > 1) { ViewData["pagesummary"] = (pagenum + 1) + " of " + (maxpage + 1); if (searchkey != "") { List <PatientEcard> PatientEcards = db.PatientEcards .Where(patientecard => patientecard.SenderFirstname.Contains(searchkey) || patientecard.SenderLastname.Contains(searchkey) || patientecard.PatientFirstname.Contains(searchkey) || patientecard.PatientLastname.Contains(searchkey) || patientecard.CardMessage.Contains(searchkey) || patientecard.PatientRoom.Contains(searchkey) ).OrderBy(p => p.DateSubmitted).ThenBy(d => d.CardDelivered) .Skip(start) .Take(perpage) .ToList(); viewmodel.PatientEcards = PatientEcards; } else if (delivered != "") { bool deliveredbool = bool.Parse(delivered); List <PatientEcard> PatientEcards = db.PatientEcards.Where(patientcard => patientcard.CardDelivered == deliveredbool).OrderBy(d => d.CardDelivered).ThenByDescending(p => p.DateSubmitted) .Skip(start) .Take(perpage) .ToList(); viewmodel.PatientEcards = PatientEcards; } else if (campus != "") { int campusid = int.Parse(campus); List <PatientEcard> PatientEcards = db.PatientEcards.Where(patientcard => patientcard.CampusID == campusid).OrderBy(d => d.CardDelivered).ThenByDescending(p => p.DateSubmitted) .Skip(start) .Take(perpage) .ToList(); viewmodel.PatientEcards = PatientEcards; } else { List <PatientEcard> PatientEcards = db.PatientEcards.OrderBy(d => d.CardDelivered).ThenByDescending(p => p.DateSubmitted) .Skip(start) .Take(perpage) .ToList(); viewmodel.PatientEcards = PatientEcards; } // End of LINQ pagination algorithm } return(View(viewmodel)); }