public ActionResult Add(string taxonId, int?nameCategoryId) { TaxonSearchResult searchResult = this.TaxonSearchManager.GetTaxon(taxonId); if (searchResult.NumberOfMatches != 1) { return(RedirectToSearch(taxonId)); //todo change revisionId } this.TaxonIdentifier = TaxonIdTuple.Create(taxonId, searchResult.Taxon.Id); ITaxon taxon = searchResult.Taxon; ViewBag.Taxon = taxon; //this.NavigateData = new NavigateData("TaxonName", "List"); TaxonNameDetailsViewModel model = _taxonNameViewManager.GetTaxonNameDetailsViewModel(taxon); if (nameCategoryId.HasValue) { model.SelectedCategoryId = nameCategoryId.Value; } // Since taxonAdd and edit uses the same view we have to set no of references to 1, otherwise // client validation will not pass for TaxonName Add. TODO refactor Taxon name add and edit into two viewmodels model.NoOfTaxonNameReferences++; return(View("Add", model)); }
public ActionResult Edit(TaxonNameDetailsViewModel model) { int taxonId = this.TaxonIdentifier.Id.Value; ITaxon taxon = CoreData.TaxonManager.GetTaxon(GetCurrentUser(), model.TaxonId); _taxonNameViewManager.InitTaxonNameDetails(model, taxon); ValidateTaxon(GetCurrentUser(), taxonId); // Only Nomenclature: Correct, Provisional, PreliminarySuggestion or Informal names may have usage: Accepted. if (model.SelectedTaxonNameUsageId == (int)TaxonNameUsageId.Accepted && !(model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.ApprovedNaming || model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.Provisional || model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.PreliminarySuggestion || model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.Informal)) { ModelState.AddModelError("", Resources.DyntaxaResource.TaxonNameAddEditIncorrectNomencalture); } //// Only usage: Accepted may have Recommended: Yes. //if (!model.IsRecommended && model.SelectedTaxonNameUsageId == (int)TaxonNameUsageId.Accepted) //{ // ModelState.AddModelError("", "Only usage: Accepted may have Recommended: Yes."); //} if (ModelState.IsValid) { ITaxonName taxonName = _taxonNameViewManager.SaveTaxonNameDetailsChanges(model, taxonId, this.TaxonRevision); this.RedrawTree(); // Must set new value since taxon name is updated for every save... return(RedirectToAction("Edit", new { @taxonId = model.TaxonId, @nameId = taxonName.Version.ToString() })); } else { return(View("Edit", model)); } }
public ActionResult Add(TaxonNameDetailsViewModel model) { ITaxon taxon = CoreData.TaxonManager.GetTaxon(GetCurrentUser(), model.TaxonId); ITaxonName taxonName = new TaxonName(); ITaxonRevision taxonRevision = this.TaxonRevision; _taxonNameViewManager.InitTaxonNameDetails(model, taxon); // Only Nomenclature: Correct, Provisional, PreliminarySuggestion or Informal names may have usage: Accepted. if (model.SelectedTaxonNameUsageId == (int)TaxonNameUsageId.Accepted && !(model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.ApprovedNaming || model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.Provisional || model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.PreliminarySuggestion || model.SelectedTaxonNameStatusId == (int)TaxonNameStatusId.Informal)) { ModelState.AddModelError("", Resources.DyntaxaResource.TaxonNameAddEditIncorrectNomencalture); } if (!ModelState.IsValid) { return(View("Add", model)); } IUserContext loggedInUser = GetLoggedInUser(); // Creation of taxon name using (ITransaction transaction = loggedInUser.StartTransaction()) { taxonName = _taxonNameViewManager.AddTaxonName(model, TaxonIdentifier.Id.Value, this.TaxonRevision); // Must set default reference, set from Revision.. ReferenceRelationList referencesToAdd = ReferenceHelper.GetDefaultReferences(GetCurrentUser(), taxonName, taxonRevision, null); var referencesToRemove = new ReferenceRelationList(); CoreData.ReferenceManager.CreateDeleteReferenceRelations(GetCurrentUser(), referencesToAdd, referencesToRemove); transaction.Commit(); } return(RedirectToAction("Edit", new { @taxonId = model.TaxonId, @nameId = taxonName.Version })); }