public ActionResult Consultations(string sortOrder, string selectionFilter) { /* * * NOTE: There is a bug in that when repeatedly clicking on the filter buttons * the sort order will be toggled between ascending and descending. I'm * not going to worry about it until I get finished. * */ // convnention for making it easier to pass messages between controllers if (TempData["Message"] != null) { ViewBag.Message += (" " + TempData["Message"].ToString()); } string rcvSortOrder, rcvOldSortOrder, sndSortOrder, sndOldSortOrder; // catch selectionFilter to pass between View and Controller if (TempData["SelectionFilter"] != null) { selectionFilter = TempData["SelectionFilter"].ToString(); } selectionFilter = String.IsNullOrEmpty(selectionFilter) ? ConsultationTicketSelection.All.ToString() : selectionFilter;// check for first time and set selectionFilter // catch sortOrder, get it through method arguments, if not get it through TempData, if stil not then set default rcvSortOrder = String.IsNullOrEmpty(sortOrder) ? "" : sortOrder; if (String.IsNullOrEmpty(rcvSortOrder) && TempData["SortOrder"] != null) { rcvSortOrder = TempData["SortOrder"].ToString(); } rcvSortOrder = String.IsNullOrEmpty(rcvSortOrder) ? SortBy.TicketID.ToString() : rcvSortOrder; if (TempData["OldSortOrder"] != null) { rcvOldSortOrder = TempData["OldSortOrder"].ToString(); } else { rcvOldSortOrder = SortBy.IsTicketOpen.ToString(); } // check for first time and set oldSortOrder // convert the string representations back to the enum representation ConsultationTicketSelection selectFilt = (ConsultationTicketSelection)Enum.Parse(typeof(ConsultationTicketSelection), selectionFilter, true); UserConsultations userConsultations; int userId = Convert.ToInt32(Session["OrcaUserID"].ToString()); sndSortOrder = rcvSortOrder; switch (rcvSortOrder) { case "TicketID": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "TicketID_desc"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.TicketID, SortMethod.Ascending); break; case "TicketID_desc": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "TicketID"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.TicketID, SortMethod.Descending); break; case "DescriptionName": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "DescriptionName_desc"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.DescriptionName, SortMethod.Ascending); break; case "DescriptionName_desc": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "DescriptionName"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.DescriptionName, SortMethod.Descending); break; case "DTStamp": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "DTStamp_desc"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.DTStamp, SortMethod.Ascending); break; case "DTStamp_desc": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "DTStamp"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.DTStamp, SortMethod.Descending); break; case "OrcaUserIDLastReplied": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "OrcaUserIDLastReplied_desc"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.OrcaUserIDLastReplied, SortMethod.Ascending); break; case "OrcaUserIDLastReplied_desc": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "OrcaUserIDLastReplied"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.OrcaUserIDLastReplied, SortMethod.Descending); break; case "IsTicketOpen": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "IsTicketOpen_desc"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.IsTicketOpen, SortMethod.Ascending); break; case "IsTicketOpen_desc": if (rcvSortOrder == rcvOldSortOrder) { sndSortOrder = "IsTicketOpen"; } userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.IsTicketOpen, SortMethod.Descending); break; default: sndSortOrder = "DTStamp_desc"; userConsultations = new UserConsultations(userId, selectFilt).SortListBy(SortBy.TicketID, SortMethod.Ascending); break; } sndOldSortOrder = rcvSortOrder; ViewBag.SortOrder = sndSortOrder; ViewBag.OldSortOrder = sndOldSortOrder; ViewBag.SelectionFilter = selectionFilter; return(View(userConsultations)); }
public UserConsultations(int ticketCreatorOrcaUserID, ConsultationTicketSelection selection) { OrcaContext db = new OrcaContext(); OrcaUserID = ticketCreatorOrcaUserID; // NOTE: I need to figure out how to do the following section properly. I believe it has to do with using join, but I don't know enough about it so this will suffice for now. List <Ticket> tickets = (from tic in db.Tickets where tic.OrcaUserID == OrcaUserID select tic).ToList(); ////System.Diagnostics.Debug.WriteLine( // " tickets.Count = " + tickets.Count + // " ticketCreatorOrcaUserID = " + ticketCreatorOrcaUserID + // " selection = " + selection // ); ConsultationTickets = new List <UserConsultation>(); foreach (var tic in tickets) { UserConsultation consultation = new UserConsultation(); consultation.TicketID = tic.TicketID; consultation.OrcaUserIDLastReplied = tic.OrcaUserIDLastReplied; consultation.DTStamp = tic.DTStamp; consultation.DescriptionName = tic.DescriptionName; if (tic.IsTicketOpen) { consultation.Status = TicketStatus.Open; } else { consultation.Status = TicketStatus.Closed; } //OrcaUser lastRepliedUser = db.OrcaUsers.Find(tic.OrcaUserIDLastReplied); //consultation.OrcaUserNameLastReplied = lastRepliedUser.OrcaUserName; consultation.OrcaUserNameLastReplied = db.OrcaUsers.Find(tic.OrcaUserIDLastReplied).OrcaUserName; switch (selection) { case ConsultationTicketSelection.Open: if (tic.IsTicketOpen) { ConsultationTickets.Add(consultation); } break; case ConsultationTicketSelection.Closed: if (!tic.IsTicketOpen) { ConsultationTickets.Add(consultation); } break; case ConsultationTicketSelection.NewReply: if (tic.OrcaUserIDLastReplied != OrcaUserID) { ConsultationTickets.Add(consultation); } break; default: // case ConsultationTicketSelection.All: ConsultationTickets.Add(consultation); break; } } // NOTE: Need to figure out how to do the above section properly. I believe it can and should be done with a join but I don't know enough about it and this will suffice for now. ConsultationTickets = ConsultationTickets.OrderBy(x => x.TicketID).ToList(); }