コード例 #1
0
ファイル: MakeLinks.cs プロジェクト: Crimso44/Avia45
        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);
        }
コード例 #2
0
ファイル: MakeLinks.cs プロジェクト: Crimso44/Avia45
        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!");
        }