public async Task TestITISPlantInfoProcessor() { var transformer = new ITISPlantInfoTransformer(); var itisData = ITISPlantInfoData(); var plantInfos = new List <PlantInfo>(); itisData.ForEach(i => plantInfos.AddRange(transformer.Transform(new List <TaxonomicUnit> { i }))); var originRepository = RepositoryMocks.GetStandardMockOriginRepository(new List <Stores.Origin>()); var locationRepository = RepositoryMocks.GetStandardMockLocationRepository(new List <Stores.Location>()); var lifeformRepository = RepositoryMocks.GetStandardMockLifeformRepository(new List <Stores.Lifeform>()); var plantInfoRepository = RepositoryMocks.GetStandardMockPlantInfoRepository(new List <Stores.PlantInfo>()); var plantLocationRepository = RepositoryMocks.GetStandardMockPlantLocationRepository(new List <Stores.PlantLocation>()); var synonymRepository = RepositoryMocks.GetStandardMockSynonymRepository(); var taxonRepository = RepositoryMocks.GetStandardMockTaxonRepository(new List <Stores.Taxon>()); var plantSynonymRepository = new Mock <IRepository <Stores.PlantSynonym> >(); var plantInfoIndex = SearchMocks.GetStandardMockPlantInfoIndex(); var lifeformIndex = SearchMocks.GetStandardMockLifeformIndex(); var locationService = new LocationService(locationRepository.Object); var originService = new OriginService(originRepository.Object, locationService); var lifeformService = new LifeformService(lifeformRepository.Object, lifeformIndex.Object); var plantInfoService = new PlantInfoService(plantInfoRepository.Object, plantLocationRepository.Object, plantInfoIndex.Object); var synonymService = new SynonymService(synonymRepository.Object); var taxonService = new TaxonService(taxonRepository.Object, synonymService); var processor = new PlantInfoProcessor(lifeformService, originService, plantInfoService, taxonService, locationService); await processor.InitializeOrigin(transformer.Origin); await processor.InitializeLifeforms(); await processor.InitializeTaxons(); var result = await processor.Process(plantInfos); result.Count(p => p.ScientificName == "Glandularia quadrangulata").Should().Be(1); result.Count(p => p.Taxon.Subfamily == null).Should().Be(5); result.Count(p => p.Taxon.Species == "cremersii").Should().Be(1); result.Count(p => p.Taxon.Form == "viridifolia").Should().Be(1); result.Count(p => p.Taxon.Subspecies == "purpurea").Should().Be(1); result.Count(p => p.Taxon.Variety == "graminea").Should().Be(1); result.Where(p => p.Locations != null).SelectMany(p => p.Locations).Count().Should().Be(3); result.Where(p => p.Locations != null).SelectMany(p => p.Locations).Count(l => l.Status == LocationStatus.Native).Should().Be(3); result.Select(p => p.Origin).DistinctBy(o => o.OriginId).Count().Should().Be(5); }
public async Task TestITISSynonymProcessor() { var transformer = new ITISSynonymTransformer(); var itisData = ITISSynonymData(); var synonyms = new List <Synonym>(); itisData.ForEach(i => synonyms.Add(transformer.Transform(i))); var originRepository = RepositoryMocks.GetStandardMockOriginRepository(new List <Stores.Origin>()); var locationRepository = RepositoryMocks.GetStandardMockLocationRepository(new List <Stores.Location>()); var synonymRepository = RepositoryMocks.GetStandardMockSynonymRepository(new List <Stores.Synonym>()); var taxonRepository = RepositoryMocks.GetStandardMockTaxonRepository(new List <Stores.Taxon>()); var locationService = new LocationService(locationRepository.Object); var originService = new OriginService(originRepository.Object, locationService); var synonymService = new SynonymService(synonymRepository.Object); var taxonService = new TaxonService(taxonRepository.Object, synonymService); var processor = new SynonymProcessor(synonymService, originService, taxonService); await processor.InitializeOrigin(transformer.Origin); await processor.InitializeTaxons(); var result = await processor.Process(synonyms); result.Count().Should().Be(16); result.Count(s => s.Taxon.Kingdom == "Plantae").Should().Be(1); result.Count(s => s.Language == "English").Should().Be(10); result.Count(s => s.DateUpdated.Year == 2003).Should().Be(3); result.Count(s => s.Rank == "Variety").Should().Be(2); result.Count(s => s.Taxon.Variety != null).Should().Be(2); result.Count(s => s.Taxon.Variety == "paludicola").Should().Be(1); result.Select(s => s.Origin).Count().Should().Be(16); }
//private async Task StoreAssessment(int id, FA4 doc, User user, bool notUpdateChangedBy, bool forceStore = false) //{ // //var dateTimeFormat = "yyyy-MM-dd HH:mm:ss"; // var now = DateTime.Now; // doc.LastUpdatedAt = now; // var assessment = _dbContext.Assessments.SingleOrDefault(x => x.Id == id); // if (!forceStore && (assessment.LockedForEditBy != null && assessment.LockedForEditBy != user.Brukernavn)) // { // throw new Exception("IKKE SKRIVETILGANG TIL DENNE VURDERINGEN - Låst av annen bruker"); // } // // check and update referenceUsages // var usedReferences = doc.References.Select(x => x.ReferenceId).ToArray(); // if (!forceStore && usedReferences.Any()) // { // bool ok = await _referenceService.SignalUsage(usedReferences, user.Id); // } // var curAss = JsonConvert.DeserializeObject<FA4>(assessment.Doc); // byte[] zipfile; // var fileName = "ArtskartData.zip"; // const string name = "Datagrunnlag fra Artskart"; // const string filetype = "application/zip"; // if (!forceStore && doc.ArtskartSistOverført != curAss.ArtskartSistOverført) // { // try // { // zipfile = await TaskHelper.TimeoutAfter(GetZipDataFromArtskart(doc), TimeSpan.FromSeconds(10)); // } // catch // { // // ok here // zipfile = Array.Empty<byte>(); // } // if (zipfile.Length > 0) // { // var attach = await _dbContext.Attachments.Where(x => // x.AssessmentId == assessment.Id && x.Name == name && x.Type == filetype && // x.FileName == fileName).FirstOrDefaultAsync(); // if (attach != null) // { // attach.File = zipfile; // attach.IsDeleted = false; // attach.Date = DateTime.Now; // attach.UserId = user.Id; // } // else // { // attach = new Attachment // { // AssessmentId = assessment.Id, // Date = DateTime.Now, // File = zipfile, // FileName = fileName, // Name = name, // Type = filetype, // UserId = user.Id // }; // _dbContext.Attachments.Add(attach); // } // } // } // var history = new AssessmentHistory() // { // Id = assessment.Id, // Doc = assessment.Doc, // HistoryAt = now // }; // _dbContext.AssessmentHistories.Add(history); // if (!notUpdateChangedBy) // { // doc.EvaluationStatus = "inprogress"; // doc.LastUpdatedOn = now; // doc.LastUpdatedBy = user.Brukernavn; // } // var assessmentString = Newtonsoft.Json.JsonConvert.SerializeObject(doc); // assessment.Doc = assessmentString; // await _dbContext.SaveChangesAsync().ConfigureAwait(false); //} //private static async Task<byte[]> GetZipDataFromArtskart(FA4 rlRodliste2019) //{ // // hent datasett fra artskart // var date = DateTime.Parse(rlRodliste2019.ArtskartSistOverført); // var kriterier = rlRodliste2019.ArtskartModel; // var apibase = // "https://artskart.artsdatabanken.no/PublicApi/api/listhelper/"; // var type = // kriterier.IncludeObjects == kriterier.IncludeObservations // ? "all" // : kriterier.IncludeObjects // ? "specimen" // : "observations"; // var region = // kriterier.IncludeNorge == kriterier.IncludeSvalbard // ? "all" // : kriterier.IncludeNorge // ? "fastland" // : "svalbard"; // var excludeGbif = // kriterier.ExcludeGbif ? "&sourcedatabases[]=-40,-211" : ""; // var queryparams = // $"&fromYear={kriterier.ObservationFromYear}&toYear={kriterier.ObservationToYear}&fromMonth={kriterier.FromMonth}&toMonth={kriterier.ToMonth}&type={type}®ion={region}{excludeGbif}"; // queryparams += $"&scientificNameId={rlRodliste2019.VurdertVitenskapeligNavnId}"; // if (!string.IsNullOrWhiteSpace(rlRodliste2019.ArtskartSelectionGeometry)) // { // queryparams += $"&geojsonPolygon="; // dynamic json = JsonConvert.DeserializeObject(rlRodliste2019.ArtskartSelectionGeometry); // dynamic coordinates = json.geometry.coordinates; // dynamic items = coordinates[0]; // foreach (dynamic item in items) // { // foreach (dynamic o in item) // { // string s = o.ToString(); // queryparams += s.Replace(",", ".") + ","; // } // } // queryparams = queryparams.Substring(0, queryparams.Length - 1); // } // if (!string.IsNullOrWhiteSpace(rlRodliste2019.ArtskartAdded)) // { // queryparams += $"&addPoints={rlRodliste2019.ArtskartAdded}"; // } // if (!string.IsNullOrWhiteSpace(rlRodliste2019.ArtskartRemoved)) // { // queryparams += $"&removePoints={rlRodliste2019.ArtskartRemoved}"; // } // var urlen = apibase + rlRodliste2019.TaxonId + "/downloadObservations/?" + queryparams; // using var client = new HttpClient(); // var zipfile = await client.GetByteArrayAsync(urlen); // return zipfile ; //} private static FA4 CreateNewAssessment(string expertgroup, string userName, int scientificNameId) { if (string.IsNullOrWhiteSpace(expertgroup)) { throw new ArgumentNullException(nameof(expertgroup)); } if (string.IsNullOrWhiteSpace(userName)) { throw new ArgumentNullException(nameof(userName)); } var vurderingscontext = expertgroup.Contains("Svalbard") ? "S" : "N"; var vurderingsår = 2021; var createdby = "createdbyloading"; var ts = new Prod.Api.Services.TaxonService(); var titask = ts.GetTaxonInfoAsync(scientificNameId); var ti = titask.GetAwaiter().GetResult(); var(hierarcy, rank) = TaxonService.GetFullPathScientificName(ti); if (scientificNameId != ti.ValidScientificNameId) { throw new ArgumentException("supplied scientificNameId is not ValidScientificNameId"); } var rl = new FA4(); //rl.Ekspertgruppe = expertgroup; //rl.VurderingsContext = vurderingscontext; //rl.Slettet = false; //rl.LastUpdatedOn = DateTime.Now; //rl.LastUpdatedBy = userName; //rl.Vurderingsår = vurderingsår; //rl.SistVurdertAr = vurderingsår; //rl.EvaluationStatus = createdby; //rl.OverordnetKlassifiseringGruppeKode = "rodlisteVurdertArt"; //rl.RodlisteVurdertArt = "etablertBestandINorge"; //rl.VurdertVitenskapeligNavn = ti.ValidScientificName; //rl.VurdertVitenskapeligNavnId = ti.ValidScientificNameId; //rl.VurdertVitenskapeligNavnAutor = ti.ValidScientificNameAuthorship; //rl.VurdertVitenskapeligNavnHierarki = hierarcy; //rl.TaxonId = ti.TaxonId; //rl.TaxonRank = rank; //rl.PopularName = ti.PrefferedPopularname; ////ekstra standardverdier //rl.ImportInfo.VurderingsId2015 = string.Empty; //rl.AndelNåværendeBestand = "-"; //rl.A1OpphørtOgReversibel = "-"; //rl.A2Forutgående10År = "-"; //rl.A3Kommende10År = "-"; //rl.A4Intervall10År = "-"; //rl.BA2FåLokaliteterProdukt = ""; //rl.B1BeregnetAreal = ""; //rl.B1UtbredelsesområdeKode = "-"; //rl.B2ForekomstarealKode = "-"; //rl.BA1KraftigFragmenteringKode = "-"; //rl.BA2FåLokaliteterKode = "-"; //rl.CVurdertpopulasjonsstørrelseProdukt = ""; //rl.C1PågåendePopulasjonsreduksjonKode = "-"; //rl.C2A1PågåendePopulasjonsreduksjonKode = "-"; //rl.D1FåReproduserendeIndividKode = "-"; //rl.D2MegetBegrensetForekomstarealKode = "-"; //rl.EKvantitativUtryddingsmodellKode = "-"; ////gudene vet om disse har betydning: //rl.WktPolygon = ""; //rl.SistVurdertAr = 2021; //rl.C2A2PågåendePopulasjonsreduksjonKode = "-"; //rl.C2BPågåendePopulasjonsreduksjonKode = "-"; //rl.CPopulasjonsstørrelseKode = "-"; //rl.B2ForekomstarealProdukt = ""; //rl.B1UtbredelsesområdeProdukt = ""; //rl.OppsummeringAKriterier = ""; //rl.OppsummeringBKriterier = ""; //rl.OppsummeringCKriterier = ""; //rl.OppsummeringDKriterier = ""; //rl.OppsummeringEKriterier = ""; //rl.B2BeregnetAreal = ""; //if (rl.Ekspertgruppe == "Leddormer") // special case - ville ha LC som standard //{ // rl.C2A2SannhetsverdiKode = "1"; // rl.OverordnetKlassifiseringGruppeKode = "sikkerBestandLC"; // rl.Kategori = "LC"; //} //AddFylkeslister(rl); //rl.NaturtypeHovedenhet = new List<string>(); //SetArtskartImportSettings(rl); return(rl); }
/// <summary> /// Close all clients (connections) to web services. /// </summary> public static void CloseClients() { if (AnalysisService.IsNotNull()) { AnalysisService.CloseClients(); } if (GeoReferenceService.IsNotNull()) { GeoReferenceService.CloseClients(); } if (KulService.IsNotNull()) { KulService.CloseClients(); } if (MvmService.IsNotNull()) { MvmService.CloseClients(); } if (NorsService.IsNotNull()) { NorsService.CloseClients(); } if (NorwayTaxonService.IsNotNull()) { NorwayTaxonService.CloseClients(); } if (PESINameService.IsNotNull()) { PESINameService.CloseClients(); } if (PictureService.IsNotNull()) { PictureService.CloseClients(); } if (ReferenceService.IsNotNull()) { ReferenceService.CloseClients(); } if (SersService.IsNotNull()) { SersService.CloseClients(); } if (SpeciesObservationHarvestService.IsNotNull()) { SpeciesObservationHarvestService.CloseClients(); } if (SwedishSpeciesObservationService.IsNotNull()) { SwedishSpeciesObservationService.CloseClients(); } if (SwedishSpeciesObservationSOAPService.IsNotNull()) { SwedishSpeciesObservationSOAPService.CloseClients(); } if (TaxonAttributeService.IsNotNull()) { TaxonAttributeService.CloseClients(); } if (TaxonService.IsNotNull()) { TaxonService.CloseClients(); } if (DyntaxaInternalService.IsNotNull()) { DyntaxaInternalService.CloseClients(); } if (UserService.IsNotNull()) { UserService.CloseClients(); } if (WramService.IsNotNull()) { WramService.CloseClients(); } }