Beispiel #1
0
      // GET: PostMessages/EditPostMessage/5
      public ActionResult EditPostMessage(int?id)
      {
          if (id == null)
          {
              return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
          }
          PostMessage postMessage = db.PostMessages.Find(id);

          if (postMessage == null)
          {
              return(HttpNotFound());
          }
          PostMessageViewModel postMessageViewModel = new PostMessageViewModel();

          postMessageViewModel.post_message_id = postMessage.Post_Message_Id;
          postMessageViewModel.post_message    = postMessage.Post_Message;
          int  message_id = postMessage.Post_Message_Id;
          int  post_id    = db.PostMessages.Where(p => p.Post_Message_Id == message_id).Select(p => p.Post.Post_Id).FirstOrDefault();
          Post post       = db.Posts.Find(post_id);

          //post.Post_Title = postMessageViewModel.post_title;
          postMessageViewModel.post_title = post.Post_Title;


          return(View(postMessageViewModel));
      }
        public async Task <MessageViewModel> AddNewMessage(string senderId, PostMessageViewModel postMessage, DateTime time)
        {
            try
            {
                User user = await userManager.FindByIdAsync(senderId);

                var dialog = new Dialog();
                if (user.UserDialogs.Any(c => c.ContactId == postMessage.ReceiverId || c.UserId == postMessage.ReceiverId))
                {
                    var usersDialog = user.UserDialogs.Single(c => c.ContactId == postMessage.ReceiverId || c.UserId == postMessage.ReceiverId);
                    dialog = usersDialog;
                }
                if (user.ContactDialogs.Any(c => c.ContactId == postMessage.ReceiverId || c.UserId == postMessage.ReceiverId))
                {
                    var interlocutorsDialog = user.ContactDialogs.Single(c => c.ContactId == postMessage.ReceiverId || c.UserId == postMessage.ReceiverId);
                    dialog = interlocutorsDialog;
                }


                var newMessage = new Message
                {
                    DialogId = dialog.DialogId,
                    UserId   = senderId,
                    Content  = postMessage.Text,
                    Date     = time
                };
                await db.Messages.Create(newMessage);

                await db.Messages.SaveAsync();

                if (postMessage.Attachment != null)
                {
                    var files = await fileManager.UploadMessagesFiles(dialog.DialogId, newMessage.MessageId, postMessage.Attachment);
                }
                var messageVM = new MessageViewModel(newMessage);
                return(messageVM);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Beispiel #3
0
      public ActionResult EditPostMessage([Bind(Include = "post_title,post_message,post_message_id")] PostMessageViewModel postMessageViewModel)
      {
          int message_id = postMessageViewModel.post_message_id;

          PostMessage postMessage = new PostMessage();

          postMessage.Post_Message        = postMessageViewModel.post_message;
          postMessage.Post_Message_Id     = postMessageViewModel.post_message_id;
          postMessage.ApplicationUser     = db.PostMessages.Where(p => p.Post_Message_Id == message_id).Select(p => p.ApplicationUser).FirstOrDefault();
          postMessage.Post                = db.PostMessages.Where(p => p.Post_Message_Id == message_id).Select(p => p.Post).FirstOrDefault();
          postMessageViewModel.post_title = postMessage.Post.Post_Title;
          ModelState.Clear();
          TryValidateModel(postMessageViewModel);
          if (ModelState.IsValid)
          {
              db.Entry(postMessage).State = EntityState.Modified;
              db.SaveChanges();
              return(RedirectToAction("MemberPostDetails", new { id = postMessage.Post.Post_Id }));
          }
          return(View(postMessageViewModel));
      }
        public PostMessageView(TeamRoom room)
        {
            BindingContext = new PostMessageViewModel(room);
            Padding        = new Thickness(20);
            Title          = "Post message";

            Label header = new Label
            {
                Text = room.name,
                Font = Font.SystemFontOfSize(NamedSize.Medium),
                HorizontalOptions = LayoutOptions.Center,
            };


            Entry messageInput = new Entry {
                Placeholder = "Message to the room"
            };

            messageInput.HeightRequest = 80;
            messageInput.SetBinding(Entry.TextProperty, "Message");

            Button postMesageToRoom = new Button
            {
                Text    = "Post Message",
                Font    = Font.SystemFontOfSize(NamedSize.Medium),
                Command = ViewModel.Post
            };


            this.Content = new StackLayout
            {
                Children =
                {
                    header,
                    messageInput,
                    postMesageToRoom
                }
            };
        }
        public async Task <IActionResult> SendMessage([FromForm] PostMessageViewModel postMessage)
        {
            try
            {
                var id = User.Claims.First(c => c.Type == "Id").Value;
                if (blackListService.HasUserInBlock(id, postMessage.ReceiverId))
                {
                    return(BadRequest("Unlock this user to send messages"));
                }
                if (blackListService.HasUserInBlock(postMessage.ReceiverId, id))
                {
                    return(BadRequest("This user reseieved access to sendind messages"));
                }
                if (postMessage.Attachment == null && postMessage.Text == null)
                {
                    return(BadRequest("You cannot send the empty message!"));
                }
                if (postMessage.Attachment != null)
                {
                    foreach (var file in postMessage.Attachment)
                    {
                        if (file.ContentType == "image/jpg" || file.ContentType == "image/jpeg" || file.ContentType == "audio/mp3" || file.ContentType == "video/mp4" || file.ContentType == "audio/mpeg")
                        {
                            if ((file.ContentType == "image/jpg" || file.ContentType == "image/jpeg") && file.Length >= 2097152)
                            {
                                return(BadRequest("Unsupported file length. JPG/JPEG must be before 2MB "));
                            }
                            else if ((file.ContentType == "audio/mp3" || file.ContentType == "audio/mpeg") && file.Length >= 10484760)
                            {
                                return(BadRequest("Unsupported file length. Audio files must be before 10MB "));
                            }
                            else if (file.ContentType == "video/mp4" && file.Length >= 31457280)
                            {
                                return(BadRequest("Unsupported file length. Video files must be before 10MB "));
                            }
                        }
                        else
                        {
                            return(BadRequest("Unsupported file type. Files must be only of 'jpg/jpeg', 'mp3', 'mp4' formats! "));
                        }
                    }
                }

                UserIds receiver, caller;
                chatHub.FindCallerReceiverByIds(postMessage.ReceiverId, id, out caller, out receiver);
                bool dialogExists = await chatService.IsExistDialog(caller.userId, postMessage.ReceiverId);

                if (dialogExists)
                {
                    var message = await chatService.AddNewMessage(caller.userId, postMessage, DateTime.Now);

                    if (chatService.IsOnline(postMessage.ReceiverId))
                    {
                        await hubContext.Clients.Client(receiver.connectionId).SendAsync("Send", message, caller.userId);

                        await hubContext.Clients.Clients(caller.connectionId).SendAsync("SendMyself", message);
                    }
                    else
                    {
                        await hubContext.Clients.Clients(caller.connectionId).SendAsync("SendMyself", message);
                    }
                    return(Ok(message));
                }
                else
                {
                    await chatService.CreateNewDialogAsync(caller.userId, postMessage.ReceiverId);

                    var message = await chatService.AddNewMessage(caller.userId, postMessage, DateTime.Now);

                    if (receiver != null)
                    {
                        if (chatService.IsOnline(postMessage.ReceiverId))
                        {
                            await hubContext.Clients.Client(receiver.connectionId).SendAsync("Send", message, caller.userId);

                            await hubContext.Clients.Clients(caller.connectionId).SendAsync("SendMyself", message);
                        }
                        else
                        {
                            await hubContext.Clients.Clients(caller.connectionId).SendAsync("SendMyself", message);
                        }
                    }
                    return(Ok(message));
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public IActionResult PostMessage(PostMessageViewModel model)
        {
            _msgProvider.AddMessage(model.Message, _httpContextAccessor.HttpContext.Session.GetString("email"));

            return(RedirectToAction("Index", "Home"));
        }