Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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();
        }