Example #1
0
        public ChatViewModel GetChatList(string userids, int productid = 0)
        {
            var arrayuserids = userids.Split(',');
            var chatroom     = _ChatRoomRepository.GetAll().Where(x => x.UserIDs == userids).FirstOrDefault();

            //var messages = _ChatRoomRepository.GetAll().Where(x => x.SenderID == id || x.ReceiverID == id).ToList();
            //ViewBag.receive = messages;

            var  currentUserID = _usermanager.GetUserId(User);
            Guid id            = new Guid(currentUserID);

            //ViewBag.chat = userIds;
            if (chatroom == null && productid != 0)
            {
                var product     = _productRepository.GetByID(productid);
                var newchatroom = new ChatRoom
                {
                    UserIDs        = userids,
                    SenderID       = id,
                    SenderStatus   = 1,
                    ProductID      = productid,
                    ReceiverStatus = 1,
                    ReceiverID     = product.UserID,
                };
                _ChatRoomRepository.Add(newchatroom);
            }

            var messread = chatroom != null?_MessageRepository.GetAll().Where(x => x.ChatRoomID == chatroom.ID).ToList() : new List <Message>();

            if (messread.Count > 0)
            {
                var mestemp = new List <Message>();
                foreach (var item in messread)
                {
                    if (item.Status)
                    {
                        item.Status = false;
                        mestemp.Add(item);
                    }
                }
                _MessageRepository.Update(mestemp);
            }
            UOW.SaveChanges();
            //var currentUser = _usermanager.FindByIdAsync(id).Result;
            var chatlist = ChatViewModel.Get(_ChatRoomRepository, _MessageRepository, id, userids, _usermanager);

            return(chatlist);
        }