public static void Initialize(bool bSettingsOnly) { Console.WriteLine("Axx: Initialize"); if (Validate(Settings)) { Settings.Load(); if (Settings != null) { Console.WriteLine($"Axx: history-count-{Settings.Count()}"); } } if (bSettingsOnly) { return; } if (Validate(Entries)) { Entries.Load(); if (Entries != null) { Console.WriteLine($"Axx: data-count-{Entries.Count()}"); } } if (Validate(History)) { History.Load(); if (History != null) { Console.WriteLine($"Axx: history-count-{History.Count()}"); } } }
private bool Initialize(ApplicationData currentTrade, ApplicationHistory tradeHistory) { _data.Clear(); _computedChain.Clear(); Dictionary <ulong, ulong> prevMonthList = null; if (tradeHistory.Count() > 0) { prevMonthList = FillPreviousTradesPairs(currentTrade, tradeHistory.GetTrade(0)); } Dictionary <ulong, ulong> prevPrevMonthList = null; if (tradeHistory.Count() > 1) { prevPrevMonthList = FillPreviousTradesPairs(currentTrade, tradeHistory.GetTrade(1)); } Dictionary <UserData, List <ulong> > tmpData = new Dictionary <UserData, List <ulong> >(); foreach (UserData user1 in currentTrade.GetStorage()) { List <ulong> candidate = new List <ulong>(); ulong prevPartner = 0; if (prevMonthList != null) { prevMonthList.TryGetValue(user1.UserId, out prevPartner); } ulong prevPrevPartner = 0; if (prevPrevMonthList != null) { prevPrevMonthList.TryGetValue(user1.UserId, out prevPrevPartner); } bool bPushBack = false; foreach (UserData user2 in currentTrade.GetStorage()) { if (user2.UserId == user1.UserId || user2.UserId == prevPartner || user2.UserId == user1.PreferenceId) { continue; } if (user2.UserId == prevPrevPartner) { bPushBack = true; } else { candidate.Add(user2.UserId); } } candidate = candidate.OrderBy(x => Guid.NewGuid()).ToList(); if (bPushBack) { candidate.Add(prevPrevPartner); } if (user1.PreferenceId != 0) { candidate = candidate.Prepend(user1.PreferenceId).ToList(); } if (candidate.Count == 0) { return(false); } tmpData.Add(user1, candidate); } if (tmpData.Count == 0) { return(false); } // order by number of candidates first, if someone had someone else as a partner las trade, it is removed from candidates this trade foreach (var byCount in tmpData.GroupBy(x => x.Value.Count)) { foreach (var byPreference in byCount.GroupBy(x => x.Key.PreferenceId != 0)) { foreach (var dat in byPreference.OrderBy(x => Guid.NewGuid())) { _data.Add(dat.Key.UserId, dat.Value); } } } //_data = _data.OrderBy(x => x.Value.Count).ToDictionary(x => x.Key, x => x.Value); return(true); }