public static void AddStations(IEnumerable <Station> stations) { using (var context = new StationsContext()) { foreach (var station in stations) { // Validate Name if (station.Name == null || station.Name.Length > 50 || context.Stations.Any(s => s.Name == station.Name)) { Console.WriteLine("Invalid data format."); continue; } // Validate Town if (station.Town != null && station.Town.Length > 50) { Console.WriteLine("Invalid data format."); continue; } // Use station name if town name not provided station.Town = station.Town ?? station.Name; // Add station to DB context.Stations.Add(station); context.SaveChanges(); // Success Notification Console.WriteLine($"Record {station.Name} successfully imported."); } } }
public static void Main() { Database.SetInitializer(new DropCreateDatabaseAlways <StationsContext>()); StationsContext context = new StationsContext(); QueryHelper queryHelper = new QueryHelper(context); ImportHandler importHandler = new ImportHandler(queryHelper); // Import JSON. importHandler.ImportStations(File.ReadAllText("../../Datasets/stations.json")); importHandler.ImportClasses(File.ReadAllText("../../Datasets/classes.json")); importHandler.ImportTrains(File.ReadAllText("../../Datasets/trains.json")); importHandler.ImportTrips(File.ReadAllText("../../Datasets/trips.json")); // Import XML. importHandler.ImportCards(File.ReadAllText("../../Datasets/cards.xml")); importHandler.ImportTickets(File.ReadAllText("../../Datasets/tickets.xml")); ExportHandler exportHandler = new ExportHandler(queryHelper); // Export JSON. exportHandler.ExportDelayedTrains("../../Datasets/", "01/01/2017"); exportHandler.ExportCardsTicket("../../Datasets/", "Elder"); }
public static void AddSeatingClasses(IEnumerable <SeatingClass> seatingClasses) { using (var context = new StationsContext()) { foreach (var seatingClass in seatingClasses) { // Validate Name if (seatingClass.Name == null || seatingClass.Name.Length > 30 || context.SeatingClasses.Any(c => c.Name == seatingClass.Name)) { Console.WriteLine("Invalid data format."); continue; } // Validate Abbreviation if (seatingClass.Abbreviation == null || seatingClass.Abbreviation.Length != 2) { Console.WriteLine("Invalid data format."); continue; } // Add seating class to DB context.SeatingClasses.Add(seatingClass); context.SaveChanges(); // Success Notification Console.WriteLine($"Record {seatingClass.Name} successfully imported."); } } }
public static void AddTrips(IEnumerable <TripImportDto> tripDtos) { using (var context = new StationsContext()) { string dateFormat = "dd/MM/yyyy HH:mm"; string timeDiffFormat = "g"; foreach (var tripDto in tripDtos) { // Validate required input if (tripDto.OriginStation == null || tripDto.DestinationStation == null || tripDto.DepartureTime == null || tripDto.ArrivalTime == null || tripDto.Train == null) { Console.WriteLine("Invalid data format."); continue; } // Validate Train, origin & destination Stations Train train = context.Trains.FirstOrDefault(t => t.TrainNumber == tripDto.Train); Station originStation = context.Stations.FirstOrDefault(s => s.Name == tripDto.OriginStation); Station destinationStation = context.Stations.FirstOrDefault(s => s.Name == tripDto.DestinationStation); if (train == null || originStation == null || destinationStation == null) { Console.WriteLine("Invalid data format."); continue; } // Validate Departure time < Arrival time DateTime departureTime = DateTime.ParseExact(tripDto.DepartureTime, dateFormat, CultureInfo.InvariantCulture); DateTime arrivalTime = DateTime.ParseExact(tripDto.ArrivalTime, dateFormat, CultureInfo.InvariantCulture); if (departureTime >= arrivalTime) { Console.WriteLine("Invalid data format."); continue; } TimeSpan timeDifference = TimeSpan.ParseExact(tripDto.TimeDifference ?? "00:00", timeDiffFormat, CultureInfo.InvariantCulture); // Add trip to DB Trip trip = new Trip { TrainId = train.Id, OriginStationId = originStation.Id, DestinationStationId = destinationStation.Id, DepartureTime = departureTime, ArrivalTime = arrivalTime, Status = tripDto.Status, TimeDifference = timeDifference }; context.Trips.Add(trip); context.SaveChanges(); // Success Notification Console.WriteLine($"Trip from {tripDto.OriginStation} to {tripDto.DestinationStation} imported."); } } }
public static void AddTickets(List <TicketImportDto> ticketDtos) { using (var context = new StationsContext()) { foreach (var ticketDto in ticketDtos) { // Validate input Trip trip = context.Trips .FirstOrDefault(t => t.OriginStation.Name == ticketDto.OriginStation && t.DestinationStation.Name == ticketDto.DestinationStation && t.DepartureTime == ticketDto.DepartureTime); CustomerCard card = context.CustomerCards .FirstOrDefault(c => c.Name == ticketDto.CardName); SeatingClass seatingClass = context.SeatingClasses .FirstOrDefault(c => c.Abbreviation == ticketDto.Seat.Substring(0, 2)); if (trip == null || card == null || seatingClass == null) { Console.WriteLine("Invalid data format."); continue; } // Validate train seats var trainSeats = context.TrainSeats .FirstOrDefault(ts => ts.TrainId == trip.TrainId && ts.SeatingClassId == seatingClass.Id); if (trainSeats == null) { Console.WriteLine("Invalid data format."); continue; } // Validate seat number int seatNumber = int.Parse(ticketDto.Seat.Substring(2)); if (seatNumber < 0 || seatNumber > trainSeats.Quantity) { Console.WriteLine("Invalid data format."); continue; } // Add ticket to DB Ticket ticket = new Ticket { TripId = trip.Id, Price = ticketDto.Price, SeatingPlace = ticketDto.Seat, PersonalCardId = card.Id }; context.Tickets.Add(ticket); context.SaveChanges(); // Success Notification Console.WriteLine($"Ticket from {ticketDto.OriginStation} to {ticketDto.DestinationStation} departing at {ticketDto.DepartureTime} imported."); } } }
private static void Main() { StationsContext context = new StationsContext(); HelperMethods helperMethods = new HelperMethods(context); Import import = new Import(helperMethods); import.ImportStations(File.ReadAllText("../../../datasets/stations.json")); import.ImportClasses(File.ReadAllText("../../../datasets/classes.json")); import.ImportTrains(File.ReadAllText("../../../datasets/trains.json")); import.ImportTrips(File.ReadAllText("../../../datasets/trips.json")); import.ImportCards(File.ReadAllText("../../../datasets/cards.xml")); import.ImportTickets(File.ReadAllText("../../../datasets/tickets.xml")); Export export = new Export(helperMethods); export.ExportDelayedTrains("../../../datasets/", "01/01/2017"); export.ExportCardsTicket("../../../datasets/", "Debilitated"); }
public static void AddStation(ICollection <Station> stations) { using (var ctx = new StationsContext()) { foreach (var station in stations) { if (((station.Name.Length > 50) || (station.Town.Length > 50)) || (station.Name == null)) { Console.WriteLine("Invalid data format."); } else if (station.Town == null) { station.Town = station.Name; ctx.Stations.Add(station); Console.WriteLine($"Record {station} successfully imported."); } } ctx.SaveChanges(); } }
public static void AddSeatingClass(ICollection <SeatingClass> seatclasses) { using (var ctx = new StationsContext()) { foreach (var seatclass in seatclasses) { if ((seatclass.Name.Length > 30) || (seatclass.Abbreviation.Length < 2) || (seatclass.Abbreviation.Length > 2) || (ctx.SeatingClasses.Where(sc => sc.Name == seatclass.Name) != null)) { Console.WriteLine("Invalid data format."); } else { ctx.SeatingClasses.Add(seatclass); } } ctx.SaveChanges(); } }
public static void AddCards(List <CustomerCard> cards) { using (var context = new StationsContext()) { foreach (var card in cards) { // Validate input if (card.Name == null || card.Name.Length > 128 || card.Age < 0 || card.Age > 120) { Console.WriteLine("Invalid data format."); continue; } // Add Card to DB context.CustomerCards.Add(card); context.SaveChanges(); // Success Notification Console.WriteLine($"Record {card.Name} successfully imported."); } } }
public static void AddTrain(ICollection <TrainSeatsDTO> trains) { using (var ctx = new StationsContext()) { foreach (var train in trains) { bool isValid = true; List <SeatDTO> seatClasNames = new List <SeatDTO>(); foreach (var seat in train.Seats) { var seatVal = train.Seats .Where(s => s.SeatClassName == seat.SeatClassName) .SingleOrDefault(); bool nameSet = false; foreach (var st in seatClasNames) { if (seat.SeatClassName == st.SeatClassName) { nameSet = true; } } if (!nameSet) { seatClasNames.Add(seat); } if (((seat.SeatClassName == null) || (seat.Abbreviation == null)) || (seat.Abbreviation != seatVal.Abbreviation) || (seat.Quantity <= 0) || (nameSet == true)) { isValid = false; } } if (((train.Type != null) && (train.Type != "HighSpeed" || train.Type != "LongDistance" || train.Type != "Freight")) || (isValid == false)) { Console.WriteLine("Invalid data format."); } else { var thisTrain = new Train(); thisTrain.TrainNumber = train.TrainTrainNumber; thisTrain.Type = train.Type; //ctx.Trains.Add(thisTrain); var trainSeats = new TrainSeats(); trainSeats.Train = thisTrain; foreach (var seat in seatClasNames) { trainSeats.SeatClass = ctx.SeatingClasses .Where(sc => sc.Name == seat.SeatClassName) .SingleOrDefault(); trainSeats.Quantity = seat.Quantity; Console.WriteLine($"Record {seat.SeatClassName} successfully imported."); } ctx.TrainsSeats.Add(trainSeats); Console.WriteLine($"Record {trainSeats.Train.TrainNumber} successfully imported."); } } ctx.SaveChanges(); } }
public static void ImportTrains(IEnumerable <TrainImportDto> trainDtos) { using (var context = new StationsContext()) { foreach (var trainDto in trainDtos) { // Validate TrainNumber if (trainDto.TrainNumber == null || trainDto.TrainNumber.Length > 10 || context.Trains.Any(t => t.TrainNumber == trainDto.TrainNumber)) { Console.WriteLine("Invalid data format."); continue; } // Validate TrainType if (trainDto.Type == null) { Console.WriteLine("Invalid data format."); continue; } // Validate Seats bool isValidEntity = true; foreach (var seatDto in trainDto.Seats) { if (seatDto.Name == null || seatDto.Abbreviation == null || seatDto.Quantity == null || seatDto.Quantity < 0 || !context.SeatingClasses.Any(c => c.Name == seatDto.Name && c.Abbreviation == seatDto.Abbreviation)) { isValidEntity = false; Console.WriteLine("Invalid data format."); break; } } // Ignore invalid entities if (!isValidEntity) { continue; } // Add train & train seats to DB Train train = new Train { TrainNumber = trainDto.TrainNumber, Type = (TrainType)trainDto.Type, TrainSeats = new List <TrainSeat>() }; foreach (var seatDto in trainDto.Seats) { train.TrainSeats.Add(new TrainSeat { SeatingClassId = context.SeatingClasses.FirstOrDefault(c => c.Name == seatDto.Name).Id, Quantity = (int)seatDto.Quantity }); } context.Trains.Add(train); context.SaveChanges(); // Success Notification Console.WriteLine($"Record {trainDto.TrainNumber} successfully imported."); } } }
public static void AddTrip(ICollection <TripDTO> trips) { bool isValid = true; using (var ctx = new StationsContext()) { foreach (var trip in trips) { if ((trip.Train == null) || (trip.OriginStation == null) || (trip.DestinationStation == null) || (trip.DepartureTime == null) || (trip.ArrivalTime == null)) { isValid = false; } if ((trip.Status != null) && ((trip.Status != "OnTime") && (trip.Status != "Delayed") && (trip.Status != "Early"))) { isValid = false; } if (ctx.Trains .Where(tr => tr.TrainNumber == trip.Train) .FirstOrDefault() == null) { isValid = false; } if ((ctx.Stations .Where(st => st.Name == trip.OriginStation.Name) .FirstOrDefault() == null) || (ctx.Stations .Where(st => st.Name == trip.DestinationStation.Name) .FirstOrDefault() == null)) { isValid = false; } if (trip.DepartureTime >= trip.ArrivalTime) { isValid = false; } if (isValid == false) { Console.WriteLine("Invalid data format."); } else { var thisTrip = new Trip(); thisTrip.StationOfOrigin = trip.OriginStation; thisTrip.StationOfOrigin = trip.DestinationStation; thisTrip.Train = ctx.Trains .Where(tr => tr.TrainNumber == trip.Train) .SingleOrDefault(); thisTrip.DepartureTime = trip.DepartureTime; thisTrip.ArrivalTime = trip.ArrivalTime; thisTrip.Status = trip.Status; ctx.Trips.Add(thisTrip); } } ctx.SaveChanges(); } }