Skip to content

Commit 24b3691

Browse files
committed
EXAMPREP-04-MAY-2017-STATIONS
1 parent ccff46d commit 24b3691

39 files changed

+3622
-0
lines changed
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
namespace Stations.App
2+
{
3+
using System;
4+
using System.IO;
5+
using AutoMapper;
6+
using Stations.Data;
7+
8+
public class Startup
9+
{
10+
public static void Main(string[] args)
11+
{
12+
var context = new StationsDbContext();
13+
ResetDatabase(context);
14+
15+
Console.WriteLine("Database Reset.");
16+
17+
Mapper.Initialize(cfg => cfg.AddProfile<StationsProfile>());
18+
19+
ImportEntities(context);
20+
ExportEntities(context);
21+
}
22+
23+
private static void ImportEntities(StationsDbContext context, string baseDir = @"C:\Users\Petya\Desktop\SoftUniPavel\ExamPrep\Stations.DataProcessor\Datasets\")
24+
{
25+
const string exportDir = "./ImportResults/";
26+
27+
var stations = DataProcessor.Deserializer.ImportStations(context, File.ReadAllText(baseDir + "stations.json"));
28+
PrintAndExportEntityToFile(stations, exportDir + "Stations.txt");
29+
30+
// Environment.Exit(0);
31+
32+
var classes = DataProcessor.Deserializer.ImportClasses(context, File.ReadAllText(baseDir + "classes.json"));
33+
PrintAndExportEntityToFile(classes, exportDir + "Classes.txt");
34+
35+
var trains = DataProcessor.Deserializer.ImportTrains(context, File.ReadAllText(baseDir + "trains.json"));
36+
PrintAndExportEntityToFile(trains, exportDir + "Trains.txt");
37+
38+
var trips = DataProcessor.Deserializer.ImportTrips(context, File.ReadAllText(baseDir + "trips.json"));
39+
PrintAndExportEntityToFile(trips, exportDir + "Trips.txt");
40+
41+
var cards = DataProcessor.Deserializer.ImportCards(context, File.ReadAllText(baseDir + "cards.xml"));
42+
PrintAndExportEntityToFile(cards, exportDir + "Cards.txt");
43+
44+
var tickets = DataProcessor.Deserializer.ImportTickets(context, File.ReadAllText(baseDir + "tickets.xml"));
45+
PrintAndExportEntityToFile(tickets, exportDir + "Tickets.txt");
46+
}
47+
48+
private static void ExportEntities(StationsDbContext context)
49+
{
50+
const string exportDir = "./ImportResults/";
51+
52+
var jsonOutput = DataProcessor.Serializer.ExportDelayedTrains(context, "01/01/2017");
53+
Console.WriteLine(jsonOutput);
54+
//File.WriteAllText(exportDir + "DelayedTrains.json", jsonOutput);
55+
56+
//Console.Clear();
57+
58+
var xmlOutput = DataProcessor.Serializer.ExportCardsTicket(context, "Elder");
59+
Console.WriteLine(xmlOutput);
60+
//File.WriteAllText(exportDir + "CardsTicket.xml", xmlOutput);
61+
}
62+
63+
private static void PrintAndExportEntityToFile(string entityOutput, string outputPath)
64+
{
65+
Console.WriteLine(entityOutput);
66+
//File.WriteAllText(outputPath, entityOutput.TrimEnd());
67+
}
68+
69+
private static void ResetDatabase(StationsDbContext context)
70+
{
71+
context.Database.EnsureDeleted();
72+
context.Database.EnsureCreated();
73+
}
74+
}
75+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<PackageReference Include="Automapper" Version="6.2.1" />
10+
</ItemGroup>
11+
12+
<ItemGroup>
13+
<ProjectReference Include="..\Stations.DataProcessor\Stations.DataProcessor.csproj" />
14+
</ItemGroup>
15+
16+
</Project>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System.Linq;
2+
using AutoMapper;
3+
4+
namespace Stations.App
5+
{
6+
public class StationsProfile : Profile
7+
{
8+
// Configure your AutoMapper here if you wish to use it. If not, DO NOT DELETE THIS CLASS
9+
public StationsProfile()
10+
{
11+
}
12+
}
13+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Stations.Data
2+
{
3+
public static class Configuration
4+
{
5+
public static string ConnectionString = @"Server=.;Database=Stations;Trusted_Connection=True";
6+
}
7+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>netcoreapp2.0</TargetFramework>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.1" />
9+
</ItemGroup>
10+
11+
<ItemGroup>
12+
<ProjectReference Include="..\Stations.Models\Stations.Models.csproj" />
13+
</ItemGroup>
14+
15+
</Project>
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
using Microsoft.EntityFrameworkCore;
2+
using Stations.Models;
3+
4+
namespace Stations.Data
5+
{
6+
public class StationsDbContext : DbContext
7+
{
8+
public StationsDbContext()
9+
{
10+
}
11+
12+
public StationsDbContext(DbContextOptions options)
13+
: base(options)
14+
{
15+
}
16+
17+
public DbSet<Train> Trains { get; set; }
18+
public DbSet<SeatingClass> SeatingClasses { get; set; }
19+
public DbSet<Station> Stations { get; set; }
20+
public DbSet<TrainSeat> TrainSeats { get; set; }
21+
public DbSet<Trip> Trips { get; set; }
22+
public DbSet<Ticket> Tickets { get; set; }
23+
public DbSet<CustomerCard> Cards { get; set; }
24+
25+
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
26+
{
27+
if (!optionsBuilder.IsConfigured)
28+
{
29+
optionsBuilder.UseSqlServer(Configuration.ConnectionString);
30+
}
31+
}
32+
33+
protected override void OnModelCreating(ModelBuilder modelBuilder)
34+
{
35+
modelBuilder.Entity<SeatingClass>().HasAlternateKey(x => x.Name);
36+
modelBuilder.Entity<SeatingClass>().HasAlternateKey(x => x.Abbreviation);
37+
38+
modelBuilder.Entity<Station>().HasAlternateKey(x => x.Name);
39+
40+
modelBuilder.Entity<Train>().HasAlternateKey(x => x.TrainNumber);
41+
42+
modelBuilder.Entity<Trip>()
43+
.HasOne(x => x.OriginStation)
44+
.WithMany(os => os.TripsFrom)
45+
.HasForeignKey(x => x.OriginStationId)
46+
.OnDelete(DeleteBehavior.Restrict);
47+
48+
modelBuilder.Entity<Trip>()
49+
.HasOne(x => x.DestinationStation)
50+
.WithMany(ds => ds.TripsTo)
51+
.HasForeignKey(x => x.DestinationStationId)
52+
.OnDelete(DeleteBehavior.Restrict);
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)