Exemple #1
0
        public ActionResult CreateMessage(CreateMessageModel model)
        {
            model.Date         = DateTime.Now;
            model.SrcUserLogin = User.Identity.Name;

            var userlist = new SelectList(_db.Users, "Login", "Login");

            ViewBag.List = userlist;

            int userIdSrc, userIdDst;

            if (ModelState.IsValid)
            {
                // определение id пользователя отправителя сообщения
                var user = _db.Users
                           .FirstOrDefault(u => u.Login == model.SrcUserLogin);

                if (user == null)
                {
                    return(HttpNotFound());
                }
                userIdSrc = user.Id;

                // определение id пользователя получателя сообщения
                user = _db.Users
                       .FirstOrDefault(u => u.Login == model.DstUserLogin);
                if (user == null)
                {
                    return(HttpNotFound());
                }
                userIdDst = user.Id;

                // поиск чата с заданным отправителем и получателем
                var c = _db.Chats
                        .FirstOrDefault(u => u.UserIdSrc == userIdSrc && u.UserIdDst == userIdDst);

                // если такого чата нет - создаем его
                if (c == null)
                {
                    c = new Chat {
                        UserIdSrc = userIdSrc, UserIdDst = userIdDst
                    };
                    _db.Chats.Add(c);
                    _db.SaveChanges();
                }

                // создаем сообщение в своем чате
                var m = new Message {
                    Content = model.Content, Date = model.Date, Chat = c
                };
                _db.Messages.Add(m);
                _db.SaveChanges();

                string message = Resources.Resource.MessageSent;
                ModelState.AddModelError("", message);
            }
            return(View(model));
        }
        public ActionResult Register(RegisterModel model)
        {
            // устанавливаем для нового пользователя роль user вручную
            model.Role = "user";

            if (ModelState.IsValid)
            {
                // ищем пользователя с заданным логином
                var user = _db.Users
                           .FirstOrDefault(u => u.Login == model.Login);

                // если логин свободен - создаем пользователя
                if (user == null)
                {
                    // сохраняем пользователя в базе данных
                    _db.Users.Add(new User {
                        Name = model.Name, Surname = model.Surname, Login = model.Login, Password = model.Password, Email = model.Email, Role = model.Role
                    });
                    _db.SaveChanges();

                    // проверяем, что пользователь создан
                    user = _db.Users
                           .FirstOrDefault(u => u.Login == model.Login && u.Password == model.Password);

                    // если пользователь создан - перенаправляем его на ListChats
                    if (user != null)
                    {
                        FormsAuthentication.SetAuthCookie(model.Login, true);
                        return(RedirectToAction("ListChats", "Home"));
                    }
                }

                string message = Resources.Resource.LoginIsUsed;
                ModelState.AddModelError("", message);
            }
            return(View(model));
        }