public int InsertIdentificationUnit(IdentificationUnit iu, IEnumerable<IdentificationUnitAnalysis> analyses, UserCredentials login) { using (var db = login.GetConnection()) using (var t = db.GetTransaction()) { db.Insert(iu); db.Insert(iu.GetIdentification(login)); db.Insert(iu.GetGeoAnalysis(login)); var geoString = SerializeLocalization(iu.Latitude, iu.Longitude, iu.Altitude); if (!string.IsNullOrWhiteSpace(geoString)) { db.Execute("UPDATE [dbo].[IdentificationUnitGeoAnalysis] SET Geography=GEOGRAPHY::STGeomFromText(@0, 4326) WHERE CollectionSpecimenID=@1 AND IdentificationUnitID=@2", geoString, iu.CollectionSpecimenID, iu.CollectionUnitID); } if (analyses != null) foreach (var a in analyses) { a.CollectionUnitID = iu.CollectionUnitID; a.CollectionSpecimenID = iu.CollectionSpecimenID; db.Insert(a); } t.Complete(); return iu.CollectionUnitID; } }
public IObservable<Unit> InsertIdentificationUnit(IdentificationUnit iu, IEnumerable<IdentificationUnitAnalysis> analyses) { var res = InsertIUCompleted.FilterByUserState(iu) .PipeErrors() .Select(p => p.Result) .StoreMapping(iu, Mapping) .ReplayOnlyFirst(); var svcLocs = new ObservableCollection<Svc.IdentificationUnitAnalysis>(analyses.Select(l => l.ToServiceObject())); _svc.InsertIdentificationUnitAsync(iu.ToServiceObject(Mapping), svcLocs, this.GetCreds(), iu); return res; }
private void AddUnitExternalInformation(IdentificationUnit iu, Diversity db) { var id = db.SingleOrDefault<Identification>("WHERE [CollectionSpecimenID]=@0 AND [IdentificationUnitID]=@1", iu.CollectionSpecimenID, iu.CollectionUnitID); if (id != null) { iu.IdentificationUri = id.NameURI; iu.LastIdentificationCache = id.TaxonomicName; iu.Qualification = id.IdentificationQualifier; iu.AnalysisDate = (id.IdentificationYear.HasValue && id.IdentificationMonth.HasValue && id.IdentificationDay.HasValue) ? new DateTime(id.IdentificationYear.Value, id.IdentificationMonth.Value, id.IdentificationDay.Value, 0, 0, 0) : DateTime.Now; } iu.Altitude = db.ExecuteScalar<double?>(string.Format("SELECT [dbo].[DiversityMobile_IdentificationUnitAltitude] ( {0} )", iu.CollectionUnitID)); iu.Latitude = db.ExecuteScalar<double?>(string.Format("SELECT [dbo].[DiversityMobile_IdentificationUnitLatitude] ( {0} )", iu.CollectionUnitID)); iu.Longitude = db.ExecuteScalar<double?>(string.Format("SELECT [dbo].[DiversityMobile_IdentificationUnitLongitude] ( {0} )", iu.CollectionUnitID)); }
public int InsertIdentificationUnit(IdentificationUnit iu, IEnumerable<IdentificationUnitAnalysis> analyses, UserCredentials login) { using (var db = login.GetConnection()) using (var t = db.GetTransaction()) { db.Insert(iu); db.Insert(iu.GetIdentification(login)); db.Insert(iu.GetGeoAnalysis(login)); if (analyses != null) foreach (var a in analyses) { a.CollectionUnitID = iu.CollectionUnitID; a.CollectionSpecimenID = iu.CollectionSpecimenID; db.Insert(a); } t.Complete(); return iu.CollectionUnitID; } }
internal static IQueryable<IdentificationUnitAnalysis> Analyses(IdentificationUnit iu, DiversityDataContext ctx) { return from a in ctx.IdentificationUnitAnalyses where a.UnitID == iu.UnitID select a; }
internal static IQueryable<IdentificationUnit> SubUnits(IdentificationUnit u, DiversityDataContext ctx) { return from iu in ctx.IdentificationUnits where iu.RelatedUnitID == u.UnitID select iu; }
private void AddUnitExternalInformation(IdentificationUnit iu, Diversity db) { var id = db.SingleOrDefault<Identification>("WHERE [CollectionSpecimenID]=@0 AND [IdentificationUnitID]=@1", iu.CollectionSpecimenID, iu.CollectionUnitID); if (id != null) { iu.IdentificationUri = id.NameURI; iu.LastIdentificationCache = id.TaxonomicName; iu.Qualification = id.IdentificationQualifier; iu.AnalysisDate = (id.IdentificationYear.HasValue && id.IdentificationMonth.HasValue && id.IdentificationDay.HasValue) ? new DateTime(id.IdentificationYear.Value, id.IdentificationMonth.Value, id.IdentificationDay.Value, 0, 0, 0) : DateTime.Now; } AddLocalization(iu, db); }
private void AddLocalization(IdentificationUnit iu, Diversity db) { // The decimal -> double dance ensures the coordinates round trip correctly iu.Altitude = DecimalToDouble(db.SingleOrDefault<decimal?>("SELECT CAST([Geography].Z AS DECIMAL(25, 20)) FROM [IdentificationUnitGeoAnalysis] WHERE [CollectionSpecimenID]=@0 AND [IdentificationUnitID]=@1", iu.CollectionSpecimenID, iu.CollectionUnitID)); var lat = db.SingleOrDefault<decimal?>("SELECT CAST([Geography].Lat AS DECIMAL(25, 20)) FROM [IdentificationUnitGeoAnalysis] WHERE [CollectionSpecimenID]=@0 AND [IdentificationUnitID]=@1", iu.CollectionSpecimenID, iu.CollectionUnitID); iu.Latitude = DecimalToDouble(lat); var lon = db.SingleOrDefault<decimal?>("SELECT CAST([Geography].Long AS DECIMAL(25, 20)) FROM [IdentificationUnitGeoAnalysis] WHERE [CollectionSpecimenID]=@0 AND [IdentificationUnitID]=@1", iu.CollectionSpecimenID, iu.CollectionUnitID); iu.Longitude = DecimalToDouble(lon); }