Esempio n. 1
0
        public int Login(string userName, string fullName, int id)
        {
            if (_connectedClients.ContainsKey(id))
            {
                return(1);
            }

            var             establishedUserConnection = OperationContext.Current.GetCallbackChannel <IClient>();
            ConnectedClient newClient = new ConnectedClient();

            newClient.connection = establishedUserConnection;
            newClient.UserName   = userName;
            newClient.FullName   = fullName;
            newClient.Id         = id;

            _connectedClients.TryAdd(id, newClient);
            Console.BackgroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("Client login: {0} at {1}", newClient.UserName, System.DateTime.Now);
            Console.ResetColor();

            OpMessageSelect oms = new OpMessageSelect();
            OperationResult obj = OperationManager.Singleton.executeOperation(oms);
            OpResCollection orc = obj as OpResCollection;

            if ((orc == null) || (!orc.Status))
            {
                Console.WriteLine("No new messages.{0}", newClient.UserName);
            }
            else
            {
                BMessageInfo[] messages  = orc.BaseObjectArray.Cast <BMessageInfo>().ToArray();
                BMessageInfo[] connected = messages.Where(w => w.ToId == id).ToArray();
                foreach (var message in connected)
                {
                    messagesToSent.TryAdd(message.IdMessage, message);
                }
            }
            return(0);
        }
        public int Login(string userName, string fullName, int id)
        {
            //Checking if someone is already loged in
            //foreach(var client in _connectedClients)
            //{
            //    if (client.Key == id)
            //        return 1;
            //}
            if (_connectedClients.ContainsKey(id))
            {
                return(1);
            }

            var             establishedUserConnection = OperationContext.Current.GetCallbackChannel <IClient>();
            ConnectedClient newClient = new ConnectedClient();

            newClient.connection = establishedUserConnection;
            newClient.UserName   = userName;
            newClient.FullName   = fullName;
            newClient.Id         = id;

            //_connectedClients.TryAdd(userName, newClient);
            //_connectedClients.TryAdd(fullName, newClient);
            //_connectedClients.TryAdd(id.ToString(), newClient);
            _connectedClients.TryAdd(id, newClient);
            Console.BackgroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine("Client login: {0} at {1}", newClient.UserName, System.DateTime.Now);
            Console.ResetColor();

            OpMessageSelect oms = new OpMessageSelect();
            OperationResult obj = OperationManager.Singleton.executeOperation(oms);
            OpResCollection orc = obj as OpResCollection;

            if ((orc == null) || (!orc.Status))
            {
                Console.WriteLine("No new messages.{0}", newClient.UserName);
            }
            else
            {
                BMessageInfo[] messages  = orc.BaseObjectArray.Cast <BMessageInfo>().ToArray();
                BMessageInfo[] connected = messages.Where(w => w.ToId == id).ToArray();
                foreach (var message in connected)
                {
                    //foreach (var client in _connectedClients)
                    //{
                    //    //if ((client.Key.ToLower() != newClient.FullName.ToLower()) && (client.Key.ToLower() == message.To.ToLower()))
                    //    if ((client.Key != newClient.Id) && (client.Key == message.ToId))
                    //    {
                    //        client.Value.connection.GetMessage(message.Message, message.From, message.FromId, message.FromImage, message.To, message.ToId);
                    //    }
                    //}
                    //bool postoji = _connectedClients.ContainsKey(message.ToId);
                    //if (postoji)
                    //{
                    //ConnectedClient conClient;
                    //bool dohvacen = _connectedClients.TryGetValue(message.ToId, out conClient);
                    //if (dohvacen)
                    //    conClient.connection.GetMessage(message.Message, message.From, message.FromId, message.FromImage, message.To, message.ToId);
                    //}

                    //newClient.connection.GetMessage(message.Message, message.From, message.FromId, message.FromImage, message.To, message.ToId);
                    //OpMessageDelete omd = new OpMessageDelete();
                    //omd.IdMessage = message.IdMessage;
                    //OperationResult result = OperationManager.Singleton.executeOperation(omd);
                    messagesToSent.TryAdd(message.IdMessage, message);
                }
            }


            return(0);
        }