예제 #1
0
        public ActionResult CreateChat(CreateChatRoomViewModel model)
        {
            if (ModelState.IsValid)
            {
                var mapping = config.CreateMapper();
                var hub = GlobalHost.ConnectionManager.GetHubContext<ChatsHub>();
                User user = UserService.GetByName(User.Identity.Name);

                if (ChatService.Find(u => u.NameRoom == model.NameRoom && u.UserId == user.Id).FirstOrDefault() != null)
                {
                    ModelState.AddModelError("", "Вы уже создали чат с таким именем.");
                    if (Request.IsAjaxRequest()){return PartialView("PartialCreateChat", model);}
                    else { return View(model); }
                }
                else if (user != null)
                {
                    ChatRoom chat = new ChatRoom() {
                        UserId = user.Id,
                        NameRoom = model.NameRoom,
                        DateCreate = DateTime.Now,
                        TypeRoom = (CourseProject.DAL.Entities.TypeRoom)model.TypeRoom};                    
                    chat.Users.Add(user);
                    ChatService.Create(chat);

                    ChatRoom newchat = ChatService.Find(x => x.NameRoom == model.NameRoom && x.UserId == user.Id).First();
                    var hubModel = mapping.Map<ChatRoomPartialViewModel>(newchat);

                    hub.Groups.Add(model.connectionId, "chat_" + newchat.Id.ToString());

                    hub.Clients.AllExcept(model.connectionId).addChat(hubModel);
                    hub.Clients.Group("user_" + user.Id.ToString()).addMyChat(hubModel);

                    ChatRoomViewModels result_model = mapping.Map<ChatRoomViewModels>(chat);
                    ViewBag.Message = JsonConvert.SerializeObject(result_model.Messages, Formatting.None);
                    if (Request.IsAjaxRequest())
                    { return PartialView("PartialChatRoom", result_model); }
                    else { return View("ChatRoom", result_model); }

                    // return RedirectToAction("ChatRoom", "Chat", new { chatId = newchat.Id });
                }
                else
                {return RedirectToAction("LogOff", "Account");}
            }
            else
            {
                if (Request.IsAjaxRequest()){ return PartialView("PartialCreateChat", model); }
                else { return View(model); }
            }
        }
예제 #2
0
 public void Update(ChatRoom chatRoom)
 {
     Database.UnitOfWork.ChatRooms.Update(chatRoom);
     Database.UnitOfWork.Save();
 }