예제 #1
0
        public async Task Quem(string status)
        {
            try
            {
                var _quem            = RetornaUsuLogado();
                var _contextoConexao = Context;
                ////----------------------
                //// LOG
                ////----------------------
                //var _novocliente = new tblHubCliente()
                //{
                //    CnxId = _contextoConexao.ConnectionId,
                //    Email = _quem.Email,
                //    Status = status,
                //    UsuarioAppId = _quem.Id
                //};
                //_context.tblHubClientes.Add(_novocliente);
                //await _context.SaveChangesAsync();

                //-------------------------
                // AQUI VISITANTE NÃO ENTRA
                //-------------------------
                if (!string.IsNullOrEmpty(_quem.UserName))
                {
                    // EXISTE?
                    var _existesalaVIP = await _context.tblUsuSalaVIPs
                                         .FirstOrDefaultAsync(x => x.UsuarioAppId == _quem.Id);

                    // NÃO!!!!
                    if (_existesalaVIP == null)
                    {
                        // CRIA REGISTRO
                        var _novoususalavip = new tblUsuSalaVIP()
                        {
                            CnxId        = _contextoConexao.ConnectionId,
                            UsuarioAppId = _quem.Id,
                            Status       = status
                        };
                        _context.tblUsuSalaVIPs.Add(_novoususalavip);
                        await _context.SaveChangesAsync();
                    }
                    // SIM
                    else
                    {
                        _existesalaVIP.DTHR   = DateTime.Now;
                        _existesalaVIP.CnxId  = _contextoConexao.ConnectionId;
                        _existesalaVIP.Status = status;
                        _context.Attach(_existesalaVIP).State = EntityState.Modified;
                        await _context.SaveChangesAsync();
                    }
                }
                else
                {
                    //---------------------------
                    // VISITANTE!! TRATO OS NULLS
                    //---------------------------
                    _quem.Id        = "offline";
                    _quem.Nome      = "visitante";
                    _quem.Sobrenome = "n: " + ManipuladorDeConexoes.Conectados.Count.ToString();
                }

                // AVISA À TODOS
                await Clients
                .All
                // AVISA À TODOS, EXCETO VOCÊ
                //.AllExcept(_contextoConexao.ConnectionId)
                .SendAsync
                (
                    "quem",
                    _contextoConexao.ConnectionId,
                    _quem.Id,
                    _quem.Nome + " " + _quem.Sobrenome,
                    status,
                    ManipuladorDeConexoes.Conectados.Count
                );
            }
            catch (Exception erro) { string _erro = erro.Message; }
        }
예제 #2
0
        public async Task Quem(string status, string idusu)
        {
            try
            {
                var _usu =
                    _context.Users
                    .Where(x => x.Id == idusu)
                    .FirstOrDefault();

                if (_usu.Sistema_FuncaoUsuario != "BOT")
                {
                    //----------------------
                    // LOG
                    //----------------------
                    var _novocliente = new tblHubCliente()
                    {
                        CnxId        = Context.ConnectionId,
                        Email        = _usu.Email,
                        Status       = status,
                        UsuarioAppId = _usu.Id
                    };
                    _context.tblHubClientes.Add(_novocliente);
                    await _context.SaveChangesAsync();

                    //-----------------------------------------------
                    // **** ESSA TASK SERVE PARA "ENTROU/SAIU"
                    // LIMPA ANTES DE CRIAR / LIMPA A SALA AO SAIR!!!
                    //-----------------------------------------------
                    var _limpa =
                        _context.tblUsuSalaVIPs
                        .Where(x => x.UsuarioAppId == _usu.Id);

                    _context.tblUsuSalaVIPs.RemoveRange(_limpa);
                    await _context.SaveChangesAsync();

                    //------------------------
                    // ALTERA FLAG: TÁ ONLINE?
                    //------------------------
                    if (status.ToLower().Trim() == "entrou")
                    {
                        //----------------------
                        // TÁ ONLINE?
                        //----------------------
                        var _novoususalavip = new tblUsuSalaVIP()
                        {
                            CnxId        = Context.ConnectionId,
                            UsuarioAppId = _usu.Id
                        };
                        _context.tblUsuSalaVIPs.Add(_novoususalavip);
                        await _context.SaveChangesAsync();
                    }

                    // cnxid, de, para, mens, status
                    //await Clients
                    //    .AllExcept(Context.ConnectionId)
                    //    .SendAsync
                    //    (
                    //        "quemsoueu",
                    //        Context.ConnectionId,
                    //        idusu,
                    //        "",
                    //        _usu.Nome + " " + _usu.Sobrenome,
                    //        status
                    //    );

                    await Clients.All.SendAsync("quemsoueu", Context.ConnectionId, idusu, _usu.Id, _usu.Nome + " " + _usu.Sobrenome, status);

                    //await Clients.All.SendAsync("listaclienteschat", _usu.Id);
                }
            }
            catch (Exception erro)
            {
                string _erro = erro.Message;
            }
        }