extract CSV code to independant class, so that we don't pollute the EF classes with CSV stuff.
This commit is contained in:
		
							
								
								
									
										278
									
								
								Stars Assistant/CSV/Planet.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										278
									
								
								Stars Assistant/CSV/Planet.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,278 @@
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
using System.Globalization;
 | 
			
		||||
using CsvHelper.Configuration.Attributes;
 | 
			
		||||
 | 
			
		||||
namespace StarsAssistant.CSV;
 | 
			
		||||
 | 
			
		||||
public class Planet
 | 
			
		||||
{
 | 
			
		||||
    [Index(0)]
 | 
			
		||||
    public required string Name { get; set; }
 | 
			
		||||
 | 
			
		||||
    [Index(1)]
 | 
			
		||||
    public string? Owner { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(2)]
 | 
			
		||||
    public string? StarbaseType { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(3)]
 | 
			
		||||
    public int ReportAge { get; set; } = 0;
 | 
			
		||||
    
 | 
			
		||||
    [Index(4)]
 | 
			
		||||
    public int? Population { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public int? Value { get; private set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(5)]
 | 
			
		||||
    public string CSVValue {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && int.TryParse(value[..^1], out int result))
 | 
			
		||||
            {
 | 
			
		||||
                Value = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Value = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Index(7)]
 | 
			
		||||
    public int? Mines { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(8)]
 | 
			
		||||
    public int? Factories { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? DefPercent { get; private set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(9)]
 | 
			
		||||
    public string CSVDefPercent {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && Decimal.TryParse(value[..^1], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                DefPercent = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                DefPercent = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Index(10)]
 | 
			
		||||
    public int? SurfaceIronium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(11)]
 | 
			
		||||
    public int? SurfaceBoranium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(12)]
 | 
			
		||||
    public int? SurfaceGermanium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(13)]
 | 
			
		||||
    public int? MRIronium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(14)]
 | 
			
		||||
    public int? MRBoranium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(15)]
 | 
			
		||||
    public int? MRGermanium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(16)]
 | 
			
		||||
    public int? MCIronium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(17)]
 | 
			
		||||
    public int? MCBoranium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(18)]
 | 
			
		||||
    public int? MCGermanium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(19)]
 | 
			
		||||
    public int? Resources { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? Gravity { get; private set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(20)]
 | 
			
		||||
    public string CSVGravity {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && Decimal.TryParse(value[..^1], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                Gravity = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Gravity = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? Temperature { get; private set; }
 | 
			
		||||
        
 | 
			
		||||
    [Index(21)]
 | 
			
		||||
    public string CSVTemperature {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                Temperature = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Temperature = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? Radiation { get; private set; }
 | 
			
		||||
        
 | 
			
		||||
    [Index(22)]
 | 
			
		||||
    public string CSVRadiation {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                Radiation = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Radiation = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? GravityOrig { get; private set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(20)]
 | 
			
		||||
    public string CSVGravityOrig {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && Decimal.TryParse(value[..^1], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                GravityOrig = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                GravityOrig = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }    
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? TemperatureOrig { get; private set; }
 | 
			
		||||
            
 | 
			
		||||
    [Index(24)]
 | 
			
		||||
    public string CSVTemperatureOrig {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                TemperatureOrig = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                TemperatureOrig = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public decimal? RadiationOrig { get; private set; }
 | 
			
		||||
        
 | 
			
		||||
    [Index(25)]
 | 
			
		||||
    public string CSVRadiationOrig {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                RadiationOrig = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                RadiationOrig = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [Ignore()]
 | 
			
		||||
    public int? MaxTerraforming { get; private set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(26)]
 | 
			
		||||
    public string CSVMaxTerraforming {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && int.TryParse(value[..^1], out int result))
 | 
			
		||||
            {
 | 
			
		||||
                MaxTerraforming = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                MaxTerraforming = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    [Index(27)]
 | 
			
		||||
    public int? CapacityPercent { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(28)]
 | 
			
		||||
    public int? ScanRange { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(29)]
 | 
			
		||||
    public int? PenScanRange { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(30)]
 | 
			
		||||
    public int? Driver { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(31)]
 | 
			
		||||
    public int? DriverWarp { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(32)]
 | 
			
		||||
    public string? RouteTarget { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(33)]
 | 
			
		||||
    public int? GateRange { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(34)]
 | 
			
		||||
    public int? GateMass { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [Index(35)]
 | 
			
		||||
    public int? PctDamage { get; set; }
 | 
			
		||||
 | 
			
		||||
    /// <summary>
 | 
			
		||||
    /// This will update a DB Planet recrod with this CSV Data. The PK (Planet Name)
 | 
			
		||||
    /// must already be set, DB/EF Handling has to be done by the caller, we'll take
 | 
			
		||||
    /// care of none PK properties only.
 | 
			
		||||
    /// </summary>
 | 
			
		||||
    /// <param name="dbPlanet"></param>
 | 
			
		||||
    public void UpdateDbPlanet(Model.Planet dbPlanet)
 | 
			
		||||
    {
 | 
			
		||||
        if (dbPlanet == null)
 | 
			
		||||
            throw new InvalidOperationException("Cannot update a null DB Planet instance");
 | 
			
		||||
        if (dbPlanet.Name != Name)
 | 
			
		||||
            throw new InvalidOperationException($"DB Planet Name {dbPlanet.Name} does not macth the CSV Planet Name {Name}");
 | 
			
		||||
 | 
			
		||||
        dbPlanet.Owner = Owner;
 | 
			
		||||
        dbPlanet.StarbaseType = StarbaseType;
 | 
			
		||||
        dbPlanet.ReportAge = ReportAge;
 | 
			
		||||
        dbPlanet.Population = Population;
 | 
			
		||||
        dbPlanet.Value = Value;
 | 
			
		||||
        dbPlanet.Mines = Mines;
 | 
			
		||||
        dbPlanet.Factories = Factories;
 | 
			
		||||
        dbPlanet.DefPercent = DefPercent;
 | 
			
		||||
        dbPlanet.SurfaceIronium = SurfaceIronium;
 | 
			
		||||
        dbPlanet.SurfaceBoranium = SurfaceBoranium;
 | 
			
		||||
        dbPlanet.SurfaceGermanium = SurfaceGermanium;
 | 
			
		||||
        dbPlanet.MRIronium = MRIronium;
 | 
			
		||||
        dbPlanet.MRBoranium = MRBoranium;
 | 
			
		||||
        dbPlanet.MRGermanium = MRGermanium;
 | 
			
		||||
        dbPlanet.MCIronium = MCIronium;
 | 
			
		||||
        dbPlanet.MCBoranium = MCBoranium;
 | 
			
		||||
        dbPlanet.MCGermanium = MCGermanium;
 | 
			
		||||
        dbPlanet.Resources = Resources;
 | 
			
		||||
        dbPlanet.Gravity = Gravity;
 | 
			
		||||
        dbPlanet.Radiation = Radiation;
 | 
			
		||||
        dbPlanet.Temperature = Temperature;
 | 
			
		||||
        dbPlanet.GravityOrig = GravityOrig;
 | 
			
		||||
        dbPlanet.TemperatureOrig = TemperatureOrig;
 | 
			
		||||
        dbPlanet.RadiationOrig = RadiationOrig;
 | 
			
		||||
        dbPlanet.MaxTerraforming = MaxTerraforming;
 | 
			
		||||
        dbPlanet.CapacityPercent = CapacityPercent;
 | 
			
		||||
        dbPlanet.ScanRange = ScanRange;
 | 
			
		||||
        dbPlanet.PenScanRange = PenScanRange;
 | 
			
		||||
        dbPlanet.Driver = Driver;
 | 
			
		||||
        dbPlanet.DriverWarp = DriverWarp;
 | 
			
		||||
        dbPlanet.RouteTarget = RouteTarget;
 | 
			
		||||
        dbPlanet.GateRange = GateRange;
 | 
			
		||||
        dbPlanet.GateMass = GateMass;
 | 
			
		||||
        dbPlanet.PctDamage = PctDamage;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,229 +1,78 @@
 | 
			
		||||
using System.ComponentModel.DataAnnotations;
 | 
			
		||||
using System.Globalization;
 | 
			
		||||
using CSV = CsvHelper.Configuration.Attributes;
 | 
			
		||||
 | 
			
		||||
namespace StarsAssistant.Model;
 | 
			
		||||
 | 
			
		||||
public class Planet
 | 
			
		||||
{
 | 
			
		||||
    [Key, CSV.Index(0)]
 | 
			
		||||
    [Key]
 | 
			
		||||
    public required string Name { get; set; }
 | 
			
		||||
 | 
			
		||||
    [CSV.Index(1)]
 | 
			
		||||
    public string? Owner { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(2)]
 | 
			
		||||
    public string? StarbaseType { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(3)]
 | 
			
		||||
    public int ReportAge { get; set; } = 0;
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(4)]
 | 
			
		||||
    public int? Population { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public int? Value { get; set; }
 | 
			
		||||
 | 
			
		||||
    [CSV.Index(5)]
 | 
			
		||||
    public string CSVValue {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && int.TryParse(value[..^1], out int result))
 | 
			
		||||
            {
 | 
			
		||||
                Value = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Value = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [CSV.Index(7)]
 | 
			
		||||
    public int? Mines { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(8)]
 | 
			
		||||
    public int? Factories { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? DefPercent { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(9)]
 | 
			
		||||
    public string CSVDefPercent {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && Decimal.TryParse(value[..^1], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                DefPercent = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                DefPercent = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [CSV.Index(10)]
 | 
			
		||||
    public int? SurfaceIronium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(11)]
 | 
			
		||||
    public int? SurfaceBoranium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(12)]
 | 
			
		||||
    public int? SurfaceGermanium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(13)]
 | 
			
		||||
    public int? MRIronium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(14)]
 | 
			
		||||
    public int? MRBoranium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(15)]
 | 
			
		||||
    public int? MRGermanium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(16)]
 | 
			
		||||
    public int? MCIronium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(17)]
 | 
			
		||||
    public int? MCBoranium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(18)]
 | 
			
		||||
    public int? MCGrmanium { get; set; }
 | 
			
		||||
    public int? MCGermanium { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(19)]
 | 
			
		||||
    public int? Resources { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? Gravity { get; set; }
 | 
			
		||||
 | 
			
		||||
    [CSV.Index(20)]
 | 
			
		||||
    public string CSVGravity {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && Decimal.TryParse(value[..^1], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                Gravity = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Gravity = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? Temperature { get; set; }
 | 
			
		||||
 | 
			
		||||
    [CSV.Index(21)]
 | 
			
		||||
    public string CSVTemperature {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                Temperature = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Temperature = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? Radiation { get; set; }
 | 
			
		||||
        
 | 
			
		||||
    [CSV.Index(22)]
 | 
			
		||||
    public string CSVRadiation {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                Radiation = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                Radiation = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? GravityOrig { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(20)]
 | 
			
		||||
    public string CSVGravityOrig {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && Decimal.TryParse(value[..^1], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                GravityOrig = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                GravityOrig = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }    
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? TemperatureOrig { get; set; }
 | 
			
		||||
            
 | 
			
		||||
    [CSV.Index(24)]
 | 
			
		||||
    public string CSVTemperatureOrig {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                TemperatureOrig = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                TemperatureOrig = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public decimal? RadiationOrig { get; set; }
 | 
			
		||||
        
 | 
			
		||||
    [CSV.Index(25)]
 | 
			
		||||
    public string CSVRadiationOrig {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 3
 | 
			
		||||
                && Decimal.TryParse(value[..^2], NumberStyles.Float, CultureInfo.InvariantCulture, out decimal result))
 | 
			
		||||
            {
 | 
			
		||||
                RadiationOrig = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                RadiationOrig = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    [CSV.Ignore()]
 | 
			
		||||
    public int? MaxTerraforming { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(26)]
 | 
			
		||||
    public string CSVMaxTerraforming {
 | 
			
		||||
        set {
 | 
			
		||||
            if (   value.Length >= 2
 | 
			
		||||
                && int.TryParse(value[..^1], out int result))
 | 
			
		||||
            {
 | 
			
		||||
                MaxTerraforming = result;
 | 
			
		||||
            } else {
 | 
			
		||||
                MaxTerraforming = null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(27)]
 | 
			
		||||
    public int? CapacityPercent { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(28)]
 | 
			
		||||
    public int? ScanRange { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(29)]
 | 
			
		||||
    public int? PenScanRange { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(30)]
 | 
			
		||||
    public int? Driver { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(31)]
 | 
			
		||||
    public int? DriverWarp { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(32)]
 | 
			
		||||
    public string? RouteTarget { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(33)]
 | 
			
		||||
    public int? GateRange { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(34)]
 | 
			
		||||
    public int? GateMass { get; set; }
 | 
			
		||||
    
 | 
			
		||||
    [CSV.Index(35)]
 | 
			
		||||
    public int? PctDamage { get; set; }
 | 
			
		||||
}
 | 
			
		||||
@@ -50,9 +50,11 @@ sealed class Program
 | 
			
		||||
        using (var reader = new StreamReader("/home/torben/goingth/GOINGTH.p1", System.Text.Encoding.Latin1))
 | 
			
		||||
        using (var csv = new CsvReader(reader, config))
 | 
			
		||||
        {
 | 
			
		||||
            List<Planet> records = csv.GetRecords<Planet>().ToList();
 | 
			
		||||
            foreach (Planet p in records)
 | 
			
		||||
            List<CSV.Planet> records = csv.GetRecords<CSV.Planet>().ToList();
 | 
			
		||||
            foreach (CSV.Planet csvp in records)
 | 
			
		||||
            {
 | 
			
		||||
                Planet p = new Planet{ Name = csvp.Name };
 | 
			
		||||
                csvp.UpdateDbPlanet(p);
 | 
			
		||||
                db.Add(p);
 | 
			
		||||
            }
 | 
			
		||||
            db.SaveChanges();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user