public static Crossout.AspWeb.Models.API.v2.BuildEntry PopulateBuildEntry(FileTraceManagment.BuildRecord build) { Crossout.AspWeb.Models.API.v2.BuildEntry build_entry = new Crossout.AspWeb.Models.API.v2.BuildEntry { }; build_entry.build_hash = build.BuildHash; build_entry.power_score = build.PowerScore; build_entry.parts = build.Parts; return(build_entry); }
private void upload_files(object sender, DoWorkEventArgs e) { if (bw_file_uploader.CancellationPending) { return; } bw_status_update status = new bw_status_update { }; List <string> uploaded_builds = new List <string> { }; Crossout.AspWeb.Models.API.v2.UploadReturn upload_return = Upload.GetPreviousUploads(session.LocalUserID); Crossout.AspWeb.Models.API.v2.UploadEntry upload_entry = new Crossout.AspWeb.Models.API.v2.UploadEntry { uploader_uid = session.LocalUserID, match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> { }, build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> { } }; Crossout.AspWeb.Models.API.v2.BuildEntry build_entry = new Crossout.AspWeb.Models.API.v2.BuildEntry { }; upload_entry.uploader_uid = session.LocalUserID; upload_entry.match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> { }; upload_entry.build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> { }; DateTime min_upload_date = DateTime.MaxValue; DateTime max_upload_date = DateTime.MinValue; int percent_upload = 0; upload_return = Upload.UploadToCrossoutDB(upload_entry); upload_entry = new Crossout.AspWeb.Models.API.v2.UploadEntry { uploader_uid = session.LocalUserID, match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> { }, build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> { } }; foreach (FileTraceManagment.MatchRecord match in match_history) { if (bw_file_uploader.CancellationPending) { return; } if (upload_return.uploaded_matches.Contains(match.MatchData.ServerGUID)) { continue; } if (match.MatchData.ServerGUID == 0) { continue; } if (match.MatchData.LocalPlayer.UID == 0) { continue; } if (match.MatchData.PlayerRecords.Any(x => x.Value.UID == 0 && x.Value.Bot == 0)) { continue; } if (!match.MatchData.MatchRewards.Any()) { continue; } if (match.MatchData.WinningTeam == -1) { continue; } if (match.MatchData.MatchType == GlobalData.TEST_SERVER_MATCH) { continue; } if (match.MatchData.MatchType == GlobalData.CUSTOM_MATCH) { continue; } if (match.MatchData.MatchStart < min_upload_date) { min_upload_date = match.MatchData.MatchStart; } if (match.MatchData.MatchEnd > max_upload_date) { max_upload_date = match.MatchData.MatchEnd; } foreach (FileTraceManagment.RoundRecord round in match.MatchData.RoundRecords) { foreach (FileTraceManagment.Player player in round.Players) { if (bw_file_uploader.CancellationPending) { return; } if (!build_records.ContainsKey(player.BuildHash)) { continue; } if (build_records[player.BuildHash].Parts.Count == 0) { continue; } if (build_records[player.BuildHash].PowerScore == 0) { continue; } if (uploaded_builds.Contains(player.BuildHash)) { continue; } uploaded_builds.Add(player.BuildHash); upload_entry.build_list.Add(Upload.PopulateBuildEntry(build_records[player.BuildHash])); } } upload_entry.match_list.Add(Upload.PopulateMatchEntry(match, translations)); if (upload_entry.match_list.Count >= GlobalData.UPLOAD_LIST_SIZE) { percent_upload = percent_upload = get_percent_upload(upload_return.uploaded_matches.Count); status.text_update = string.Format("Uploading {0} matches from {1} to {2}." + Environment.NewLine, upload_entry.match_list.Count, min_upload_date, max_upload_date); status.text_update += string.Format("Uploading {0} builds." + Environment.NewLine, upload_entry.build_list.Count); status.percent_upload = percent_upload; status.matchs_uploaded = upload_return.uploaded_matches.Count; status.builds_uploaded = upload_return.uploaded_builds; bw_file_uploader.ReportProgress(0, status); upload_return = Upload.UploadToCrossoutDB(upload_entry); min_upload_date = DateTime.MaxValue; max_upload_date = DateTime.MinValue; upload_entry = new Crossout.AspWeb.Models.API.v2.UploadEntry { uploader_uid = session.LocalUserID, match_list = new List <Crossout.AspWeb.Models.API.v2.MatchEntry> { }, build_list = new List <Crossout.AspWeb.Models.API.v2.BuildEntry> { } }; } } status.text_update = string.Format("Uploading {0} matches from {1} to {2}." + Environment.NewLine, upload_entry.match_list.Count, min_upload_date, max_upload_date); status.percent_upload = percent_upload; status.matchs_uploaded = upload_return.uploaded_matches.Count; status.builds_uploaded = upload_return.uploaded_builds; bw_file_uploader.ReportProgress(0, status); upload_return = Upload.UploadToCrossoutDB(upload_entry); percent_upload = get_percent_upload(upload_return.uploaded_matches.Count); status.text_update = string.Format("Finished upload of {0} from {1} to {2}." + Environment.NewLine, upload_entry.match_list.Count, min_upload_date, max_upload_date); status.percent_upload = percent_upload; status.matchs_uploaded = upload_return.uploaded_matches.Count; status.builds_uploaded = upload_return.uploaded_builds; bw_file_uploader.ReportProgress(0, status); }