Example #1
0
        private static Stop StopFromRecord(StopRecord stop, CifSQLContext context, char stoptype = 'I')
        {
            int locationid = context.Locations
                             .Where(l => l.ShortForm == stop.Location).FirstOrDefault().Id;

            Stop s = new Stop
            {
                LocationId = locationid,
                Time       = new TimeSpan(0, stop.Time.Hours, stop.Time.Minutes, stop.Time.Seconds),
                StopType   = stoptype
            };

            return(s);
        }
Example #2
0
        static void Main(string[] args)
        {
            //Parsing cif file into Objects
            ATCOcifParser parser = new ATCOcifParser(ConfigurationManager.AppSettings.Get("filePath"));

            //Create database with the given connection string
            var options = new DbContextOptionsBuilder <CifSQLContext>();

            options.UseSqlServer(ConfigurationManager.ConnectionStrings["sql-server"].ConnectionString);
            using CifSQLContext context = new CifSQLContext(options.Options);
            context.Database.EnsureCreated();

            ///////////////////Using the parsed objects for creating Entities/////////////////////

            //Adding Locations
            int i = 0;

            foreach (LocationRecord locationRecord in parser.Locations.Values)
            {
                Console.WriteLine("Adding Locations to DB: " + i + "/" + parser.Locations.Count);
                context.Locations.Add(new Location
                {
                    ShortForm    = locationRecord.Location,
                    FullForm     = locationRecord.FullLocation,
                    GridEasting  = locationRecord.GridEasting,
                    GridNorthing = locationRecord.GridNorthing
                });
                i++;
            }
            context.SaveChanges();

            //Adding Routes
            i = 0;
            foreach (RouteDescription route in parser.Routes.Values)
            {
                Console.WriteLine("Adding Routes to DB: " + i + "/" + parser.Routes.Count);
                context.Routes.Add(new Route
                {
                    RouteNumber = route.Route,
                    Direction   = route.Direction,
                    Description = route.Description
                });
                i++;
            }
            context.SaveChanges();

            //Adding Journeys & Stops
            i = 0;
            foreach (JourneyRecord journey in parser.Journeys)
            {
                Console.WriteLine("Adding Journeys to DB: " + i + "/" + parser.Journeys.Count);
                int routeid = context.Routes
                              .Where(r => r.RouteNumber == journey.Header.Route && r.Direction == journey.Header.Direction)
                              .FirstOrDefault().Id;

                Journey j = new Journey
                {
                    RouteId      = routeid,
                    BankHolidays = journey.Header.BankHolidays,
                    Monday       = journey.Header.OperationDays[0],
                    Tuesday      = journey.Header.OperationDays[1],
                    Wednesday    = journey.Header.OperationDays[2],
                    Thursday     = journey.Header.OperationDays[3],
                    Friday       = journey.Header.OperationDays[4],
                    Saturday     = journey.Header.OperationDays[5],
                    Sunday       = journey.Header.OperationDays[6],
                    Stops        = new List <Stop>()
                };

                j.Stops.Add(StopFromRecord(journey.Origin, context, 'O'));
                foreach (StopRecord stop in journey.IntermediateRecords)
                {
                    j.Stops.Add(StopFromRecord(stop, context, 'I'));
                }
                j.Stops.Add(StopFromRecord(journey.Destination, context, 'D'));
                context.Journeys.Add(j);
                i++;
            }
            context.SaveChanges();
            Console.WriteLine("Complete");
        }