public virtual IActionResult Edit(ResearcherModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageResearchers))
            {
                return(AccessDeniedView());
            }

            //try to get a researcher with the specified id
            var  researcher = _researcherService.GetResearcherById(model.Id);
            bool active     = researcher.IsActive;
            bool completed  = researcher.IsCompleted;

            if (researcher == null)
            {
                return(RedirectToAction("List"));
            }

            if (ModelState.IsValid)
            {
                researcher             = model.ToEntity(researcher);
                researcher.IsActive    = active;
                researcher.IsCompleted = completed;
                if (model.ParseDateOfBirth() != null)
                {
                    researcher.Birthdate = model.ParseDateOfBirth();
                }

                _researcherService.UpdateResearcher(researcher);

                var address = model.AddressModel.ToEntity <Address>();
                SaveAddress(model.AddressModel, address);
                if (address.Id != 0)
                {
                    researcher.AddressId = address.Id;
                    _researcherService.UpdateResearcher(researcher);
                }

                SuccessNotification("Researcher Updated");

                //activity log
                //_userActivityService.InsertActivity("EditResearcher", "ActivityLog EditResearcher", researcher);

                if (!continueEditing)
                {
                    return(RedirectToAction("List"));
                }

                //selected tab
                SaveSelectedTabName();

                return(RedirectToAction("Edit", new { id = researcher.Id }));
            }

            //prepare model
            model = _researcherModelFactory.PrepareResearcherModel(model, researcher, true);

            //if we got this far, something failed, redisplay form
            return(View(model));
        }
        public virtual IActionResult Create(ResearcherModel model, bool continueEditing)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageResearchers))
            {
                return(AccessDeniedView());
            }

            if (ModelState.IsValid)
            {
                var researcher = model.ToEntity <Researcher>();

                if (model.ParseDateOfBirth() != null)
                {
                    researcher.Birthdate = model.ParseDateOfBirth();
                }
                researcher.IsActive = true;
                _researcherService.InsertResearcher(researcher);

                var address = model.AddressModel.ToEntity <Address>();
                SaveAddress(model.AddressModel, address);
                if (address.Id != 0)
                {
                    researcher.AddressId = address.Id;
                    _researcherService.UpdateResearcher(researcher);
                }


                SuccessNotification("Admin.ContentManagement.Researchers.Added");

                //activity log
                //_userActivityService.InsertActivity("AddNewResearcher", "ActivityLog.AddNewResearcher", researcher);

                if (!continueEditing)
                {
                    return(RedirectToAction("List"));
                }

                //selected tab
                SaveSelectedTabName();

                return(RedirectToAction("Edit", new { id = researcher.Id }));
            }

            //prepare model
            model = _researcherModelFactory.PrepareResearcherModel(model, null, true);

            //if we got this far, something failed, redisplay form
            return(View(model));
        }