Esempio n. 1
0
        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 }));
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        public GroupMessage()
        {
            InitializeComponent();

            BindingContext = new GroupMessageViewModel();
        }