Пример #1
0
        protected override IEnumerable <Component> SearchCore(IEnumerable <Tag> allTags, IEnumerable <Component> allComponents)
        {
            if (ComponentType == null && Name == null && NameList == null && ParentNameList == null && !_fieldFilters.Any())
            {
                return(new List <Component>());
            }

            var allComponentsList = allComponents.ToList();

            var filteredForType = ComponentType == null
                ? allComponentsList
                : allComponentsList.Where(c => c.Type == ComponentType).ToList();

            var filteredForName = string.IsNullOrWhiteSpace(Name)
                ? filteredForType
                : filteredForType.Where(c => c.Name == Name).ToList();

            var filteredForNameList = NameList == null
                ? filteredForName
                : filteredForName.Where(c => NameList.Contains(c.Name)).ToList();

            var filteredForParentName = ParentNameList == null
                ? filteredForNameList
                : filteredForNameList.Where(c => FilterForParentNames(allComponentsList, c)).ToList();

            if (!_fieldFilters.Any())
            {
                return(filteredForParentName);
            }

            return(filteredForParentName.Where(comp => _fieldFilters.All(pair => comp.Fields.ContainsKey(pair.Key) && AreEqual(comp.Fields[pair.Key], pair.Value))));
        }
Пример #2
0
        /// <summary>
        /// Generates a list of distinct names based on the available <see cref="MarkovData"/>. Does not use names that
        /// have already been generated during the lifetime of the current Name Source. Call <see cref="ClearNameList"/>
        /// to clear the list of previously used names.
        /// </summary>
        /// <returns>A list of names no longer than the set <see cref="ListSize"/></returns>
        public List <string> GenerateWordList()
        {
            List <string> names = new List <string>();

            int i = 0;

            while (i < ListSize)
            {
                var nextName = GenerateWord();
                if (!NameList.Contains(nextName))
                {
                    NameList.Add(nextName);
                    names.Add(nextName);
                    i++;
                }
            }

            return(names);
        }
Пример #3
0
            private void ReadMessage(string message)
            {
                bool doubleLogin = false;

                BatProtocol deSerializedMessage = JsonConvert.DeserializeObject <BatProtocol>(message);

                //Testar om message är av typen login
                if (deSerializedMessage.Type == "Login")
                {
                    Console.WriteLine("logging in...");

                    //Kolla om redan inloggad
                    if (NameList != null && NameList.Contains(deSerializedMessage.UserName))
                    {
                        Console.WriteLine(deSerializedMessage.UserName + "Redan inloggad");
                        //Skickar felmessage i retur
                        doubleLogin = true;
                        NetworkStream n  = tcpclient.GetStream();
                        BatProtocol   ok = new BatProtocol {
                            Type = "DoubleLogin"
                        };

                        new BinaryWriter(n).Write(JsonConvert.SerializeObject(ok));
                    }

                    //kollar om username finns i databasen
                    else if (Context.BatUsers.ToList()
                             .Exists(u => u.Name == deSerializedMessage.UserName))
                    {
                        if (NameList == null)
                        {
                            NameList = new List <string> {
                                deSerializedMessage.UserName
                            };
                        }
                        else
                        {
                            NameList.Add(deSerializedMessage.UserName);
                        }

                        Console.WriteLine(deSerializedMessage.UserName + " User Exists");
                    }
                    else if (!(Context.BatUsers.ToList().Exists(s => s.Name.Equals(deSerializedMessage.UserName))))
                    {
                        Console.WriteLine(deSerializedMessage.UserName + " does not exists. Creating a new user...");
                        try
                        {
                            BatUsers newUser = new BatUsers {
                                Name = deSerializedMessage.UserName, Password = deSerializedMessage.Password
                            };
                            Context.BatUsers.Add(newUser);
                            Context.SaveChanges();
                            Console.WriteLine("Creation succesful!");

                            if (NameList == null)
                            {
                                NameList = new List <string> {
                                    deSerializedMessage.UserName
                                };
                            }
                            else
                            {
                                NameList.Add(deSerializedMessage.UserName);
                            }
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                    }
                    //Kollar om lösenord matchar med det som är lagt in i databasen under samma login.
                    if (!doubleLogin && Context.BatUsers.ToList()
                        .Find(u => u.Name == deSerializedMessage.UserName)
                        .Password == deSerializedMessage.Password)
                    {
                        Console.WriteLine("Login Successful");
                        //Skickar message i retur
                        NetworkStream n  = tcpclient.GetStream();
                        BatProtocol   ok = new BatProtocol {
                            Type = "Ok"
                        };
                        if (NameList != null)
                        {
                            ok.Userlist = NameList;
                        }



                        new BinaryWriter(n).Write(JsonConvert.SerializeObject(ok));
                    }
                }

                else if (deSerializedMessage.Type == "PM")
                {
                    Console.WriteLine(deSerializedMessage.UserName + " PM: " + deSerializedMessage.Message);

                    NetworkStream n = tcpclient.GetStream();

                    deSerializedMessage.Type = "SM";
                    if (NameList != null)
                    {
                        deSerializedMessage.Userlist = NameList;
                    }


                    //new BinaryWriter(n).Write(JsonConvert.SerializeObject(deSerializedMessage));
                    myServer.Broadcast(this, JsonConvert.SerializeObject(deSerializedMessage));
                }

                else
                {
                    Console.WriteLine("Unhandled message Type");
                }
            }