public static EDDNJournalScan From(XScanHeader jscanstruct, int scanid, BodyScan scan, string jsonextra) { return(new EDDNJournalScan { BodyScanId = scanid, ScanData = scanid == 0 ? scan : null, GatewayTimestamp = jscanstruct.GatewayTimestamp, ScanTimestampSeconds = jscanstruct.ScanTimestampSeconds, SoftwareVersionId = jscanstruct.SoftwareVersionId, DistanceFromArrivalLS = jscanstruct.DistanceFromArrivalLS, ScanTypeId = jscanstruct.ScanTypeId == 0 ? (byte?)null : jscanstruct.ScanTypeId, HasBodyID = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasBodyID), HasParents = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasParents), HasSystemAddress = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasSystemAddress), HasAxialTilt = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasAxialTilt), HasComposition = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasComposition), HasLuminosity = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasLuminosity), IsBasicScan = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.IsBasicScan), IsMaterialsDict = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.IsMaterialsDict), HasAtmosphereComposition = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasAtmosphereComposition), HasAtmosphereType = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.HasAtmosphereType), IsPos3SigFig = jscanstruct.Flags.HasFlag(XScanHeader.ScanFlags.IsPos3SigFig), JsonExtra = jsonextra }); }
public void Update(XModels.XScanClass scandata, SystemBody dbbody, BodyScan dbscan) { if (dbbody.BodyID == -1 && scandata.Body.BodyID >= 0) { short bodyid = scandata.Body.BodyID; paramUpdateBodyId.Value = dbbody.Id; paramUpdateBodyBodyID.Value = bodyid; cmdUpdateBody.ExecuteNonQuery(); dbbody.BodyID = bodyid; } if ((dbscan.ParentSetId == null && scandata.Scan.ParentSetId != 0) || (dbscan.AxialTilt == null && scandata.Scan.HasAxialTilt) || (dbscan.ReserveLevelId == null && scandata.Scan.ReserveLevelId != 0) || (dbscan.TidalLock == null && scandata.Scan.HasTidalLock)) { paramUpdateScanId.Value = dbscan.Id; paramUpdateScanAxialTilt.Value = (object)dbscan.AxialTilt ?? (scandata.Scan.HasAxialTilt ? (object)scandata.Scan.AxialTilt : DBNull.Value); paramUpdateScanReserveLevel.Value = (object)dbscan.ReserveLevelId ?? (scandata.Scan.ReserveLevelId != 0 ? (object)scandata.Scan.ReserveLevelId : DBNull.Value); paramUpdateScanTidalLock.Value = (object)dbscan.TidalLock ?? (scandata.Scan.HasTidalLock ? (object)scandata.Scan.TidalLock : DBNull.Value); paramUpdateScanParents.Value = (object)dbscan.ParentSetId ?? (scandata.Scan.HasParents ? (object)scandata.Parents.DbId : DBNull.Value); cmdUpdateScan.ExecuteNonQuery(); dbscan.AxialTilt = dbscan.AxialTilt ?? (scandata.Scan.HasAxialTilt ? (float?)scandata.Scan.AxialTilt : null); dbscan.TidalLock = dbscan.TidalLock ?? (scandata.Scan.HasTidalLock ? (bool?)scandata.Scan.TidalLock : null); dbscan.ReserveLevelId = dbscan.ReserveLevelId ?? (scandata.Scan.ReserveLevelId != 0 ? (byte?)scandata.Scan.ReserveLevelId : null); dbscan.ParentSetId = dbscan.ParentSetId ?? (scandata.Scan.ParentSetId != 0 ? (byte?)scandata.Scan.ParentSetId : null); } if (dbscan is BodyScanPlanet pscan && scandata.Scan.IsPlanet) { if ((!pscan.HasComposition && scandata.Planet.HasComposition) || (pscan.VolcanismId == null && scandata.Planet.VolcanismId != 0) || (pscan.IsLandable == null && scandata.Planet.HasLandable) || (pscan.TerraformStateId == null && scandata.Planet.TerraformStateId != 0)) { pscan.CompositionMetal = pscan.HasComposition ? pscan.CompositionMetal : scandata.Planet.CompositionMetal; pscan.CompositionRock = pscan.HasComposition ? pscan.CompositionRock : scandata.Planet.CompositionRock; pscan.CompositionIce = pscan.HasComposition ? pscan.CompositionIce : scandata.Planet.CompositionIce; pscan.HasComposition |= scandata.Planet.HasComposition; pscan.IsLandable = pscan.IsLandable ?? (scandata.Planet.HasLandable ? (bool?)scandata.Planet.IsLandable : null); pscan.TerraformStateId = pscan.TerraformStateId ?? (scandata.Planet.TerraformStateId != 0 ? (byte?)scandata.Planet.TerraformStateId : null); pscan.VolcanismMajor = pscan.VolcanismId != null ? pscan.VolcanismMajor : scandata.Planet.VolcanismMajor; pscan.VolcanismMinor = pscan.VolcanismId != null ? pscan.VolcanismMinor : scandata.Planet.VolcanismMinor; pscan.VolcanismId = pscan.VolcanismId ?? (scandata.Planet.VolcanismId != 0 ? (byte?)scandata.Planet.VolcanismId : null); paramUpdatePlanetScanId.Value = pscan.Id; paramUpdatePlanetComposIce.Value = pscan.CompositionIce; paramUpdatePlanetComposRock.Value = pscan.CompositionRock; paramUpdatePlanetComposMetal.Value = pscan.CompositionMetal; paramUpdatePlanetHasCompos.Value = pscan.HasComposition; paramUpdatePlanetLandable.Value = (object)pscan.IsLandable ?? DBNull.Value; paramUpdatePlanetTerraformState.Value = (object)pscan.TerraformStateId ?? DBNull.Value; paramUpdatePlanetVolcanismId.Value = (object)pscan.VolcanismId ?? DBNull.Value; paramUpdatePlanetVolcanismMajor.Value = pscan.VolcanismMajor; paramUpdatePlanetVolcanismMinor.Value = pscan.VolcanismMinor; cmdUpdatePlanet.ExecuteNonQuery(); } if (pscan.Atmosphere == null) { if (scandata.Planet.HasAtmosphere) { pscan.Atmosphere = new BodyScanAtmosphere(scandata.Atmosphere, pscan.Id); paramAtmosScanId.Value = pscan.Atmosphere.Id; paramSurfacePressure.Value = pscan.Atmosphere.SurfacePressure; paramAtmosComp1Id.Value = (object)pscan.Atmosphere.AtmosphereComponent1Id ?? DBNull.Value; paramAtmosComp1Amt.Value = pscan.Atmosphere.AtmosphereComponent1Amt; paramAtmosComp2Id.Value = (object)pscan.Atmosphere.AtmosphereComponent2Id ?? DBNull.Value; paramAtmosComp2Amt.Value = pscan.Atmosphere.AtmosphereComponent2Amt; paramAtmosComp3Id.Value = (object)pscan.Atmosphere.AtmosphereComponent3Id ?? DBNull.Value; paramAtmosComp3Amt.Value = pscan.Atmosphere.AtmosphereComponent3Amt; paramAtmosNameId.Value = pscan.Atmosphere.AtmosphereId; paramAtmosTypeId.Value = (object)pscan.Atmosphere.AtmosphereTypeId ?? DBNull.Value; paramAtmosHot.Value = pscan.Atmosphere.AtmosphereHot; paramAtmosThin.Value = pscan.Atmosphere.AtmosphereThin; paramAtmosThick.Value = pscan.Atmosphere.AtmosphereThick; cmdInsertAtmos.ExecuteNonQuery(); } } else if ((pscan.Atmosphere.AtmosphereTypeId == null && scandata.Atmosphere.AtmosphereTypeId != 0) || (pscan.Atmosphere.AtmosphereComponent1Id == null && scandata.Atmosphere.Component1Id != 0)) { pscan.Atmosphere.AtmosphereTypeId = pscan.Atmosphere.AtmosphereTypeId ?? (scandata.Atmosphere.AtmosphereTypeId != 0 ? (byte?)scandata.Atmosphere.AtmosphereTypeId : null); if (pscan.Atmosphere.AtmosphereComponent1Id == null && scandata.Atmosphere.Component1Id != 0) { pscan.Atmosphere.AtmosphereComponent1Id = scandata.Atmosphere.Component1Id != 0 ? (byte?)scandata.Atmosphere.Component1Id : null; pscan.Atmosphere.AtmosphereComponent1Amt = scandata.Atmosphere.Component1Amt; pscan.Atmosphere.AtmosphereComponent2Id = scandata.Atmosphere.Component2Id != 0 ? (byte?)scandata.Atmosphere.Component2Id : null; pscan.Atmosphere.AtmosphereComponent2Amt = scandata.Atmosphere.Component2Amt; pscan.Atmosphere.AtmosphereComponent3Id = scandata.Atmosphere.Component3Id != 0 ? (byte?)scandata.Atmosphere.Component3Id : null; pscan.Atmosphere.AtmosphereComponent3Amt = scandata.Atmosphere.Component3Amt; } paramAtmosUpdateScanId.Value = pscan.Atmosphere.Id; paramAtmosUpdateTypeId.Value = (object)pscan.Atmosphere.AtmosphereTypeId ?? DBNull.Value; paramAtmosUpdateComp1Id.Value = (object)pscan.Atmosphere.AtmosphereComponent1Id ?? DBNull.Value; paramAtmosUpdateComp1Amt.Value = pscan.Atmosphere.AtmosphereComponent1Amt; paramAtmosUpdateComp2Id.Value = (object)pscan.Atmosphere.AtmosphereComponent2Id ?? DBNull.Value; paramAtmosUpdateComp2Amt.Value = pscan.Atmosphere.AtmosphereComponent2Amt; paramAtmosUpdateComp3Id.Value = (object)pscan.Atmosphere.AtmosphereComponent3Id ?? DBNull.Value; paramAtmosUpdateComp3Amt.Value = pscan.Atmosphere.AtmosphereComponent3Amt; cmdUpdateAtmos.ExecuteNonQuery(); } if (pscan.Materials == null && scandata.Planet.HasMaterials) { pscan.Materials = new BodyScanMaterials(scandata.Materials, pscan.Id); paramMatsId.Value = pscan.Materials.Id; paramMatsCarbon.Value = pscan.Materials.MaterialCarbon; paramMatsIron.Value = pscan.Materials.MaterialIron; paramMatsNickel.Value = pscan.Materials.MaterialNickel; paramMatsPhosphorus.Value = pscan.Materials.MaterialPhosphorus; paramMatsSulphur.Value = pscan.Materials.MaterialSulphur; paramMat1Id.Value = pscan.Materials.Material1Id; paramMat1Amt.Value = pscan.Materials.Material1Amt; paramMat2Id.Value = pscan.Materials.Material2Id; paramMat2Amt.Value = pscan.Materials.Material2Amt; paramMat3Id.Value = pscan.Materials.Material3Id; paramMat3Amt.Value = pscan.Materials.Material3Amt; paramMat4Id.Value = pscan.Materials.Material4Id; paramMat4Amt.Value = pscan.Materials.Material4Amt; paramMat5Id.Value = pscan.Materials.Material5Id; paramMat5Amt.Value = pscan.Materials.Material5Amt; paramMat6Id.Value = pscan.Materials.Material6Id; paramMat6Amt.Value = pscan.Materials.Material6Amt; cmdInsertMats.ExecuteNonQuery(); } }
public void GetDifferingProps(XScanMaterials scan, List <BodyScan.CompareResult> diffs, BodyScan bodyscan) { BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "MaterialCarbon", this.MaterialCarbon, scan.MaterialCarbon); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "MaterialIron", this.MaterialIron, scan.MaterialIron); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "MaterialNickel", this.MaterialNickel, scan.MaterialNickel); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "MaterialPhosphorus", this.MaterialPhosphorus, scan.MaterialPhosphorus); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "MaterialSulphur", this.MaterialSulphur, scan.MaterialSulphur); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material1Id", this.Material1Id, scan.Material1Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material1Amt", this.Material1Amt, scan.Material1Amt); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material2Id", this.Material2Id, scan.Material2Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material2Amt", this.Material2Amt, scan.Material2Amt); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material3Id", this.Material3Id, scan.Material3Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material3Amt", this.Material3Amt, scan.Material3Amt); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material4Id", this.Material4Id, scan.Material4Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material4Amt", this.Material4Amt, scan.Material4Amt); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material5Id", this.Material5Id, scan.Material5Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material5Amt", this.Material5Amt, scan.Material5Amt); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material6Id", this.Material6Id, scan.Material6Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Material6Amt", this.Material6Amt, scan.Material6Amt); }
public void GetDifferingProps(XModels.XScanRing scan, List <BodyScan.CompareResult> diffs, BodyScan bscan) { BodyScan.CompareResult.AddIfUnequal(diffs, bscan, $"Rings[{RingNum}].ClassId", this.ClassId, scan.ClassId); BodyScan.CompareResult.AddIfUnequal(diffs, bscan, $"Rings[{RingNum}].InnerRad", this.InnerRad, scan.InnerRad); BodyScan.CompareResult.AddIfUnequal(diffs, bscan, $"Rings[{RingNum}].OuterRad", this.OuterRad, scan.OuterRad); BodyScan.CompareResult.AddIfUnequal(diffs, bscan, $"Rings[{RingNum}].MassMT", this.MassMT, scan.MassMT); BodyScan.CompareResult.AddIfUnequal(diffs, bscan, $"Rings[{RingNum}].IsBelt", this.IsBelt, scan.IsBelt); }
public void Insert(BodyScan scan) { if (cmdScan == null) { Context.Set <BodyScan>().Add(scan); Context.SaveChanges(); } else { cmdScan.Transaction = Context.Database.CurrentTransaction?.UnderlyingTransaction; cmdRing.Transaction = Context.Database.CurrentTransaction?.UnderlyingTransaction; cmdStar.Transaction = Context.Database.CurrentTransaction?.UnderlyingTransaction; cmdPlanet.Transaction = Context.Database.CurrentTransaction?.UnderlyingTransaction; cmdMats.Transaction = Context.Database.CurrentTransaction?.UnderlyingTransaction; cmdAtmos.Transaction = Context.Database.CurrentTransaction?.UnderlyingTransaction; paramSystemBodyId.Value = scan.SystemBodyId; paramParentSetId.Value = (object)scan.ParentSetId ?? DBNull.Value; paramScanBaseHash.Value = scan.ScanBaseHash; paramAxialTilt.Value = (object)scan.AxialTilt ?? DBNull.Value; paramEccentricity.Value = scan.Eccentricity; paramOrbitalInclination.Value = scan.OrbitalInclination; paramPeriapsis.Value = scan.Periapsis; paramSemiMajorAxis.Value = scan.SemiMajorAxis; paramOrbitalPeriod.Value = scan.OrbitalPeriod; paramRadius.Value = scan.Radius; paramRotationPeriod.Value = scan.RotationPeriod; paramSurfaceTemperature.Value = scan.SurfaceTemperature; paramHasOrbit.Value = scan.HasOrbit; paramTidalLock.Value = (object)scan.TidalLock ?? DBNull.Value; paramReserveLevel.Value = (object)scan.ReserveLevelId ?? DBNull.Value; scan.Id = execscancmd(cmdScan); if (scan.Rings != null) { foreach (var ring in scan.Rings) { ring.ScanId = scan.Id; paramRingScanId.Value = ring.ScanId; paramRingNum.Value = ring.RingNum; paramRingClass.Value = ring.ClassId; paramRingInnerRad.Value = ring.InnerRad; paramRingOuterRad.Value = ring.OuterRad; paramRingMassMT.Value = ring.MassMT; paramRingIsBelt.Value = ring.IsBelt; cmdRing.ExecuteNonQuery(); if (ring.CustomName != null && ring.CustomName.Name != null) { ring.CustomName.ScanId = ring.ScanId; ring.CustomName.RingNum = ring.RingNum; paramRingNameScanId.Value = ring.CustomName.ScanId; paramRingNameNum.Value = ring.CustomName.RingNum; paramRingName.Value = ring.Name; cmdRingName.ExecuteNonQuery(); } } } if (scan is BodyScanStar star) { paramStarId.Value = star.Id; paramAbsoluteMagnitude.Value = star.AbsoluteMagnitude; paramStellarMass.Value = star.StellarMass; paramAgeMY.Value = star.Age_MY; paramStarTypeId.Value = star.StarTypeId; paramLuminosityId.Value = (object)star.LuminosityId ?? DBNull.Value; cmdStar.ExecuteNonQuery(); } else if (scan is BodyScanPlanet planet) { paramPlanetId.Value = planet.Id; paramPlanetClass.Value = planet.PlanetClassId; paramCompositionMetal.Value = planet.CompositionMetal; paramCompositionRock.Value = planet.CompositionRock; paramCompositionIce.Value = planet.CompositionIce; paramPlanetHasComposition.Value = planet.HasComposition; paramPlanetMassEM.Value = planet.MassEM; paramSurfaceGravity.Value = planet.SurfaceGravity; paramVolcanismId.Value = (object)planet.VolcanismId ?? DBNull.Value; paramVolcanismMinor.Value = planet.VolcanismMinor; paramVolcanismMajor.Value = planet.VolcanismMajor; paramIsLandable.Value = (object)planet.IsLandable ?? DBNull.Value; cmdPlanet.ExecuteNonQuery(); if (planet.Materials != null) { planet.Materials.Id = scan.Id; paramMatsId.Value = planet.Materials.Id; paramMatsCarbon.Value = planet.Materials.MaterialCarbon; paramMatsIron.Value = planet.Materials.MaterialIron; paramMatsNickel.Value = planet.Materials.MaterialNickel; paramMatsPhosphorus.Value = planet.Materials.MaterialPhosphorus; paramMatsSulphur.Value = planet.Materials.MaterialSulphur; paramMat1Id.Value = planet.Materials.Material1Id; paramMat1Amt.Value = planet.Materials.Material1Amt; paramMat2Id.Value = planet.Materials.Material2Id; paramMat2Amt.Value = planet.Materials.Material2Amt; paramMat3Id.Value = planet.Materials.Material3Id; paramMat3Amt.Value = planet.Materials.Material3Amt; paramMat4Id.Value = planet.Materials.Material4Id; paramMat4Amt.Value = planet.Materials.Material4Amt; paramMat5Id.Value = planet.Materials.Material5Id; paramMat5Amt.Value = planet.Materials.Material5Amt; paramMat6Id.Value = planet.Materials.Material6Id; paramMat6Amt.Value = planet.Materials.Material6Amt; cmdMats.ExecuteNonQuery(); } if (planet.Atmosphere != null) { planet.Atmosphere.Id = scan.Id; paramAtmosScanId.Value = planet.Atmosphere.Id; paramSurfacePressure.Value = planet.Atmosphere.SurfacePressure; paramAtmosComp1Id.Value = (object)planet.Atmosphere.AtmosphereComponent1Id ?? DBNull.Value; paramAtmosComp1Amt.Value = planet.Atmosphere.AtmosphereComponent1Amt; paramAtmosComp2Id.Value = (object)planet.Atmosphere.AtmosphereComponent2Id ?? DBNull.Value; paramAtmosComp2Amt.Value = planet.Atmosphere.AtmosphereComponent2Amt; paramAtmosComp3Id.Value = (object)planet.Atmosphere.AtmosphereComponent3Id ?? DBNull.Value; paramAtmosComp3Amt.Value = planet.Atmosphere.AtmosphereComponent3Amt; paramAtmosNameId.Value = planet.Atmosphere.AtmosphereId; paramAtmosTypeId.Value = (object)planet.Atmosphere.AtmosphereTypeId ?? DBNull.Value; paramAtmosHot.Value = planet.Atmosphere.AtmosphereHot; paramAtmosThin.Value = planet.Atmosphere.AtmosphereThin; paramAtmosThick.Value = planet.Atmosphere.AtmosphereThick; cmdAtmos.ExecuteNonQuery(); } } } }
public void GetDifferingProps(XModels.XScanAtmosphere scan, List <BodyScan.CompareResult> diffs, BodyScan bodyscan) { BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "SurfacePressure", this.SurfacePressure, scan.SurfacePressure); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "Atmosphere", this.Atmosphere, scan.Atmosphere); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereHot", this.AtmosphereHot, scan.Flags.HasFlag(XScanAtmosphere.ScanFlags.AtmosphereHot)); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereThin", this.AtmosphereThin, scan.Flags.HasFlag(XScanAtmosphere.ScanFlags.AtmosphereThin)); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereThick", this.AtmosphereThick, scan.Flags.HasFlag(XScanAtmosphere.ScanFlags.AtmosphereThick)); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereTypeId", this.AtmosphereTypeId, scan.AtmosphereTypeId == 0 ? null : (byte?)scan.AtmosphereTypeId); if (this.AtmosphereComponent1Id != null && scan.Component1Id != 0) { BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereComponent1", false, this.AtmosphereComponent1Id, scan.Component1Id == 0 ? null : (byte?)scan.Component1Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereComponent2", false, this.AtmosphereComponent2Id, scan.Component2Id == 0 ? null : (byte?)scan.Component2Id); BodyScan.CompareResult.AddIfUnequal(diffs, bodyscan, "AtmosphereComponent3", false, this.AtmosphereComponent3Id, scan.Component3Id == 0 ? null : (byte?)scan.Component3Id); } }