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); } } }
public void Update(ChatRoom chatRoom) { Database.UnitOfWork.ChatRooms.Update(chatRoom); Database.UnitOfWork.Save(); }