コード例 #1
0
        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;
            }
        }
コード例 #2
0
        public override bool Equals(object obj)
        {
            TaxonNameKey key2 = (TaxonNameKey)obj;

            return(this.TaxonNameId == key2.TaxonNameId && this.TaxonNameCategoryId == key2.TaxonNameCategoryId);
        }
コード例 #3
0
        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);
        }