private int CompareRecs(TRec r, TRec r1) { var Result = Int32.MinValue; if ((r.iyear > 0) && (r1.iyear > 0) && (Math.Abs(r.iyear - r1.iyear) > 9)) { return(Result); } if ((r.bv && r1.bc) || (r.bc && r1.bv)) { return(Result); } var s1 = r.scntr; var s2 = r1.scntr; if (!string.IsNullOrEmpty(s1) && !string.IsNullOrEmpty(s2)) { if (s1 == "International") { s1 = ""; } if (s2 == "International") { s2 = ""; } if (s1.Length > 3 && ("СC".IndexOf(s1[0]) >= 0) && ("СC".IndexOf(s1[1]) >= 0) && ("СC".IndexOf(s1[2]) >= 0) && ("РP".IndexOf(s1[3]) >= 0)) { s1 = "Россия"; } if (s2.Length > 3 && ("СC".IndexOf(s2[0]) >= 0) && ("СC".IndexOf(s2[1]) >= 0) && ("СC".IndexOf(s2[2]) >= 0) && ("РP".IndexOf(s2[3]) >= 0)) { s2 = "Россия"; } if (s1 == "СССР") { s1 = "Россия"; } if (s2 == "СССР") { s2 = "Россия"; } if (s1 == "Украина") { s1 = "Россия"; } if (s2 == "Украина") { s2 = "Россия"; } if (s1 != s2) { return(Result); } } is_constr = false; is_name = false; res = 0; is_was_was = false; CompIt(r.ls, r1.ls, r.iconstr, r1.iconstr); CompIt(r1.ls, r.ls, r1.iconstr, r.iconstr); if (is_constr) { res += 1000; } if (!is_name && !is_constr) { res = Int32.MinValue; } if (!is_was_was) { res = Int32.MinValue; } return(res); }
public void DoMakeLinks(AiKEntities ctx, Label lInfo, int ind) { if (!(MessageBox.Show("Load Links?", "Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes)) { return; } var ld = new List <string>(); for (var i = 1; i <= 7; i++) { Recs[i] = new List <TRec>(); } lInfo.Text = "Loading..."; Application.DoEvents(); var crafts = ctx.Crafts.Where(x => "1234567".Contains(x.Source)).ToList(); foreach (var craft in crafts) { var r = new TRec(craft); Recs[r.isrc].Add(r); } var icnt = 0; var cnt = Recs[1].Count + Recs[2].Count + Recs[3].Count + Recs[4].Count + Recs[5].Count + Recs[6].Count + Recs[7].Count; for (var i = 1; i <= 7; i++) { foreach (var r in Recs[i]) { icnt++; lInfo.Text = $"{icnt} of {cnt}"; Application.DoEvents(); var craft = ctx.Crafts.Single(x => x.CraftId == r.id); for (var k = 1; k <= 7; k++) { if ((ind == 0) || (ind == i) || (ind == k)) { if (i == k) { craft.GetType().GetProperty($"s{k}").SetValue(craft, r.id); } else { craft.GetType().GetProperty($"s{k}").SetValue(craft, null); var maxcmp = Int32.MinValue; var maxyr = 0; var maxid = 0; ld.Clear(); foreach (var r1 in Recs[k]) { var m = CompareRecs(r, r1); if (m > Int32.MinValue) { if (m > maxcmp) { maxcmp = m; maxid = r1.id; maxyr = r1.iyear; ld.Clear(); } else if (m == maxcmp) { ld.Add($"{r1.name} ({m})"); if ((r1.iyear > 0) && ((maxyr > r1.iyear) || (maxyr == 0))) { maxcmp = m; maxid = r1.id; maxyr = r1.iyear; ld.Move(ld.Count - 1, 0); } } } } if (maxcmp > Int32.MinValue) { craft.GetType().GetProperty($"s{k}").SetValue(craft, maxid); } } } } ctx.SaveChanges(); Util.DetachAllEntities(ctx); } } lInfo.Text = ""; MessageBox.Show("OK!"); }