public void SendPrivateMessage(string userId, string message) { using (UWCContext db = new UWCContext()) { User senderUser = db .Users .Where(u => u.Name == HttpContext.Current.User.Identity.Name) .FirstOrDefault(); User recieverUser = db .Users .Where(u => u.Id.ToString() == userId) .FirstOrDefault(); PrivateRoom privateRoom = db .PrivateRooms .Where(pr => pr.UserIds.Contains(senderUser.Id) && pr.UserIds.Contains(Guid.Parse(userId))) .FirstOrDefault(); if (privateRoom == null) { privateRoom = ChatHub.CreatePrivateRoom(senderUser.Id, recieverUser.Id); db.PrivateRooms.Add(privateRoom); } string encodedMessage = AesEncoder.EncryptToBytes(message, Encoding.Default.GetBytes(privateRoom.Key), Encoding.Default.GetBytes(privateRoom.IV)).ToString(); privateRoom.MessagesListing.Add(new MessageInfo() { Id = Guid.NewGuid(), FromUserId = senderUser.Id, FromUserName = senderUser.Name, ToUserId = recieverUser.Id, ToUserName = recieverUser.Name, Message = encodedMessage, Time = DateTime.UtcNow }); db.Entry(privateRoom).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); Groups.Add(senderUser.Id.ToString(), privateRoom.Id.ToString()); Groups.Add(recieverUser.Id.ToString(), privateRoom.Id.ToString()); Clients.Group(privateRoom.Id.ToString(), senderUser.Id.ToString()).send(message); } }
public ActionResult SetAdminRecord(SetAdminRecordModel model) { if (ModelState.IsValid) { using (UWCContext db = new UWCContext()) { string roleName = model.RoleName == "Преподаватель" ? UserRoles.TEACHER_ROLE_NAME : UserRoles.STUDENT_ROLE_NAME; AdminRecord record = db.AdminRecords.FirstOrDefault(r => r.RoleName == roleName); Guid salt = Guid.NewGuid(); if (record != null) { record.Salt = salt; record.Password = Rfc2898Encoder.Encode(model.AccessPassword, salt.ToString()); db.Entry(record).State = EntityState.Modified; db.SaveChanges(); } else { AdminRecord newRecord = new AdminRecord() { Salt = salt, RoleName = roleName, Password = Rfc2898Encoder.Encode(model.AccessPassword, salt.ToString()) }; db.AdminRecords.Add(newRecord); db.SaveChanges(); } return(RedirectToAction("AdminRecordAddedMessage", "Administration")); } } ViewBag.AllowedRoles = new SelectList(new string[] { "Преподаватель", "Студент" }); return(View(model)); }