Example #1
0
        public void IndexTest()
        {
            MessageController target = CreateMessageControllerAs("hpotter", TestModel);
            ViewResult        result = target.Index(1) as ViewResult;
            MessageListView   actual = result.ViewData.Model as MessageListView;

            Assert.AreEqual(actual.ActualPage, 1);
            Assert.AreEqual(actual.LastPage, 1);

            MessageModelView message = actual.MessageList.ToArray()[0];

            Assert.AreEqual(message.Indent, 0);
            Assert.IsFalse(message.Recieved);
            Assert.AreEqual(message.TextPreview, "Text");

            MessageModelView message2 = actual.MessageList.ToArray()[1];

            Assert.AreEqual(message2.Indent, 20);
            Assert.IsTrue(message2.Recieved);
            Assert.AreEqual(message2.TextPreview, "Another Text");


            result = target.Index(2) as ViewResult;
            Assert.AreEqual(result.ViewName, "NotExist");

            result = target.Index(0) as ViewResult;
            Assert.AreEqual(result.ViewName, "NotExist");

            result = target.Index(-1) as ViewResult;
            Assert.AreEqual(result.ViewName, "NotExist");
        }
Example #2
0
        /// <summary>
        /// Pomocná metoda pro zobrazení seznamu zpráv
        /// </summary>
        /// <param name="inputList">Seznam zpráv, u kterých se budou připravovat pro zobrazení</param>
        /// <param name="outputList">Výstupní seznam s již zpracovanými zprávami</param>
        /// <param name="indent">Aktuální odszení zprávy</param>
        private void CreateListForView(List <Message> inputList, List <MessageModelView> outputList, int indent)
        {
            foreach (var message in inputList)
            {
                MessageModelView messageView = new MessageModelView();
                messageView.ID   = message.Id;
                messageView.Sent = message.Created;

                if (message.Sender.Username == CurrentUser.Username)
                {
                    messageView.Recieved = false;
                    IEnumerator <User> iterator = message.Recievers.GetEnumerator();

                    if (!iterator.MoveNext())
                    {
                        continue;  // žadný příjemce -> chybná zpráva
                    }

                    messageView.SenderOrRecivers = iterator.Current.Username;

                    while (iterator.MoveNext())
                    {
                        messageView.SenderOrRecivers += ", ";
                        messageView.SenderOrRecivers += iterator.Current.Username;
                    }
                }
                else
                {
                    if (!message.Recievers.Contains(CurrentUser))
                    {
                        continue; // pokud mi zpráva nepatří, tak ji zahodím
                    }

                    messageView.Recieved         = true;
                    messageView.SenderOrRecivers = message.Sender.Username;
                }

                messageView.Read = message.Readers.Contains(CurrentUser);

                if (message.Text.Length <= 50)
                {
                    messageView.TextPreview = message.Text;
                }
                else
                {
                    messageView.TextPreview  = message.Text.Substring(0, 50);
                    messageView.TextPreview += "...";
                }

                messageView.Indent = indent;

                outputList.Add(messageView);

                if (message.Replies.Count != 0)
                {
                    CreateListForView(message.Replies.ToList(), outputList, indent + 20);
                }
            }
        }
Example #3
0
        public PartialViewResult GetMessageView(Message message)
        {
            var currentUser = _accountProvider.GetUser(_chatRepository);

            MessageModelView MMV = new MessageModelView(message, currentUser);

            return(PartialView("_Message", MMV));
        }
Example #4
0
        // GET: Messages/Create
        public ActionResult Create(string userId)
        {
            MessageModelView msg = new MessageModelView();

            if (userId != null)
            {
                msg.RecipientEmail = _repo.GetRecipientIdByEmailOrEmailById(userId);
            }

            return(View(msg));
        }
Example #5
0
        public ActionResult Create([Bind(Include = "Title,Content,SenderId,RecipientEmail")] MessageModelView message)
        {
            if (ModelState.IsValid)
            {
                if (_repo.IfExist(message.RecipientEmail))
                {
                    Message msg = new Message()
                    {
                        Content     = message.Content,
                        SendTime    = DateTime.Now,
                        RecipientId = _repo.GetRecipientIdByEmailOrEmailById(message.RecipientEmail),
                        Title       = message.Title,
                        OpenTime    = null,
                        SenderId    = User.Identity.GetUserId()
                    };
                    _repo.SendMessage(msg);
                    _repo.SaveChanges();
                    return(RedirectToAction("Index"));
                }
            }

            return(View(message));
        }
Example #6
0
        public async Task <ActionResult> CreateMessage([ModelBinder(BinderType = typeof(JsonModelBinder))] MessageModelView message, IFormFile attachedFile = null)
        {
            if (message.SenderLogin != HttpContext.User.Identity.Name)
            {
                return(BadRequest());
            }

            var builder = new MessageBuilder();

            message = await _messageService.Create(message, builder);

            if (message != null)
            {
                if (attachedFile != null)
                {
                    await((IEntityFilesHandler)_messageService).SaveFile(attachedFile, message.Id.ToString());
                }

                return(Ok(message));
            }

            return(BadRequest());
        }
Example #7
0
        /// <summary>
        /// Pomocná metoda pro zobrazení seznamu zpráv
        /// </summary>
        /// <param name="inputList">Seznam zpráv, u kterých se budou připravovat pro zobrazení</param>
        /// <param name="outputList">Výstupní seznam s již zpracovanými zprávami</param>
        /// <param name="indent">Aktuální odszení zprávy</param>
        private void CreateListForView(List<Message> inputList, List<MessageModelView> outputList, int indent)
        {
            foreach (var message in inputList)
            {
                MessageModelView messageView = new MessageModelView();
                messageView.ID = message.Id;
                messageView.Sent = message.Created;

                if (message.Sender.Username == CurrentUser.Username)
                {
                    messageView.Recieved = false;
                    IEnumerator<User> iterator = message.Recievers.GetEnumerator();

                    if (!iterator.MoveNext())
                    {
                        continue;  // žadný příjemce -> chybná zpráva
                    }

                    messageView.SenderOrRecivers = iterator.Current.Username;

                    while (iterator.MoveNext())
                    {
                        messageView.SenderOrRecivers += ", ";
                        messageView.SenderOrRecivers += iterator.Current.Username;
                    }
                }
                else
                {

                    if (!message.Recievers.Contains(CurrentUser))
                    {
                        continue; // pokud mi zpráva nepatří, tak ji zahodím
                    }

                    messageView.Recieved = true;
                    messageView.SenderOrRecivers = message.Sender.Username;
                }

                messageView.Read = message.Readers.Contains(CurrentUser);

                if (message.Text.Length <= 50)
                {
                    messageView.TextPreview = message.Text;
                }
                else
                {
                    messageView.TextPreview = message.Text.Substring(0, 50);
                    messageView.TextPreview += "...";
                }

                messageView.Indent = indent;

                outputList.Add(messageView);

                if (message.Replies.Count != 0)
                {
                    CreateListForView(message.Replies.ToList(), outputList, indent + 20);
                }
            }
        }