/// <summary> /// Converts a WebDyntaxaRevisionSpeciesFact to a DyntaxaRevisionSpeciesFact. /// </summary> /// <param name="userContext">The user context.</param> /// <param name="webDyntaxaRevisionSpeciesFact">The web dyntaxa revision species fact.</param> /// <returns>A converted DyntaxaRevisionSpeciesFact.</returns> private DyntaxaRevisionSpeciesFact GetDyntaxaRevisionSpeciesFact(IUserContext userContext, WebDyntaxaRevisionSpeciesFact webDyntaxaRevisionSpeciesFact) { DyntaxaRevisionSpeciesFact speciesFact = null; if (webDyntaxaRevisionSpeciesFact.IsNotNull()) { speciesFact = new DyntaxaRevisionSpeciesFact(); UpdateDyntaxaRevisionSpeciesFact(userContext, speciesFact, webDyntaxaRevisionSpeciesFact); } return(speciesFact); }
/// <summary> /// Creates the dyntaxa revision species fact. /// </summary> /// <param name="userContext">The user context.</param> /// <param name="speciesFact">The species fact.</param> /// <returns>The created Dyntaxa revision species fact.</returns> public virtual DyntaxaRevisionSpeciesFact CreateDyntaxaRevisionSpeciesFact( IUserContext userContext, DyntaxaRevisionSpeciesFact speciesFact) { WebDyntaxaRevisionSpeciesFact webSpeciesFact; CheckTransaction(userContext); webSpeciesFact = WebServiceProxy.DyntaxaInternalService.CreateDyntaxaRevisionSpeciesFact( GetClientInformation(userContext), GetSpeciesFact(speciesFact)); UpdateDyntaxaRevisionSpeciesFact(userContext, speciesFact, webSpeciesFact); return(speciesFact); }
/// <summary> /// Convert a DyntaxaRevisionSpeciesFact instance to a WebDyntaxaRevisionSpeciesFact instance. /// </summary> /// <param name="speciesFact">A DyntaxaRevisionSpeciesFact object.</param> /// <returns>A WebDyntaxaRevisionSpeciesFact object.</returns> private WebDyntaxaRevisionSpeciesFact GetSpeciesFact(DyntaxaRevisionSpeciesFact speciesFact) { WebDyntaxaRevisionSpeciesFact webSpeciesFact; webSpeciesFact = new WebDyntaxaRevisionSpeciesFact(); if (speciesFact.ChangedInRevisionEventId.HasValue) { webSpeciesFact.ChangedInRevisionEventId = speciesFact.ChangedInRevisionEventId.Value; webSpeciesFact.IsChangedInRevisionEventIdSpecified = true; } else { webSpeciesFact.IsChangedInRevisionEventIdSpecified = false; } if (speciesFact.RevisionEventId.HasValue) { webSpeciesFact.RevisionEventId = speciesFact.RevisionEventId.Value; webSpeciesFact.IsRevisionEventIdSpecified = true; } else { webSpeciesFact.IsRevisionEventIdSpecified = false; } webSpeciesFact.CreatedBy = speciesFact.CreatedBy; webSpeciesFact.CreatedDate = speciesFact.CreatedDate; webSpeciesFact.Description = speciesFact.Description; webSpeciesFact.FactorId = speciesFact.FactorId; webSpeciesFact.Id = speciesFact.Id; webSpeciesFact.IsPublished = speciesFact.IsPublished; webSpeciesFact.ModifiedBy = speciesFact.ModifiedBy; webSpeciesFact.ModifiedDate = speciesFact.ModifiedDate; webSpeciesFact.QualityId = speciesFact.QualityId; webSpeciesFact.ReferenceId = speciesFact.ReferenceId; webSpeciesFact.StatusId = speciesFact.StatusId; webSpeciesFact.TaxonId = speciesFact.TaxonId; webSpeciesFact.RevisionId = speciesFact.RevisionId; webSpeciesFact.SpeciesFactExists = speciesFact.SpeciesFactExists; webSpeciesFact.OriginalStatusId = speciesFact.OriginalStatusId; webSpeciesFact.OriginalQualityId = speciesFact.OriginalQualityId; webSpeciesFact.OriginalReferenceId = speciesFact.OriginalReferenceId; webSpeciesFact.OriginalDescription = speciesFact.OriginalDescription; return(webSpeciesFact); }
/// <summary> /// Updates the dyntaxa revision species fact. /// </summary> /// <param name="userContext">The user context.</param> /// <param name="speciesFact">The species fact.</param> /// <param name="webSpeciesFact">The web species fact.</param> private void UpdateDyntaxaRevisionSpeciesFact(IUserContext userContext, DyntaxaRevisionSpeciesFact speciesFact, WebDyntaxaRevisionSpeciesFact webSpeciesFact) { if (webSpeciesFact.IsNull()) { return; } speciesFact.CreatedBy = webSpeciesFact.CreatedBy; speciesFact.CreatedDate = webSpeciesFact.CreatedDate; speciesFact.DataContext = GetDataContext(userContext); speciesFact.Description = webSpeciesFact.Description; speciesFact.FactorId = webSpeciesFact.FactorId; speciesFact.Id = webSpeciesFact.Id; if (webSpeciesFact.IsChangedInRevisionEventIdSpecified) { speciesFact.ChangedInRevisionEventId = webSpeciesFact.ChangedInRevisionEventId; } else { speciesFact.ChangedInRevisionEventId = null; } if (webSpeciesFact.IsRevisionEventIdSpecified) { speciesFact.RevisionEventId = webSpeciesFact.RevisionEventId; } else { speciesFact.RevisionEventId = null; } speciesFact.IsPublished = webSpeciesFact.IsPublished; speciesFact.ModifiedBy = webSpeciesFact.ModifiedBy; speciesFact.ModifiedDate = webSpeciesFact.ModifiedDate; speciesFact.QualityId = webSpeciesFact.QualityId; speciesFact.ReferenceId = webSpeciesFact.ReferenceId; speciesFact.StatusId = webSpeciesFact.StatusId; speciesFact.TaxonId = webSpeciesFact.TaxonId; speciesFact.SpeciesFactExists = webSpeciesFact.SpeciesFactExists; speciesFact.OriginalStatusId = webSpeciesFact.OriginalStatusId; speciesFact.OriginalQualityId = webSpeciesFact.OriginalQualityId; speciesFact.OriginalReferenceId = webSpeciesFact.OriginalReferenceId; speciesFact.OriginalDescription = webSpeciesFact.OriginalDescription; }
/// <summary> /// Creates a taxon name out of predefined data /// </summary> /// <returns>WebTaxonName </returns> private DyntaxaRevisionSpeciesFact GetReferenceDyntaxaRevisionSpeciesFact(int taxonId) { DyntaxaRevisionSpeciesFact refSpeciesFact = new DyntaxaRevisionSpeciesFact(); refSpeciesFact.TaxonId = taxonId; refSpeciesFact.RevisionId = 1; refSpeciesFact.FactorId = (Int32)FactorId.SwedishOccurrence; refSpeciesFact.StatusId = 1; refSpeciesFact.QualityId = 1; refSpeciesFact.Description = "Test description"; refSpeciesFact.ReferenceId = 1; refSpeciesFact.CreatedBy = Settings.Default.TestUserId; refSpeciesFact.CreatedDate = DateTime.Now; refSpeciesFact.RevisionEventId = 1; refSpeciesFact.ChangedInRevisionEventId = null; refSpeciesFact.IsPublished = false; return(refSpeciesFact); }
//private static IPerson GetCreatedByPerson(IUserContext userContext, int createdBy) //{ // IPerson person; // IUser user; // try // { // user = CoreData.UserManager.GetUser(userContext, createdBy); // } // catch (Exception) // { // // user does not exist in UserAdmin system // user = null; // } // if ((user.IsNotNull()) && // (user.Type == UserType.Person) && // (user.PersonId.HasValue)) // { // person = CoreData.UserManager.GetPerson(userContext, user.PersonId.Value); // } // else // { // person = null; // } // return person; //} /// <summary> /// The create. /// </summary> /// <param name="userContext"> /// The user context. /// </param> /// <param name="taxon"> /// The taxon. /// </param> /// <param name="revisionId"> /// The revision id. /// </param> /// <returns> /// The <see cref="TaxonSummaryViewModel"/>. /// </returns> public static TaxonSummaryViewModel Create(IUserContext userContext, ITaxon taxon, int?revisionId) { var model = new TaxonSummaryViewModel(); IPerson person; bool isInRevision = DyntaxaHelper.IsInRevision(userContext, revisionId); bool isUserTaxonEditor = userContext.IsTaxonEditor(); model.Id = taxon.Id.ToString(); model.Guid = taxon.Guid ?? string.Empty; model.CategoryId = taxon.Category != null ? taxon.Category.Id : 0; model.Category = taxon.Category != null ? taxon.Category.Name : string.Empty; model.IsMicrospecies = taxon.IsMicrospecies; model.CategorySortOrder = taxon.Category != null ? taxon.Category.SortOrder : 0; model.ConceptDefinition = taxon.GetConceptDefinition(userContext) ?? "-"; model.AlertStatus = (TaxonAlertStatusId)taxon.AlertStatus.Id; model.AlertImageUrl = GetAlertImageUrl(model.AlertStatus); person = taxon.GetModifiedByPerson(userContext); //IPerson createdByPerson = GetCreatedByPerson(userContext, taxon.CreatedBy); //string createdFullName = createdByPerson.FullName; if (person.IsNull()) { model.UpdateInformation = string.Format("{0} ({1})", taxon.ModifiedDate.ToShortDateString(), String.Empty); } else { model.UpdateInformation = string.Format("{0} ({1})", taxon.ModifiedDate.ToShortDateString(), person.FullName); } model.ValidToInformation = string.Format("{0} ({1})", taxon.ValidToDate.ToShortDateString(), taxon.ModifiedByPerson); model.CreatedInformation = string.Format("{0} ({1})", taxon.CreatedDate.ToShortDateString(), taxon.ModifiedByPerson); model.Validity = GetValidityDescription(taxon); if (taxon.ScientificName.IsNotEmpty()) { model.ScientificName = new TaxonNameAuthorViewModel(taxon.ScientificName, taxon.Author); } if (taxon.CommonName.IsNotEmpty()) { model.CommonName = new TaxonNameAuthorViewModel(taxon.CommonName, string.Empty); } // Synonyms //model.Synonyms = new List<TaxonNameViewModel>(); //var synonyms = taxon.GetSynonyms(userContext, true); //if (synonyms != null) //{ // foreach (ITaxonName taxonName in synonyms) // { // model.Synonyms.Add(new TaxonNameViewModel(taxonName, taxon)); // } //} model.Synonyms = taxon.GetSynonymsViewModel(isInRevision, isUserTaxonEditor, false); model.ProParteSynonyms = taxon.GetProParteSynonymsViewModel(isInRevision, isUserTaxonEditor); model.MisappliedNames = taxon.GetMisappliedNamesViewModel(isInRevision, isUserTaxonEditor); // Other valid common names // todo - change implementation? //model.OtherValidCommonNames = new List<string>(); //if (!taxon.CommonName.IsEmpty()) //{ // model.OtherValidCommonNames.AddRange( // from taxonName in taxon.GetTaxonNames(userContext) // where // taxonName.Category.Id == (int)TaxonNameCategoryId.SwedishName && // taxonName.Version != taxon.GetCommonName(userContext).Version // select taxonName.Name); // // todo - även ha med att namnet är gilitigt. Hur ser man det??? //} model.OtherValidCommonNames = taxon.GetNotRecommendedSwedishNamesViewModel(isInRevision, isUserTaxonEditor); // Remove other valid common names from synonyms if (model.OtherValidCommonNames.IsNotEmpty()) { List <TaxonNameViewModel> newSynonymList = new List <TaxonNameViewModel>(); foreach (TaxonNameViewModel synonym in model.Synonyms) { if (model.OtherValidCommonNames.All(x => x.Id != synonym.Id)) { newSynonymList.Add(synonym); } } model.Synonyms = newSynonymList; } // Classification var allParentTaxa = taxon.GetAllParentTaxonRelations(userContext, null, isInRevision, false, true); var distinctParentTaxa = allParentTaxa.GroupBy(x => x.ParentTaxon.Id).Select(x => x.First().ParentTaxon).ToList(); model.Classification = new List <RelatedTaxonViewModel>(); foreach (ITaxon relatedTaxon in distinctParentTaxa) { if (relatedTaxon.Category.IsTaxonomic) { model.Classification.Add(new RelatedTaxonViewModel(relatedTaxon, relatedTaxon.Category, null)); } } // Species fact try { // Dictionary<FactorId, SpeciesFact> dicSpeciesFacts = SpeciesFactHelper.GetSpeciesFacts(taxon, new [] {FactorId.SwedishOccurence, FactorId.SwedishHistory}); Dictionary <FactorId, SpeciesFact> dicSpeciesFacts = SpeciesFactHelper.GetCommonDyntaxaSpeciesFacts(userContext, taxon); model.SwedishHistory = SpeciesFactHelper.GetFactorValue(dicSpeciesFacts, FactorId.SwedishHistory); model.SwedishOccurrence = SpeciesFactHelper.GetFactorValue(dicSpeciesFacts, FactorId.SwedishOccurrence); // If swedish occurrence or swedish history is changed in the current revision, then show those values instead. if (DyntaxaHelper.IsInRevision(userContext, revisionId)) { DyntaxaInternalTaxonServiceManager internalTaxonServiceManager = new DyntaxaInternalTaxonServiceManager(); // Check if Swedish occurrence is stored in Taxon database in this revision. DyntaxaRevisionSpeciesFact swedishOccurrenceRevisionSpeciesFact = internalTaxonServiceManager.GetDyntaxaRevisionSpeciesFact( userContext, (Int32)FactorId.SwedishOccurrence, taxon.Id, revisionId.Value); if (swedishOccurrenceRevisionSpeciesFact != null) { SpeciesFactModelManager speciesFactModel = new SpeciesFactModelManager(taxon, userContext); TaxonModelManager.UpdateOldSpeciesFactModelWithDyntaxaRevisionSpeciesFactValues(userContext, speciesFactModel.SwedishOccurrenceSpeciesFact, swedishOccurrenceRevisionSpeciesFact); model.SwedishOccurrence = speciesFactModel.SwedishOccurrenceSpeciesFact.GetStatusOriginalLabel(); } // Check if Swedish history is stored in Taxon database in this revision. DyntaxaRevisionSpeciesFact swedishHistoryRevisionSpeciesFact = internalTaxonServiceManager.GetDyntaxaRevisionSpeciesFact( userContext, (Int32)FactorId.SwedishHistory, taxon.Id, revisionId.Value); if (swedishHistoryRevisionSpeciesFact != null) { if (swedishHistoryRevisionSpeciesFact.StatusId.HasValue) { SpeciesFactModelManager speciesFactModel = new SpeciesFactModelManager(taxon, userContext); TaxonModelManager.UpdateOldSpeciesFactModelWithDyntaxaRevisionSpeciesFactValues(userContext, speciesFactModel.SwedishHistorySpeciesFact, swedishHistoryRevisionSpeciesFact); model.SwedishHistory = speciesFactModel.SwedishHistorySpeciesFact.GetStatusOriginalLabel(); } else // swedish history is deleted in this revision { model.SwedishHistory = ""; } } } } catch (Exception) { // the taxon did not exist in Artfakta } return(model); }
/// <summary> /// Creates a swedish occurrence summary view model. /// </summary> /// <param name="taxon">The taxon.</param> /// <returns></returns> public SwedishOccurrenceSummaryViewModel CreateSwedishOccurrenceSummaryViewModel(ITaxon taxon) { var model = new SwedishOccurrenceSummaryViewModel(); int?redListValue = null; // Species fact try { Dictionary <ArtDatabanken.Data.FactorId, ArtDatabanken.Data.SpeciesFact> dicSpeciesFacts = SpeciesFactHelper.GetCommonDyntaxaSpeciesFacts(this._userContext, taxon); if (dicSpeciesFacts.ContainsKey(FactorId.SwedishHistory)) { model.SwedishHistory = SpeciesFactHelper.GetFactorValue(dicSpeciesFacts, ArtDatabanken.Data.FactorId.SwedishHistory); model.SwedishHistoryFact = dicSpeciesFacts[FactorId.SwedishHistory]; } if (dicSpeciesFacts.ContainsKey(FactorId.SwedishOccurrence)) { //CoreData.SpeciesFactManager.GetSpeciesFact() model.SwedishOccurrence = SpeciesFactHelper.GetFactorValue(dicSpeciesFacts, ArtDatabanken.Data.FactorId.SwedishOccurrence); model.SwedishOccurrenceFact = dicSpeciesFacts[FactorId.SwedishOccurrence]; } if (dicSpeciesFacts.ContainsKey(FactorId.RedlistCategory)) { model.RedListInfo = GetRedListCategory(dicSpeciesFacts[ArtDatabanken.Data.FactorId.RedlistCategory]); redListValue = GetRedListCategoryValue(dicSpeciesFacts[ArtDatabanken.Data.FactorId.RedlistCategory]); } // If swedish occurrence or swedish history is changed in the current revision, then show those values instead. if (DyntaxaHelper.IsInRevision(_userContext, _taxonRevision)) { DyntaxaInternalTaxonServiceManager internalTaxonServiceManager = new DyntaxaInternalTaxonServiceManager(); // Check if Swedish occurrence is stored in Taxon database in this revision. DyntaxaRevisionSpeciesFact swedishOccurrenceRevisionSpeciesFact = internalTaxonServiceManager.GetDyntaxaRevisionSpeciesFact( _userContext, (Int32)FactorId.SwedishOccurrence, taxon.Id, _taxonRevision.Id); if (swedishOccurrenceRevisionSpeciesFact != null) { SpeciesFactModelManager speciesFactModel = new SpeciesFactModelManager(taxon, _userContext); TaxonModelManager.UpdateOldSpeciesFactModelWithDyntaxaRevisionSpeciesFactValues(_userContext, speciesFactModel.SwedishOccurrenceSpeciesFact, swedishOccurrenceRevisionSpeciesFact); model.SwedishOccurrence = speciesFactModel.SwedishOccurrenceSpeciesFact.GetStatusOriginalLabel(); model.SwedishOccurrenceFact = speciesFactModel.SwedishOccurrenceSpeciesFact; } // Check if Swedish history is stored in Taxon database in this revision. DyntaxaRevisionSpeciesFact swedishHistoryRevisionSpeciesFact = internalTaxonServiceManager.GetDyntaxaRevisionSpeciesFact( _userContext, (Int32)FactorId.SwedishHistory, taxon.Id, _taxonRevision.Id); if (swedishHistoryRevisionSpeciesFact != null) { if (swedishHistoryRevisionSpeciesFact.StatusId.HasValue) { SpeciesFactModelManager speciesFactModel = new SpeciesFactModelManager(taxon, _userContext); TaxonModelManager.UpdateOldSpeciesFactModelWithDyntaxaRevisionSpeciesFactValues(_userContext, speciesFactModel.SwedishHistorySpeciesFact, swedishHistoryRevisionSpeciesFact); model.SwedishHistory = speciesFactModel.SwedishHistorySpeciesFact.GetStatusOriginalLabel(); model.SwedishHistoryFact = speciesFactModel.SwedishHistorySpeciesFact; } else // swedish history is deleted in this revision { model.SwedishHistory = null; model.SwedishHistoryFact = null; } } } } catch (Exception) { // the taxon did not exist in Artfakta } const int noRedListValue = 6; if (!string.IsNullOrEmpty(model.RedListInfo) && redListValue.GetValueOrDefault(0) < noRedListValue) { var linkManager = new LinkManager(); string url = linkManager.GetUrlToRedlist(taxon.Id.ToString()); if (url != "") { var item = new LinkItem( LinkType.Url, LinkQuality.ApprovedByExpert, Resources.DyntaxaResource.LinkToSwedishRedlistLabel, url); model.RedListLink = item; } } return(model); }
/// <summary> /// Creates the dyntaxa revision species fact. /// </summary> /// <param name="userContext">The user context.</param> /// <param name="speciesFact">The species fact.</param> /// <returns>The created DyntaxaRevisionSpeciesFact.</returns> public DyntaxaRevisionSpeciesFact CreateDyntaxaRevisionSpeciesFact(IUserContext userContext, DyntaxaRevisionSpeciesFact speciesFact) { return(DataSource.CreateDyntaxaRevisionSpeciesFact(userContext, speciesFact)); }