예제 #1
0
        /// <summary>
        /// Retrieves messages from a candidate's CMO mailbox.
        /// </summary>
        /// <param name="candidateID">The CFIS ID of the desired candidate.</param>
        /// <param name="view">The mailbox view type.</param>
        /// <param name="elections">A collection of election cycles to filter against.</param>
        /// <returns>A collection of <see cref="CmoMessage"/> objects for the specified mailbox sorted according to the properties of the mailbox.</returns>
        public List <CmoMessage> GetMailboxMessages(string candidateID, CmoMailboxView view, HashSet <string> elections)
        {
            using (Data.CmoEntities context = new Data.CmoEntities())
            {
                IQueryable <Data.CmoMessage> matches = context.CmoMessages.Where(m => m.PostDate.HasValue && m.CandidateId == candidateID);
                switch (view)
                {
                case CmoMailboxView.All:
                    break;

                case CmoMailboxView.Archived:
                    matches = matches.Where(m => m.ArchiveDate.HasValue);
                    break;

                case CmoMailboxView.FollowUp:
                    matches = matches.Where(m => m.FollowUp);
                    break;

                case CmoMailboxView.Unopened:
                    matches = matches.Where(m => !m.OpenDate.HasValue);
                    break;

                case CmoMailboxView.Current:
                default:
                    matches = matches.Where(m => !m.ArchiveDate.HasValue);
                    break;
                }
                if (elections != null && elections.Count > 0)
                {
                    matches = matches.Where(m => elections.Contains(m.ElectionCycle));
                }
                return(matches.AsEnumerable().Select(m => CreateCmoMessage(m)).ToList());
            }
        }
예제 #2
0
        public ActionResult Index(CmoMailboxView view, string id = null)
        {
            var mailbox = GetMailbox(view);
            MessageViewModel message = null;

            if (id != null)
            {
                message = MessagesViewModelsFactory.MessageFrom(id, mailbox);;
                if (message == null)
                {
                    return(HttpNotFound());
                }
                if (Request.IsAjaxRequest())
                {
                    return(PartialView("Details", message));
                }
            }
            var model = MessagesViewModelsFactory.MessageCenterFrom(mailbox, message);

            if (Request.IsAjaxRequest())
            {
                return(PartialView("_MailboxViewPanel", model));
            }
            return(View(model));
        }
예제 #3
0
        /// <summary>
        /// Raises the <see cref="Control.Init"/> event.
        /// </summary>
        /// <param name="e">An <see cref="EventArgs"/> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            // check if a view is defined
            string viewName = Page.Request.QueryString[CmoMailbox.ViewParameter];

            _view = !string.IsNullOrEmpty(viewName) && Enum.IsDefined(typeof(CmoMailboxView), viewName) ? CPConvert.ParseEnum <CmoMailboxView>(viewName) : CmoMailbox.DefaultView;
        }
예제 #4
0
        public ActionResult Update(CmoMailboxView view, string updateAction, string[] message_ids)
        {
            int  count = 0;
            bool error = false;

            foreach (var id in message_ids)
            {
                if (UpdateMessage(id, updateAction))
                {
                    count++;
                }
                else
                {
                    error = true;
                }
            }
            SetUpdateResultMessage(updateAction, count, error);

            if (Request.IsAjaxRequest())
            {
                return(PartialView(ViewName_MessagesList, MessagesViewModelsFactory.MessageCenterFrom(GetMailbox(view)).Messages));
            }
            return(Index(view, null));
        }
예제 #5
0
 /// <summary>
 /// Gets the URL that loads a specific view.
 /// </summary>
 /// <param name="view">The target view.</param>
 /// <returns>A root-relative URL for loading the view indicated by <paramref name="view"/>.</returns>
 private string GetViewUrl(CmoMailboxView view)
 {
     return(string.Format("{0}?{1}={2}", PageUrlManager.CmoMailboxUrl, CmoMailbox.ViewParameter, view));
 }
예제 #6
0
 /// <summary>
 /// Retrieves messages from the mailbox.
 /// </summary>
 /// <param name="view">The desired mailbox view.</param>
 /// <returns>A collection of <see cref="CmoMessage"/> objects matching the specified view.</returns>
 public List <CmoMessage> GetMessages(CmoMailboxView view)
 {
     this.View = view;
     this.GetMessages();
     return(this.Messages);
 }
예제 #7
0
 /// <summary>
 /// Retrieves messages from a candidate's CMO mailbox.
 /// </summary>
 /// <param name="candidateID">The CFIS ID of the desired candidate.</param>
 /// <param name="view">The mailbox view type.</param>
 /// <param name="elections">A collection of election cycles to filter against.</param>
 /// <returns>A collection of <see cref="CmoMessage"/> objects for the specified mailbox sorted according to the properties of the mailbox.</returns>
 public List <CmoMessage> GetMailboxMessages(string candidateID, CmoMailboxView view, HashSet <string> elections)
 {
     using (DataClient client = new DataClient()) { return(client.GetMailboxMessages(candidateID, view, elections == null ? null : elections.ToList())); }
 }