public void BroadCast(Mensagem m)
 {
     foreach (var item in Participantes)
     {
         item.Mensagens.Add(m);
     }
 }
示例#2
0
        public ActionResult Send(string conv, string mensagem)
        {
            if (conv == null || mensagem == null)
            {
                return HttpNotFound();
            }

            //Proíbe usuário de enviar mensagem para ele mesmo
            if (conv == User.Identity.Name)
            {
                return HttpNotFound();
            }

            Usuario usuario = db.Usuarios.FirstOrDefault(x => x.UsuarioNome == conv);

            //Nome da conversa não é um usuário
            //Implementar lógica de grupos
            if (usuario == null)
            {
                return HttpNotFound();
            }

            Conversa conversa = db.Conversas.FirstOrDefault(x => x.Participantes.FirstOrDefault(y => y.UsuarioNome == User.Identity.Name) != null && x.Participantes.FirstOrDefault(z => z.UsuarioNome == conv) != null);

            if (conversa == null)
            {
                conversa = new Conversa();
                db.Conversas.Add(conversa);

                Usuario eu = db.Usuarios.FirstOrDefault(x => x.UsuarioNome == User.Identity.Name);
                conversa.Participantes.Add(eu);
                conversa.Participantes.Add(usuario);
            }

            Mensagem m = new Mensagem(User.Identity.Name, mensagem, DateTime.Now.Ticks);
            conversa.Mensagens.Add(m);
            conversa.BroadCast(m);
            db.SaveChanges();

            return new HttpStatusCodeResult(200);
        }