public JsonResult AddMessage(int groupId, GroupMessageViewModel model) { ViewBag.groupId = model.GroupId; var groupMessage = _groupMessageFactory.PrepareGroupMessage(model, false, User.Identity.Name); if (groupMessage == null) { return(Json(new { message = "bad request" })); } _groupMessageService.AddGroupMessage(groupMessage); return(Json(new { groupId = model.GroupId })); }
public GroupMessage PrepareGroupMessage(GroupMessageViewModel model, bool isUpdate, string userName) { var groupMessage = new GroupMessage { IsDeleted = false, IsUpdated = isUpdate, Message = model.Message, CreateDate = DateTime.Now, GroupId = model.GroupId, Groups = _manageGroupRepository.GetGroupById(model.GroupId), User = _userInformationService.GetIdentityByUserName(userName), UserId = _userInformationService.GetIdentityByUserName(userName).Id }; return(groupMessage); }
private List <GroupMessageViewModel> PrepareGroupMessageViewModel(List <GroupMessage> groupMessage) { var groupMessages = new List <GroupMessageViewModel>(); foreach (var message in groupMessage) { var msg = new GroupMessageViewModel { Id = message.Id, Message = message.Message, CreateDate = message.CreateDate, IsDeleted = message.IsDeleted, IsUpdated = message.IsUpdated, GroupId = message.GroupId, Groups = message.Groups, User = message.User, UserId = message.UserId }; groupMessages.Add(msg); } return(groupMessages); }
public IHttpActionResult AddMessage(AddGroupMessageBindingModel groupMessage) { if (groupMessage == null) { return(this.BadRequest("no data provided")); } var group = this.CurrentUser.GroupChats.FirstOrDefault(g => g.Id == groupMessage.GroupId); if (group == null) { return(this.BadRequest("Group was not found.")); } var onlineUsers = ConnectionManager.Users.Keys; var groupOnlineUsers = group.Users.Where(g => onlineUsers.Contains(g.UserName) && g.UserName != this.CurrentUserUserName) .ToList(); var groupReceivers = this.Data.GroupChats.Find(groupMessage.GroupId).Users .Where(u => u.Id != this.CurrentUserId) .Select(u => new GroupMessageReceiver() { Receiver = u, Status = MessageStatus.NotDelivered }) .ToList(); foreach (var receiver in groupReceivers) { if (groupOnlineUsers.Contains(receiver.Receiver) && receiver.Receiver.CurrentChatId == groupMessage.GroupId.ToString()) { receiver.Status = MessageStatus.Seen; } else if (groupOnlineUsers.Contains(receiver.Receiver)) { receiver.Status = MessageStatus.Sent; } } var groupMessageForAdd = new GroupMessage { GroupChatId = groupMessage.GroupId, Text = groupMessage.Text, SenderId = this.CurrentUserId, Date = DateTime.Now, GroupMessageReceivers = groupReceivers }; group.GroupMessages.Add(groupMessageForAdd); this.Data.SaveChanges(); var messageViewModel = GroupMessageViewModel.CreateOne(groupMessageForAdd, this.CurrentUserId); var onlineUserNamesList = groupOnlineUsers.Select(u => u.UserName).ToList(); this.HubContex.Clients.Users(onlineUserNamesList).pushGroupMessage(messageViewModel); return(this.Ok(messageViewModel)); }
public GroupMessage() { InitializeComponent(); BindingContext = new GroupMessageViewModel(); }