Beispiel #1
0
        public async Task <IActionResult> Post([FromBody] NewMessageViewModel message)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            // Get the current user
            // var user = await GetCurrentUserAsync();

            // Create a new message to save to the database
            var newMessage = new Message()
            {
                Content = message.Content,
                //UserId = user.Id,
                //User = user
                UserName = message.UserName
            };

            var record = await _chatService.SaveMessage(newMessage);

            // Call the client method 'addChatMessage' on all clients in the "MainChatroom" group.
            this.Clients.Group(message.Group).AddChatMessage(new MessageViewModel(record));

            return(new NoContentResult());
        }
        public ActionResult SendMessage(NewMessageViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var newMessage = new Message {
                Content  = model.Content,
                DateSent = DateTime.Now,
                SenderId = User.Identity.GetUserId()
            };

            if (model.ReplyId != Guid.Empty)
            {
                var parentMessage = db.Messages.Find(model.ReplyId);
                parentMessage?.Replies.Add(newMessage);

                db.Entry(parentMessage).State = EntityState.Modified;
            }
            else
            {
                db.Messages.Add(newMessage);

                var discussion = db.Discussions.Find(model.DiscussionId);
                discussion?.Messages.Add(newMessage);

                db.Entry(discussion).State = EntityState.Modified;
            }

            db.SaveChanges();

            TempData["Active"] = model.DiscussionId;
            return(RedirectToAction("Discussion", new { id = model.CId }));
        }
Beispiel #3
0
        public ActionResult MessageNew(int?id)
        {
            if (id == null)
            {
                return(RedirectToAction("LoginIndex"));
            }
            if (Session["UserModel"] == null && !Request.IsAuthenticated)
            {
                return(RedirectToAction("LoginIndex"));
            }

            NewMessageViewModel messageVM   = new NewMessageViewModel();
            UserModel           currentUser = (UserModel)Session["UserModel"];
            var updateMessagesUnread        = db.UserMessages.Where(e => e.IsUnread == true && e.UserId == currentUser.Id && e.Message.ToUserID == currentUser.Id).ToList();

            updateMessagesUnread.ForEach(a => a.IsUnread = false);
            db.SaveChanges();

            messageVM.FromUserModel = currentUser;
            messageVM.ToUserModel   = db.UserModels.Find(id);
            var msg = db.MessageModels.Where(mm => (mm.FromUserId == currentUser.Id && mm.ToUserID == id) || (mm.FromUserId == id && mm.ToUserID == currentUser.Id)).Take(40);

            messageVM.Messages = msg.OrderBy(d => d.Created).ToList();
            return(View(messageVM));
        }
Beispiel #4
0
        public ActionResult NewMessage()
        {
            var model = new NewMessageViewModel();

            model.SessionId = Session.SessionID;
            return(View("NewMessage", model));
        }
Beispiel #5
0
        public async Task <IActionResult> Post([FromBody] NewMessageViewModel message)
        {
            if (ModelState.IsValid)
            {
                // Get the current user
                var user = await GetCurrentUserAsync();

                if (user == null)
                {
                    return(Forbid());
                }

                // Create a new message to save to the database
                Message newMessage = new Message()
                {
                    Content = message.Content,
                    UserId  = user.Id,
                    User    = user
                };

                // Save the new message
                await _context.AddAsync(newMessage);

                await _context.SaveChangesAsync();

                MessageViewModel model = new MessageViewModel(newMessage);

                // Call the client method 'addChatMessage' on all clients in the
                // "MainChatroom" group.
                this.Clients.Group("MainChatroom").AddChatMessage(model);
                return(new NoContentResult());
            }
            return(BadRequest(ModelState));
        }
        public async Task <ActionResult> Compose(NewMessageViewModel message)
        {
            //ViewBag.PmView = "compose";
            //ViewBag.Title = "Compose";

            //set this incase invalid submittal
            var userData = UserData;

            message.RequireCaptcha = userData.Information.CommentPoints.Sum < VoatSettings.Instance.MinimumCommentPointsForCaptchaMessaging && VoatSettings.Instance.CaptchaEnabled;

            if (!ModelState.IsValid)
            {
                return(View(message));
            }

            if (message.Recipient == null || message.Subject == null || message.Body == null)
            {
                return(RedirectToAction("Sent", "Messages"));
            }

            if (message.RequireCaptcha)
            {
                bool isCaptchaValid = await ReCaptchaUtility.Validate(Request);

                if (!isCaptchaValid)
                {
                    ModelState.AddModelError(string.Empty, "Incorrect recaptcha answer.");
                    return(View(message));
                }
            }
            var sendMessage = new SendMessage()
            {
                Recipient = message.Recipient,
                Message   = message.Body,
                Subject   = message.Subject,
                Sender    = message.Sender
            };
            var cmd      = new SendMessageCommand(sendMessage, false, true).SetUserContext(User);
            var response = await cmd.Execute();



            if (response.Success)
            {
                var m = response.Response;
                if (m.SenderType == IdentityType.Subverse)
                {
                    return(RedirectToAction("SubverseIndex", "Messages", new { subverse = m.Sender, type = MessageTypeFlag.Sent, state = MessageState.All }));
                }
                else
                {
                    return(RedirectToAction("Sent", "Messages"));
                }
            }
            else
            {
                ModelState.AddModelError(string.Empty, response.Message);
                return(View(message));
            }
        }
Beispiel #7
0
        public ActionResult Compose()
        {
            ViewBag.PmView = "compose";
            ViewBag.Title  = "Compose";

            var recipient = Request.Params["recipient"];
            var subject   = Request.Params["subject"];
            var subverse  = (string)RouteData.Values["subverse"];
            var model     = new NewMessageViewModel()
            {
                Recipient = recipient, Subject = subject
            };

            var userData = UserData;

            model.RequireCaptcha = userData.Information.CommentPoints.Sum < Settings.MinimumCommentPointsForCaptchaMessaging && !Settings.CaptchaDisabled;

            if (!string.IsNullOrEmpty(subverse))
            {
                if (!ModeratorPermission.HasPermission(User.Identity.Name, subverse, ModeratorAction.SendMail))
                {
                    return(RedirectToAction("Home", "Index"));
                }
                ViewBag.PmView = "mod";
                model.Sender   = UserDefinition.Format(subverse, IdentityType.Subverse);
            }

            // return compose view
            return(View(model));
        }
 public ActionResult Create(NewMessageViewModel m)
 {
     if (ModelState.IsValid)
     {
         var conversation = convoSvc.SendMessage(m.ForID, m.Content);
     }
     return(RedirectToAction("Index"));
 }
        public async Task New(int dialogId, NewMessageViewModel newMessageModel)
        {
            var newMessageData = new NewMessageDTO {
                UserId   = User.Identity.GetUserId(),
                DialogId = dialogId,
                Body     = newMessageModel.Body
            };

            await messageService.Create(newMessageData);
        }
        public async Task Send(NewMessageViewModel message)
        {
            var sender = _chatUsersRepository.FindByPrincipal(User);

            await _sendMessage.Run(new ChatMessage
            {
                Contents    = message.Contents,
                DateCreated = DateTime.Now,
                Destination = message.Destination,
                Sender      = sender
            });
        }
        public MainWindow(IWebCommunicatorAsync <Message> communicator, IMessageDataRepository dataRepository)
        {
            InitializeComponent();

            _MessagesVM   = new MessagesViewModel(communicator, dataRepository);
            _NewMessageVM = new NewMessageViewModel(communicator, dataRepository);

            _MessagesVM.Notification   += ShowPopup;
            _NewMessageVM.Notification += ShowPopup;

            this.MessagesControl.DataContext   = _MessagesVM;
            this.NewMessageControl.DataContext = _NewMessageVM;
        }
        public ActionResult ReplySend(NewMessageViewModel m)
        {
            var pc = pcSvc.GetPartnerCallById(m.ForID);

            if (ModelState.IsValid && pc != null)
            {
                new ConversationService().PrivatePartnerCallReply(pc, m.Content);
                return(Json(new { Success = true }));
            }
            else
            {
                return(Json(new { Success = false }));
            }
        }
 public ActionResult Append(NewMessageViewModel m)
 {
     if (ModelState.IsValid)
     {
         var conversation = convoSvc.GetConversationById(m.ForID);
         var otherPartyID = conversation.PartyAID;
         if (CfIdentity.UserID == otherPartyID)
         {
             otherPartyID = conversation.PartyBID;
         }
         convoSvc.SendMessage(otherPartyID, m.Content);
     }
     return(RedirectToAction("Index"));
 }
Beispiel #14
0
        public void SendMessage(NewMessageViewModel message)
        {
            var messageToDb = new Message()
            {
                Topic          = message.Topic,
                Content        = message.Content,
                SenderUserId   = message.SenderId,
                ReceiverUserId = message.ReceiverId,
                SendingDate    = DateTime.Now
            };

            _db.Messages.Add(messageToDb);

            _db.SaveChanges();
        }
Beispiel #15
0
        public void SendNewMessage(string username, NewMessageViewModel message)
        {
            var fromUser = this.dbContext.Users.First(u => u.UserName == username);
            var toUser   = this.dbContext.Users.First(u => u.UserName == message.ToUser);

            var newMessage = new Message()
            {
                Id       = Guid.NewGuid(),
                FromUser = fromUser,
                ToUser   = toUser,
                Content  = message.Content,
                SendOn   = DateTime.Now
            };

            this.dbContext.Messages.Add(newMessage);
            this.dbContext.SaveChanges();
        }
Beispiel #16
0
        public async Task <ActionResult> SendMessage(NewMessageViewModel newMessage)
        {
            if (ModelState.IsValid)
            {
                var patient = await _db.Patients.FindAsync(newMessage.PatientId);

                if (patient != null)
                {
                    var messageNotification = new MessageNotification()
                    {
                        SendDateTime = DateTime.Now,
                        MessageBody  = newMessage.MessageBody,
                        PatientId    = newMessage.PatientId,
                        LiaisonId    = patient.LiaisonId
                    };

                    _db.MessageNotifications.Add(messageNotification);
                    await _db.SaveChangesAsync();


                    var body = "Hello " + patient.Liaison.FirstName + ",<br /><br />" +

                               "Following is a new message from your CCM Patient:<br /> " +
                               "Name: " + patient.FirstName + " " + patient.LastName + "<br />" +
                               "Cell Phone Number: " + patient.MobilePhoneNumber + "<br />" +
                               "Home Phone Number: " + patient.HomePhoneNumber + "<br />" +
                               "CCM Enrollment Status: " + patient.EnrollmentStatus + "<br />" +
                               "CCM Status: " + patient.CcmStatus + "<br /><br>" +

                               newMessage.MessageBody + "<br /><br />" +

                               "<small>This email is system generated and is not monitored. Please, do not reply to this email.</small>";

                    var ems = new EmailService();
                    await ems.SendAsync(new IdentityMessage
                    {
                        Destination = patient.Liaison.Email,
                        Subject     = "New message from CCM patient " + patient.FirstName + " " + patient.LastName,
                        Body        = body
                    });
                }
            }

            return(RedirectToAction("Details", "PatientPortal", new { patientId = newMessage.PatientId }));
        }
        public async Task Send(int dialogId, NewMessageViewModel message)
        {
            var newMessageData = new NewMessageDTO {
                UserId   = Context.User.Identity.GetUserId(),
                DialogId = dialogId,
                Body     = message.Body
            };

            var createdMessageData = await messageService.Create(newMessageData);

            Mapper.Initialize(cfg => cfg.CreateMap <MessageDTO, MessageViewModel>()
                              .ForMember("AuthorAvatarUrl", opt => opt.MapFrom(m => $"/avatars/{m.AuthorId}"))
                              );

            var createdMessage = Mapper.Map <MessageViewModel>(createdMessageData);

            Clients.Group(dialogId.ToString()).addMessage(createdMessage);
        }
        public ActionResult NewMessage(string username, NewMessageViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("NewMessage", model));
            }

            var message = new Message
            {
                IsPrivate   = model.IsPrivate,
                MessageText = model.MessageText,
                Sender      = base.CurrentUser,
                Recipient   = model.Recipient,
            };

            messageDal.CreateMessage(message);

            return(RedirectToAction("Dashboard", "Messages", new { username = base.CurrentUser }));
        }
Beispiel #19
0
        public ActionResult NewMessagePartial(NewMessageViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var toUser = UserRepository.Get(model.Email);

                    var messageRepository = DependencyResolver.Current.GetService <IMessageRepository>();
                    messageRepository.SentMessage(CurrentUser, toUser, model.MsgText, model.Title);

                    return(RedirectToAction("Messages", "User", new { @act = "outbox", @success = 1 }));
                }
                catch (Exception)
                {
                    ModelState.AddModelError("", Resources.SomethingWrong);
                }
            }
            return(View(model));
        }
Beispiel #20
0
        private async Task ReadLatestReceivers(NewMessageViewModel viewModel, CancellationToken cancellationToken)
        {
            var sender = await AccountProvider.GetAccountForCurrentUser(cancellationToken);

            var lastReceivers = await MailAppDbContext.Messages
                                .Include(x => x.MessagePersons)
                                .ThenInclude(x => x.Account)
                                .Include(x => x.MessagePersons)
                                .ThenInclude(x => x.Type)
                                .Where(x => x.MessagePersons.Any(y => y.Type != MessagePersonType.Sender && y.Account == sender))
                                .OrderByDescending(x => x.SentDate)
                                .Distinct()
                                .Take(5)
                                .ToArrayAsync(cancellationToken);

            viewModel.LastReceivers = lastReceivers
                                      .SelectMany(x => x.Receivers)
                                      .Distinct()
                                      .Select(x => new AccountViewModel(x))
                                      .ToArray();
        }
        public ActionResult Compose()
        {
            //CORE_PORT: Ported correctly?
            //var recipient = Request.Params["recipient"];
            //var subject = Request.Params["subject"];
            var recipient = Request.Query["recipient"].FirstOrDefault();
            var subject   = Request.Query["subject"].FirstOrDefault();
            var subverse  = (string)RouteData.Values["subverse"];
            var model     = new NewMessageViewModel()
            {
                Recipient = recipient, Subject = subject
            };

            var userData = UserData;

            model.RequireCaptcha = userData.Information.CommentPoints.Sum < VoatSettings.Instance.MinimumCommentPointsForCaptchaMessaging && VoatSettings.Instance.CaptchaEnabled;

            if (!string.IsNullOrEmpty(subverse))
            {
                if (!ModeratorPermission.HasPermission(User, subverse, ModeratorAction.SendMail))
                {
                    return(RedirectToAction("Home", "Index"));
                }
                ViewBag.PmView = "mod";
                model.Sender   = UserDefinition.Format(subverse, IdentityType.Subverse);
                SetMenuNavigationModel("Compose", MenuType.Smail, subverse);
            }
            else
            {
                SetMenuNavigationModel("Compose", MenuType.UserMessages);
            }


            // return compose view
            return(View(model));
        }
        public async Task <MessageViewModel> Create([FromBody] NewMessageViewModel newMessage)
        {
            MessageViewModel result = null;

            try
            {
                if (ModelState.IsValid)
                {
                    var message = _mapper.Map <Message>(newMessage);
                    message.UserId = _userManager.GetUserId(User);
                    message.Date   = DateTime.Now;

                    message = await _unitOfWork.Messages.AddAsync(message);

                    result = _mapper.Map <MessageViewModel>(message);
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error when adding message");
            }

            return(result);
        }
        public ActionResult ReplySend(NewMessageViewModel m)
        {
            var pc = pcSvc.GetPartnerCallById(m.ForID);

            if (ModelState.IsValid && pc != null)
            {
                new ConversationService().PrivatePartnerCallReply(pc, m.Content);
                return Json(new { Success = true });
            }
            else
            {
                return Json(new { Success = false });
            }
        }
        public ActionResult NewMessage()
        {
            var model = new NewMessageViewModel();

            return(View("NewMessage", model));
        }
Beispiel #25
0
        public async Task <IActionResult> GetNewMessage(NewMessageViewModel viewModel, CancellationToken cancellationToken)
        {
            await ReadLatestReceivers(viewModel, cancellationToken);

            return(View("NewMessage", viewModel));
        }
Beispiel #26
0
        public async Task <IActionResult> NewMessage(NewMessageViewModel request, CancellationToken cancellationToken)
        {
            await ReadLatestReceivers(request, cancellationToken);

            if (!ModelState.IsValid)
            {
                return(View(request));
            }

            if (string.IsNullOrEmpty(request.Receiver) && string.IsNullOrEmpty(request.Cc) && string.IsNullOrEmpty(request.Bcc))
            {
                ModelState.AddModelError(nameof(request.Receiver), "There is no receiver.");
                return(View(request));
            }

            if (string.IsNullOrEmpty(request.Subject) && string.IsNullOrEmpty(request.Text))
            {
                ModelState.AddModelError(nameof(request.Subject), "Message should have subject or text");
                return(View(request));
            }

            var message = new Message
            {
                Subject      = request.Subject,
                Text         = request.Text,
                SentDate     = DateTime.Now,
                Notification = request.Notification,
            };

            var sender = await AccountProvider.GetAccountForCurrentUser(cancellationToken);

            foreach (var i in request.FileForm ?? new IFormFile[0])
            {
                var fileName    = i.FileName;
                var contentType = i.ContentType;
                var blobId      = Guid.NewGuid().ToString();
                message.AddAttachments(new MessageAttachment(blobId, fileName, contentType));

                var blobClient = ContainerClient.GetBlobClient(blobId);
                await blobClient.UploadAsync(i.OpenReadStream(), true, cancellationToken);
            }

            if (sender == null)
            {
                return(BadRequest());
            }

            message.SetSender(sender);

            var flag = true;

            async Task SetPersons(String addresses, Action <Account> f1, Action <Group> f2)
            {
                foreach (var address in (addresses ?? String.Empty).Split(";", StringSplitOptions.RemoveEmptyEntries).Select(x => x.Trim()).ToArray())
                {
                    var group = await MailAppDbContext.Groups.Include(x => x.GroupAccounts).ThenInclude(x => x.Account).SingleOrDefaultAsync(x => x.Name == address, cancellationToken);

                    if (group != null)
                    {
                        f2(group);
                    }
                    else
                    {
                        var account = await MailAppDbContext.Accounts.SingleOrDefaultAsync(x => x.Email == address, cancellationToken);

                        if (account != null)
                        {
                            f1(account);
                        }
                        else
                        {
                            flag = false;
                        }
                    }
                }
            }

            await SetPersons(request.Receiver, account => message.AddReceiver(account), group => message.AddReceiver(group));

            if (flag == false)
            {
                ModelState.AddModelError(nameof(request.Receiver), "Invadlid mail or group name");
                return(View(request));
            }

            await SetPersons(request.Cc, account => message.AddCc(account), group => message.AddCc(group));

            if (flag == false)
            {
                ModelState.AddModelError(nameof(request.Cc), "Invadlid mail or group name");
                return(View(request));
            }

            await SetPersons(request.Bcc, account => message.AddReceiver(account), group => message.AddBcc(group));

            if (flag == false)
            {
                ModelState.AddModelError(nameof(request.Bcc), "Invadlid mail or group name");
                return(View(request));
            }

            MailAppDbContext.Messages.Add(message);
            await MailAppDbContext.SaveChangesAsync(cancellationToken);

            TelemetryClient.TrackEvent("Message sent");
            return(RedirectToAction(nameof(Index)));
        }
Beispiel #27
0
        public IHttpActionResult SendMessage(NewMessageViewModel message)
        {
            _service.SendMessage(message);

            return(Ok());
        }
        public ActionResult NewMessage(NewMessageViewModel message)
        {
            this.messageService.SendNewMessage(this.User.Identity.Name, message);

            return(this.RedirectToAction("Inbox"));
        }
        public ActionResult NewMessage()
        {
            var messageVm = new NewMessageViewModel();

            return(this.View(messageVm));
        }
Beispiel #30
0
 public NewMessageView()
 {
     InitializeComponent();
     _viewModel  = new NewMessageViewModel();
     DataContext = _viewModel;
 }
        public NewMessage()
        {
            InitializeComponent();

            BindingContext = viewModel = new NewMessageViewModel();
        }