Пример #1
0
        public void ReadDrawTest()
        {
            string file           = Resources.CFile;
            var    personLookup   = new CFile.PersonLookup((key, name, nationalityCode) => PersonLookup(key, name, nationalityCode));
            var    competitorList = new PersonCompetitorList();

            using (var reader = new StringReader(file))
                competitorList.Competitors = new List <CompetitorBase>(CFile.ReadPersonCompetitors(reader, personLookup));

            IList <Race> draw;

            using (var reader = new StringReader(file))
                draw = CFile.ReadDraw(reader, competitorList.Competitors).ToList();

            Assert.AreEqual(21, draw.Count);
            Assert.IsTrue(draw.Select(r => r.Heat).Distinct().SequenceEqual(Enumerable.Range(1, 11)));
            Assert.IsTrue(draw.All(r => r.Competitor != null));
            Assert.AreEqual(0, draw[9].Lane);
            Assert.AreEqual(1, draw[10].Color);
        }
Пример #2
0
        protected override void Seed(CompetitionContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data. E.g.
            //
            //    context.People.AddOrUpdate(
            //      p => p.FullName,
            //      new Person { FullName = "Andrew Peters" },
            //      new Person { FullName = "Brice Lambson" },
            //      new Person { FullName = "Rowan Miller" }
            //    );
            //

#if TESTDATA
            context.Venues.AddOrUpdate(v => new
            {
                v.Discipline,
                v.Code
            },
                                       new Venue
            {
                Name       = "Test Venue",
                Code       = "XXX",
                Discipline = "SpeedSkating.LongTrack",
                Address    =
                {
                    City        = "Test City",
                    CountryCode = "NED"
                },
                Tracks = new Collection <VenueTrack>
                {
                    new VenueTrack
                    {
                        Length = 400
                    }
                }
            });

            context.LicenseIssuers.AddOrUpdate(l => l.Id, new LicenseIssuer
            {
                Id         = "EMANDO",
                Name       = "Emando B.V.",
                ForwardUri = "http://emando.nl/forward/{0}/{1}"
            });

            var persons = new[]
            {
                new Person
                {
                    Id              = new Guid("{7DA73CB4-75B6-4678-B2A1-0345E12C2164}"),
                    Gender          = Gender.Male,
                    NationalityCode = "NED",
                    Name            = new Name("S.", "Sven", "Kramer"),
                    BirthDate       = new DateTime(1986, 1, 1),
                    Licenses        = new Collection <PersonLicense>
                    {
                        new PersonLicense
                        {
                            Category   = "HSA",
                            Class      = null,
                            Discipline = "SpeedSkating.LongTrack",
                            IssuerId   = "EMANDO",
                            Key        = "7DA73CB4",
                            Season     = 2014,
                            ValidFrom  = new DateTime(2014, 1, 1),
                            ValidTo    = new DateTime(2018, 12, 31)
                        }
                    }
                },
                new Person
                {
                    Id              = new Guid("{63BBEE2F-4A74-4509-B7AF-2178B16624C1}"),
                    Gender          = Gender.Male,
                    NationalityCode = "NED",
                    Name            = new Name("K.", "Koen", "Verweij"),
                    BirthDate       = new DateTime(1987, 1, 1),
                    Licenses        = new Collection <PersonLicense>
                    {
                        new PersonLicense
                        {
                            Category   = "HSB",
                            Class      = 0,
                            Discipline = "SpeedSkating.LongTrack",
                            IssuerId   = "EMANDO",
                            Key        = "63BBEE2F",
                            Season     = 2014,
                            ValidFrom  = new DateTime(2014, 1, 1),
                            ValidTo    = new DateTime(2018, 12, 31)
                        }
                    }
                },
                new Person
                {
                    Id              = new Guid("{E1DD3357-52C8-4DB8-B4B0-7E4E6FD372BF}"),
                    Gender          = Gender.Male,
                    NationalityCode = "NED",
                    BirthDate       = new DateTime(1988, 1, 1),
                    Name            = new Name("J.W.", "Jan", "Blokhuijsen"),
                    Licenses        = new Collection <PersonLicense>
                    {
                        new PersonLicense
                        {
                            Category   = "HSA",
                            Class      = 0,
                            Discipline = "SpeedSkating.LongTrack",
                            IssuerId   = "EMANDO",
                            Key        = "E1DD3357",
                            Season     = 2014,
                            ValidFrom  = new DateTime(2014, 1, 1),
                            ValidTo    = new DateTime(2018, 12, 31)
                        }
                    }
                },
                new Person
                {
                    Id              = new Guid("{78F96F86-D557-4E8D-9BE6-DFA0D0418D51}"),
                    Gender          = Gender.Male,
                    NationalityCode = "NED",
                    Name            = new Name("W.", "Wouter", "olde", "Heuvel"),
                    BirthDate       = new DateTime(1989, 1, 1),
                    Licenses        = new Collection <PersonLicense>
                    {
                        new PersonLicense
                        {
                            Category   = "HN1",
                            Class      = 0,
                            Discipline = "SpeedSkating.LongTrack",
                            IssuerId   = "EMANDO",
                            Key        = "78F96F86",
                            Season     = 2014,
                            ValidFrom  = new DateTime(2014, 1, 1),
                            ValidTo    = new DateTime(2018, 12, 31)
                        }
                    }
                }
            };

            var competition = new Competition
            {
                Id                   = new Guid("{838D233F-DDA5-45AE-AB65-C40A729BB7EE}"),
                Discipline           = "SpeedSkating.LongTrack",
                Name                 = "NK Afstanden",
                Sponsor              = "Emando",
                VenueCode            = "XXX",
                Starts               = DateTime.Today.AddHours(14).ToUniversalTime(),
                Ends                 = DateTime.Today.AddDays(2).AddHours(18).ToUniversalTime(),
                LicenseIssuerId      = "EMANDO",
                Class                = 0,
                Culture              = "nl-NL",
                DistancePointsTables = new Collection <DistancePointsTable>
                {
                    new DistancePointsTable
                    {
                        Id     = new Guid("{7B1EC997-83AD-4CA6-A47B-61DE3AEF5DB3}"),
                        Name   = "Mass Start",
                        Points = new Collection <DistancePoints>
                        {
                            new DistancePoints
                            {
                                Ranking = 1,
                                Type    = "Sprint",
                                Points  = 5
                            },
                            new DistancePoints
                            {
                                Ranking = 2,
                                Type    = "Sprint",
                                Points  = 3
                            },
                            new DistancePoints
                            {
                                Ranking = 3,
                                Type    = "Sprint",
                                Points  = 2
                            },
                            new DistancePoints
                            {
                                Ranking = 4,
                                Type    = "Sprint",
                                Points  = 1
                            },
                            new DistancePoints
                            {
                                Ranking = 1,
                                Type    = "Finish",
                                Points  = 31
                            },
                            new DistancePoints
                            {
                                Ranking = 2,
                                Type    = "Finish",
                                Points  = 15
                            },
                            new DistancePoints
                            {
                                Ranking = 3,
                                Type    = "Finish",
                                Points  = 10
                            },
                            new DistancePoints
                            {
                                Ranking = 4,
                                Type    = "Finish",
                                Points  = 5
                            },
                            new DistancePoints
                            {
                                Ranking = 5,
                                Type    = "Finish",
                                Points  = 3
                            },
                            new DistancePoints
                            {
                                Ranking = 6,
                                Type    = "Finish",
                                Points  = 1
                            }
                        }
                    }
                }
            };
            var competitors = new List <CompetitorBase>
            {
                new PersonCompetitor
                {
                    Id              = new Guid("{4D64037B-780E-4B75-A562-76BE7407F11A}"),
                    EntityId        = persons[0].Id,
                    Name            = persons[0].Name,
                    PersonId        = persons[0].Id,
                    NationalityCode = "NED",
                    StartNumber     = 1,
                    LicenseKey      = "7DA73CB4"
                },
                new PersonCompetitor
                {
                    Id              = new Guid("{A78B1F4C-A2F2-4F22-8B53-512998E048B1}"),
                    EntityId        = persons[1].Id,
                    Name            = persons[1].Name,
                    PersonId        = persons[1].Id,
                    NationalityCode = "NED",
                    StartNumber     = 2,
                    LicenseKey      = "63BBEE2F"
                },
                new PersonCompetitor
                {
                    Id              = new Guid("{447D15B4-CE07-4A20-A90D-9454F3C3EF26}"),
                    EntityId        = persons[2].Id,
                    Name            = persons[2].Name,
                    PersonId        = persons[2].Id,
                    NationalityCode = "NED",
                    StartNumber     = 3,
                    LicenseKey      = "E1DD3357"
                },
                new PersonCompetitor
                {
                    Id              = new Guid("{83872C9B-67D6-43C8-B71C-179E692C970E}"),
                    EntityId        = persons[3].Id,
                    Name            = persons[3].Name,
                    PersonId        = persons[3].Id,
                    NationalityCode = "NED",
                    StartNumber     = 4,
                    LicenseKey      = "78F96F86"
                }
            };
            var competitorList = new PersonCompetitorList
            {
                Id            = new Guid("{EA65ECEA-3F88-43D9-8B75-3679D5CDB1AB}"),
                CompetitionId = new Guid("{838D233F-DDA5-45AE-AB65-C40A729BB7EE}"),
                Name          = "Men",
                Competitors   = competitors.ToList()
            };
            var distances = new[]
            {
                new Distance
                {
                    Id                   = new Guid("{EFAF0485-CAB1-4530-8DAB-7434C675B491}"),
                    CompetitionId        = competition.Id,
                    Name                 = "Men 500 meter",
                    TrackLength          = 400,
                    Value                = 500,
                    ValueQuantity        = DistanceValueQuantity.Length,
                    ClassificationWeight = 500,
                    Number               = 1,
                    Discipline           = "SpeedSkating.LongTrack.PairsDistance.Individual",
                    StartMode            = DistanceStartMode.SingleHeat,
                    Starts               = competition.Starts
                },
                new Distance
                {
                    Id                   = new Guid("{803A201D-DD2D-4EFE-8D7E-9B79810F8B7D}"),
                    CompetitionId        = competition.Id,
                    Name                 = "Men 10000 meter",
                    TrackLength          = 400,
                    Value                = 10000,
                    ValueQuantity        = DistanceValueQuantity.Length,
                    ClassificationWeight = 500,
                    Number               = 2,
                    Discipline           = "SpeedSkating.LongTrack.PairsDistance.Individual",
                    StartMode            = DistanceStartMode.MultipleHeats,
                    Starts               = competition.Starts.AddHours(2)
                },
                new Distance
                {
                    Id            = new Guid("{CDA81562-C3CF-47D5-95FE-BA07E736F12E}"),
                    CompetitionId = competition.Id,
                    PointsTableId = new Guid("{7B1EC997-83AD-4CA6-A47B-61DE3AEF5DB3}"),
                    Name          = "Mass Start Men",
                    TrackLength   = 400,
                    Value         = 16,
                    ValueQuantity = DistanceValueQuantity.Count,
                    Number        = 3,
                    Discipline    = "SpeedSkating.LongTrack.MassStartDistance",
                    StartMode     = DistanceStartMode.MultipleHeats,
                    Starts        = competition.Starts.AddHours(4)
                }
            };

            context.Persons.AddOrUpdate(p => p.Id, persons);
            context.Competitions.AddOrUpdate(c => c.Id, competition);
            context.CompetitorLists.AddOrUpdate(c => c.Id, competitorList);
            context.Distances.AddOrUpdate(d => d.Id, distances);

            var distanceCombinations = new[]
            {
                new DistanceCombination
                {
                    Id             = new Guid("{8B57CEEF-E525-4C6E-92FB-EC25DEAB05F6}"),
                    CompetitionId  = new Guid("{838D233F-DDA5-45AE-AB65-C40A729BB7EE}"),
                    Number         = 1,
                    CategoryFilter = "H*",
                    Class          = 0,
                    Name           = "Heren",
                    Distances      = distances.ToList(),
                    Competitors    = new Collection <DistanceCombinationCompetitor>
                    {
                        new DistanceCombinationCompetitor
                        {
                            CompetitorId = competitors[0].Id
                        },
                        new DistanceCombinationCompetitor
                        {
                            CompetitorId = competitors[1].Id
                        },
                        new DistanceCombinationCompetitor
                        {
                            CompetitorId = competitors[2].Id
                        },
                        new DistanceCombinationCompetitor
                        {
                            CompetitorId = competitors[3].Id,
                            Reserve      = 1
                        }
                    }
                }
            };
            var races = new[]
            {
                new Race
                {
                    Id                    = new Guid("{E49A6646-F9BF-4605-84E0-E4BB15D4A582}"),
                    DistanceId            = distances[0].Id,
                    CompetitorId          = competitors[0].Id,
                    Heat                  = 1,
                    Lane                  = 0,
                    Color                 = 0,
                    PresentedInstanceName = "Primary",
                    Results               = new Collection <RaceResult>
                    {
                        new RaceResult
                        {
                            InstanceName = "Primary",
                            State        = RaceState.Done
                        },
                        new RaceResult
                        {
                            InstanceName = "Secondary",
                            State        = RaceState.Done
                        }
                    },
                    Times = new Collection <RaceTime>
                    {
                        new RaceTime
                        {
                            InstanceName          = "Primary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How      = "Optical",
                            Time     = new TimeSpan(0, 0, 0, 36, 401),
                            TimeInfo = TimeInfo.PersonalBest
                        },
                        new RaceTime
                        {
                            InstanceName          = "Secondary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How      = "Transponder",
                            Time     = new TimeSpan(0, 0, 0, 36, 403),
                            TimeInfo = TimeInfo.PersonalBest
                        }
                    },
                    Laps = new Collection <RaceLap>
                    {
                        new RaceLap
                        {
                            InstanceName          = "Primary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How   = "Optical",
                            Time  = new TimeSpan(0, 0, 0, 9, 641),
                            When  = DateTime.Now,
                            Flags = RaceEventFlags.Measured | RaceEventFlags.Present
                        },
                        new RaceLap
                        {
                            InstanceName          = "Primary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How   = "Optical",
                            Time  = new TimeSpan(0, 0, 0, 36, 401),
                            When  = DateTime.Now,
                            Flags = RaceEventFlags.Measured | RaceEventFlags.Present
                        },
                        new RaceLap
                        {
                            InstanceName          = "Primary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How   = "Transponder",
                            Time  = new TimeSpan(0, 0, 0, 9, 643),
                            When  = DateTime.Now,
                            Flags = RaceEventFlags.Measured
                        },
                        new RaceLap
                        {
                            InstanceName          = "Primary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How   = "Transponder",
                            Time  = new TimeSpan(0, 0, 0, 36, 403),
                            When  = DateTime.Now,
                            Flags = RaceEventFlags.Measured
                        },
                        new RaceLap
                        {
                            InstanceName          = "Secondary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How   = "Transponder",
                            Time  = new TimeSpan(0, 0, 0, 9, 643),
                            When  = DateTime.Now,
                            Flags = RaceEventFlags.Measured | RaceEventFlags.Present
                        },
                        new RaceLap
                        {
                            InstanceName          = "Secondary",
                            ApplianceName         = "MYLAPS X2",
                            ApplianceInstanceName = "Master",
                            How   = "Transponder",
                            Time  = new TimeSpan(0, 0, 0, 36, 403),
                            When  = DateTime.Now,
                            Flags = RaceEventFlags.Measured | RaceEventFlags.Present
                        }
                    }
                },
                new Race
                {
                    Id           = new Guid("{7D5F3799-14C1-4562-B8E4-8C7B734CAF38}"),
                    DistanceId   = distances[0].Id,
                    CompetitorId = competitors[1].Id,
                    Heat         = 1,
                    Lane         = 1,
                    Color        = 1
                },
                new Race
                {
                    Id           = new Guid("{425E0181-3E1A-4619-B1C5-410CECBA68C8}"),
                    DistanceId   = distances[0].Id,
                    CompetitorId = competitors[2].Id,
                    Heat         = 2,
                    Lane         = 0,
                    Color        = 0
                },
                new Race
                {
                    Id           = new Guid("{133671A3-679F-4C84-A818-B5839BBCE478}"),
                    DistanceId   = distances[0].Id,
                    CompetitorId = competitors[3].Id,
                    Heat         = 3,
                    Lane         = 1,
                    Color        = 1
                },
                new Race
                {
                    Id           = new Guid("{C9393080-A58C-43AF-BDC4-1BD62D8792C1}"),
                    DistanceId   = distances[1].Id,
                    CompetitorId = competitors[0].Id,
                    Heat         = 1,
                    Lane         = 0,
                    Color        = 0
                },
                new Race
                {
                    Id           = new Guid("{241BC86F-EAA3-4E0D-BDF5-EDBFDD9ACF39}"),
                    DistanceId   = distances[1].Id,
                    CompetitorId = competitors[1].Id,
                    Heat         = 1,
                    Lane         = 1,
                    Color        = 1
                },
                new Race
                {
                    Id           = new Guid("{E58A1AC8-CEDC-4DA9-98F5-B301E7C5E2C9}"),
                    DistanceId   = distances[1].Id,
                    CompetitorId = competitors[2].Id,
                    Heat         = 2,
                    Lane         = 0,
                    Color        = 2
                },
                new Race
                {
                    Id           = new Guid("{4C92EE78-2B36-487B-9B2B-51C26F722F4E}"),
                    DistanceId   = distances[1].Id,
                    CompetitorId = competitors[3].Id,
                    Heat         = 2,
                    Lane         = 1,
                    Color        = 3
                }
            };

            context.DistanceCombinations.AddOrUpdate(d => d.Id, distanceCombinations);
            context.Races.AddOrUpdate(d => d.Id, races);
#endif
        }