public TaxonNameEditingViewModel(ITaxonName taxonName, bool isPossibleToChangeToRecomended) { this.taxonName = taxonName; this.IsRecommended = taxonName.IsRecommended; this.IsPossibleToChangeRecomended = isPossibleToChangeToRecomended; if (taxonName.Status.Id != (Int32)TaxonNameStatusId.ApprovedNaming) { this.IsPossibleToChangeRecomended = false; } this.IsOkForObsSystems = taxonName.IsOkForSpeciesObservation; this.taxonNameKey = new TaxonNameKey(this.CategoryId, this.Version); this.IsRemoved = false; if (taxonName.Status.Id == (Int32)TaxonNameStatusId.Removed) { this.IsRemoved = true; } }
public override bool Equals(object obj) { TaxonNameKey key2 = (TaxonNameKey)obj; return(this.TaxonNameId == key2.TaxonNameId && this.TaxonNameCategoryId == key2.TaxonNameCategoryId); }
public TaxonNameList GetChangedTaxonNames(string[] isNotOkForObs, string[] isRecommended) { List <TaxonNameKey> isRecommendedSelection = ParseTaxonNameKeys(isRecommended); List <TaxonNameKey> isNotOkForObsSelection = ParseTaxonNameKeys(isNotOkForObs); foreach (TaxonNameCategoryViewModel taxonNameCategory in NameCategories) { int numberRecommended = 0; foreach (TaxonNameEditingViewModel taxonName in taxonNameCategory.Names) { var taxonNameKey = new TaxonNameKey(taxonNameCategory.Id, taxonName.Version); if (isRecommendedSelection.Contains(taxonNameKey)) { // is recommended numberRecommended++; if (!taxonName.TaxonNameDataObject.IsRecommended) { taxonName.TaxonNameDataObject.IsRecommended = true; taxonName.IsStateChanged = true; } } else { // not recommended if (taxonName.TaxonNameDataObject.IsRecommended) { taxonName.TaxonNameDataObject.IsRecommended = false; // check if there is no other recommended bool existRecommended = IsAnyRecommendedInCategory(isRecommendedSelection, taxonNameCategory.Id); if (!existRecommended) { taxonName.IsStateChanged = true; } } } if (isNotOkForObsSelection.Contains(taxonNameKey)) { // is not ok for obs system if (taxonName.TaxonNameDataObject.IsOkForSpeciesObservation) { taxonName.TaxonNameDataObject.IsOkForSpeciesObservation = false; taxonName.IsStateChanged = true; } } else { // is ok for obs system if (!taxonName.TaxonNameDataObject.IsOkForSpeciesObservation) { taxonName.TaxonNameDataObject.IsOkForSpeciesObservation = true; taxonName.IsStateChanged = true; } } } //// Validation //if (numberRecommended > 1) // throw new Exception("Too many recommendations in name category"); ////taxon.RecommendedScentificName.NameCategory.Id //if (taxonNameCategory.Id == TaxonNameCategoryIds.SCIENTIFIC_NAME && numberRecommended == 0) // throw new Exception("At least one scientific name must be recommended"); } TaxonNameList taxonNames = new TaxonNameList(); foreach (TaxonNameEditingViewModel taxonName in this.GetAllNamesEnumerator()) { if (taxonName.IsStateChanged) { taxonNames.Add(taxonName.TaxonNameDataObject); } } return(taxonNames); }