2022-09-01 22:31:57 +02:00
|
|
|
using System;
|
2022-08-25 18:38:38 +02:00
|
|
|
using System.Collections.Generic;
|
2022-09-01 22:31:57 +02:00
|
|
|
using System.Globalization;
|
2022-08-31 20:50:59 +02:00
|
|
|
using System.IO;
|
2022-08-25 18:38:38 +02:00
|
|
|
|
2022-08-31 20:50:59 +02:00
|
|
|
namespace Parking
|
2022-08-25 18:38:38 +02:00
|
|
|
{
|
2022-08-31 20:50:59 +02:00
|
|
|
public class DataImporter
|
2022-08-25 18:38:38 +02:00
|
|
|
{
|
2022-08-31 20:50:59 +02:00
|
|
|
public static List<Driver> Drivers = new();
|
|
|
|
|
|
|
|
public static void ReadFile(string path)
|
2022-08-25 18:38:38 +02:00
|
|
|
{
|
2022-09-05 22:01:52 +02:00
|
|
|
string fileData = File.ReadAllText(path);
|
|
|
|
string[] lines = fileData.Split("\n"[0]);
|
|
|
|
int counter = 0;
|
|
|
|
foreach (string line in lines) {
|
|
|
|
if (line == "")
|
2022-09-04 00:35:45 +02:00
|
|
|
continue;
|
2022-09-05 22:01:52 +02:00
|
|
|
|
|
|
|
if (counter == 0) {
|
2022-08-31 20:50:59 +02:00
|
|
|
counter++;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
|
2022-09-05 22:01:52 +02:00
|
|
|
string[] lineData = line.Trim().Split(',');
|
|
|
|
ParkingPreference preference = lineData[0] == ""
|
2022-08-31 20:50:59 +02:00
|
|
|
? ParkingPreference.Any
|
2022-09-04 00:35:45 +02:00
|
|
|
: lineData[1] == "P"
|
2022-08-31 20:50:59 +02:00
|
|
|
? ParkingPreference.Front
|
|
|
|
: ParkingPreference.Back;
|
|
|
|
Size size;
|
2022-09-05 22:01:52 +02:00
|
|
|
switch (lineData[2]) {
|
2022-08-31 20:50:59 +02:00
|
|
|
case "Mały":
|
|
|
|
size = Size.A;
|
|
|
|
break;
|
|
|
|
case "Średni":
|
|
|
|
size = Size.B;
|
|
|
|
break;
|
|
|
|
case "Duży":
|
|
|
|
size = Size.C;
|
|
|
|
break;
|
|
|
|
case "Max":
|
|
|
|
size = Size.D;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
size = Size.A;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2022-09-05 22:01:52 +02:00
|
|
|
DateTime realArrival = DateTime.Parse(lineData[5].Contains(':') ? lineData[5] : lineData[5] + ":00",
|
|
|
|
CultureInfo.InvariantCulture);
|
|
|
|
DateTime realDeparture = DateTime.Parse(lineData[6].Contains(':') ? lineData[6] : lineData[6] + ":00",
|
|
|
|
CultureInfo.InvariantCulture);
|
|
|
|
DateTime plannedArrival = DateTime.Parse(lineData[3].Contains(':') ? lineData[3] : lineData[3] + ":00",
|
|
|
|
CultureInfo.InvariantCulture);
|
|
|
|
DateTime plannedDeparture =
|
|
|
|
DateTime.Parse(lineData[4].Contains(':') ? lineData[4] : lineData[4] + ":00",
|
|
|
|
CultureInfo.InvariantCulture);
|
2022-09-04 00:35:45 +02:00
|
|
|
|
2022-09-05 22:01:52 +02:00
|
|
|
if (!int.TryParse(lineData[0], out int priority))
|
2022-09-04 00:35:45 +02:00
|
|
|
priority = 3;
|
2022-09-01 22:31:57 +02:00
|
|
|
|
2022-09-05 22:01:52 +02:00
|
|
|
if (!int.TryParse(lineData[7], out int updateInterval))
|
2022-09-04 00:35:45 +02:00
|
|
|
updateInterval = 3;
|
2022-09-05 22:01:52 +02:00
|
|
|
|
|
|
|
Driver driver = new(size, counter, preference, priority, updateInterval);
|
2022-09-04 00:35:45 +02:00
|
|
|
driver.Times = new[] {plannedArrival, plannedDeparture, realArrival, realDeparture};
|
2022-09-01 22:31:57 +02:00
|
|
|
Drivers.Add(driver);
|
|
|
|
|
2022-08-25 18:38:38 +02:00
|
|
|
counter++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|