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)))); }
/// <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); }
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"); } }