/// <summary> /// Gets all scores for each users which has played in given parameter as GroupName /// </summary> /// <param name="GroupName">Name of group which want to get user scores from</param> /// <returns>Scores containing information about user scores.</returns> public Scores GetAllScores(string GroupName) { Scores scores = new Scores(); DataTable dt = TableMethods.GetTable(BaseMethod.DbPath, "UserValues", "GroupName", "=", new object[] { GroupName }); if (dt != null && dt.Rows.Count > 0) { Dictionary<int, string> AllFields = new Dictionary<int, string>(); FieldsManager fm = new FieldsManager(); UserValuesManager userFieldsManager = new UserValuesManager(); ValidItems validItems = new ValidItems(); var allFields = fm.GetAllFields(); foreach (var field in allFields) AllFields.Add(field.ID, field.Title); for (int i = 0; i < dt.Rows.Count; i++) { int FieldID = (int)dt.Rows[i]["FieldID"]; string UserNick = (string)dt.Rows[i]["UserNick"]; string FieldValue = (string)dt.Rows[i]["FieldValue"]; if (!AllFields.ContainsKey(FieldID)) continue; string FieldTitle = AllFields[FieldID]; int score = 0; bool isValidValue = validItems.IsValidValue(FieldID, FieldValue); if (isValidValue) { if (userFieldsManager.IsValueDuplicate(FieldID, GroupName, FieldValue)) score = 5; else score = 10; } UserScores us = scores.GetUserScores(UserNick); ScoreItem si = new ScoreItem() { ID = FieldID, Value = FieldValue, Title = FieldTitle, Score = score }; us.AddNewScoreItem(si); } } return scores; }
/// <summary> /// Read all items in for given items in file per each line and sync with /// database. /// </summary> /// <param name="field">field to sync it's valid items with database</param> void _SyncItems(Field field) { using (StreamReader sr = new StreamReader(field.ValidItemsFilePath)) { long n = 0; DbMan.ValidItems vi = new DbMan.ValidItems(); if (field.ID < 1) field.ID = new FieldsManager().GetFieldID(field); List<string> words = null; try { words = new Crawler.Crawler().GetAllWords(field.URL); } catch { } if (words != null) { foreach (var word in words) { vi.AddNewValidItem(field.ID, word); if (OnProgress != null) OnProgress(field.Title, ++n); } } vi.DeleteValidItems(field.ID); while (!sr.EndOfStream) { string line = sr.ReadLine(); vi.AddNewValidItem(field.ID, line); // notify to UI if (OnProgress != null) OnProgress(field.Title, ++n); } } if (OnFinish != null) OnFinish(this); }