// Called by test
 public DyntaxaBaseController(IUserDataSource userDataSourceRepository, ITaxonDataSource taxonDataSourceRepository, ISessionHelper session)
 {
     CoreData.UserManager.DataSource  = userDataSourceRepository;
     CoreData.TaxonManager.DataSource = taxonDataSourceRepository;
     TaxonSearchManager = new TaxonSearchManager(userDataSourceRepository, taxonDataSourceRepository, session);
     _sessionHelper     = session;
 }
        public ActionResult List(string[] isNotOkForObs, string[] isRecommended)
        {
            ITaxon taxon = TaxonSearchManager.GetTaxonById(TaxonIdentifier.Id.Value);
            var    model = new ListTaxonNameViewModel(taxon, this.TaxonRevision); //todo change revisionId

            ValidateTaxon(GetCurrentUser(), taxon.Id);

            TaxonNameList changedTaxonNames = model.GetChangedTaxonNames(isNotOkForObs, isRecommended);

            // Only usage: Accepted may have Recommended: Yes.
            foreach (ITaxonName taxonName in changedTaxonNames)
            {
                if (taxonName.IsRecommended && taxonName.NameUsage.Id != (int)TaxonNameUsageId.Accepted)
                {
                    ModelState.AddModelError("", Resources.DyntaxaResource.TaxonNameListWrongNameUsage);
                    break;
                }
            }

            if (ModelState.IsValid)
            {
                if (changedTaxonNames.Count > 0)
                {
                    IUserContext loggedInUser = GetLoggedInUser();

                    using (ITransaction transaction = loggedInUser.StartTransaction())
                    {
                        CoreData.TaxonManager.UpdateTaxonNames(loggedInUser, this.TaxonRevision, changedTaxonNames);

                        transaction.Commit();
                    }
                }

                RedrawTree();
                return(RedirectToAction("List"));
            }

            ViewBag.Taxon = taxon;
            return(View(model));
        }
 /// <summary>
 /// Constructor
 /// </summary>
 public DyntaxaBaseController()
 {
     TaxonSearchManager = new TaxonSearchManager();
 }