Example #1
0
        public bool MessageSeen(string userId, int[] messagesIDs)
        {
            using (DataContext db = new DataContext())
            {
                try
                {
                    // performances check - try to fetch user group first
                    foreach (var message in db.ChatMessages.Where(cm => messagesIDs.Contains(cm.Id)))
                    {
                        message.SeenBy += (!String.IsNullOrEmpty(message.SeenBy) ? "," : String.Empty) + userId;
                    }

                    //db.SaveChanges();
                    return(true);
                }
                catch (DbEntityValidationException ex)
                {
                    ExceptionLogingHelper.LogException(ex);
                }
                catch (Exception ex)
                {
                    ExceptionLogingHelper.LogException(ex);
                }

                return(false);
            }
        }
Example #2
0
        public int StoreChatMessage(string senderId, int userGroupId, string message)
        {
            try
            {
                using (DataContext db = new DataContext())
                {
                    var newMessage = new ChatMessage()
                    {
                        SenderId     = senderId,
                        UsersGroupId = userGroupId,
                        Message      = message,
                        SeenBy       = String.Empty,
                        DateCreated  = DateTime.Now
                    };
                    db.ChatMessages.Add(newMessage);
                    db.SaveChanges();
                    return(newMessage.Id);
                }
            }
            catch (DbEntityValidationException ex)
            {
                ExceptionLogingHelper.LogException(ex);

                return(0);
            }
        }
Example #3
0
        protected void Application_Error()
        {
            var ex = Server.GetLastError();

            //log the error!
            ExceptionLogingHelper.LogException(ex);
        }
Example #4
0
        public int CreateGroup(string senderId, string receiverUserName)
        {
            try
            {
                using (DataContext db = new DataContext())
                {
                    var receiver = db.AspNetUsers.FirstOrDefault(u => u.UserName == receiverUserName);
                    if (receiver != null)
                    {
                        string receiverId = receiver.Id;

                        UsersGroup userGroup = new UsersGroup()
                        {
                            UserCreatorId = senderId,
                            DateCreated   = DateTime.Now
                        };

                        db.UsersGroups.Add(userGroup);
                        db.SaveChanges();

                        db.GroupMembers.Add(new GroupMember()
                        {
                            MemberId = senderId, UsersGroupId = userGroup.Id
                        });
                        db.GroupMembers.Add(new GroupMember()
                        {
                            MemberId = receiverId, UsersGroupId = userGroup.Id
                        });
                        db.SaveChanges();

                        return(userGroup.Id);
                    }
                    else
                    {
                        return(0);
                    }
                }
            }
            catch (DbEntityValidationException ex)
            {
                ExceptionLogingHelper.LogException(ex);

                return(0);
            }
        }
Example #5
0
        public UserGroupWithMessagesViewModel GetUserGroupWithMessages(int userGroupId, int userGroupLatMessageId)
        {
            using (DataContext db = new DataContext())
            {
                var currentUserGroupViewModel = new UserGroupWithMessagesViewModel();
                try
                {
                    var usersGroup = db.UsersGroups.FirstOrDefault(ug => ug.Id == userGroupId);
                    if (usersGroup != null)
                    {
                        currentUserGroupViewModel.Id = userGroupId;

                        if (userGroupLatMessageId == 0)
                        {
                            currentUserGroupViewModel.ChatMessagesByDay = _mapper.Map <List <ChatMessageViewModel> >(usersGroup.ChatMessages
                                                                                                                     .OrderByDescending(cm => cm.DateCreated)
                                                                                                                     .Take(MaxMessageCountPerPage))
                                                                          .GroupBy(cm => cm.DateCreated.Date)
                                                                          .OrderBy(g => g.Key);
                        }
                        else
                        {
                            currentUserGroupViewModel.ChatMessagesByDay = _mapper.Map <List <ChatMessageViewModel> >(usersGroup.ChatMessages
                                                                                                                     .OrderBy(cm => cm.DateCreated)
                                                                                                                     .SkipWhile(cm => userGroupLatMessageId == 0 ? true : cm.Id == userGroupLatMessageId)
                                                                                                                     .Take(MaxMessageCountPerPage))
                                                                          .GroupBy(cm => cm.DateCreated.Date)
                                                                          .OrderBy(g => g.Key);
                        }
                        currentUserGroupViewModel.UserGroupMembers = usersGroup.GroupMembers.Select(gm => new UserGroupMemberViewModel()
                        {
                            Id       = gm.Id,
                            UserName = gm.AspNetUser.UserName
                        }).ToList();
                    }
                }
                catch (Exception ex)
                {
                    ExceptionLogingHelper.LogException(ex);
                }

                return(currentUserGroupViewModel);
            }
        }