private string GetProfile(UserUpsertViewModel model) { if (model.IsAdministrator) { return(Enum.GetName( typeof(Inspire.Models.GeoNetwork.User.Profile), Inspire.Models.GeoNetwork.User.Profile.Administrator)); } if (model.Profile.Id.Equals( EnumHelper.GetProfileIdByProfile(Inspire.Models.GeoNetwork.User.Profile.UserAdmin))) { return(Enum.GetName( typeof(Inspire.Models.GeoNetwork.User.Profile), Inspire.Models.GeoNetwork.User.Profile.UserAdmin)); } if (model.Profile.Id.Equals( EnumHelper.GetProfileIdByProfile(Inspire.Models.GeoNetwork.User.Profile.Reviewer))) { return(Enum.GetName( typeof(Inspire.Models.GeoNetwork.User.Profile), Inspire.Models.GeoNetwork.User.Profile.Reviewer)); } if (model.Profile.Id.Equals( EnumHelper.GetProfileIdByProfile(Inspire.Models.GeoNetwork.User.Profile.Editor))) { return(Enum.GetName( typeof(Inspire.Models.GeoNetwork.User.Profile), Inspire.Models.GeoNetwork.User.Profile.Editor)); } if (model.Profile.Id.Equals( EnumHelper.GetProfileIdByProfile(Inspire.Models.GeoNetwork.User.Profile.RegisteredUser))) { return(Enum.GetName( typeof(Inspire.Models.GeoNetwork.User.Profile), Inspire.Models.GeoNetwork.User.Profile.RegisteredUser)); } return(Enum.GetName( typeof(Inspire.Models.GeoNetwork.User.Profile), Inspire.Models.GeoNetwork.User.Profile.RegisteredUser)); }
public ActionResult Upsert(Guid?id) { var model = new UserUpsertViewModel(); List <Nomenclature> profiles; using (ContextManager.NewConnection()) { ViewBag.Roles = roleService.Search(new RoleQuery { UserId = User.Id }); profiles = nomenclatureService.Get("nrolegnw"); if (id.HasValue) { model = Mapper.Map <UserUpsertViewModel>(userService.Get(id.Value)); model.Roles = roleService.GetUserRoles(id.Value); } } //// when register user there is no geonetwork account yet if (model.GeoNetworkId.HasValue) { using (var client = restApiService.GetClient()) { var geoNetworkUser = restApiService.GetRequest <UserDTO>(client, $"users/{model.GeoNetworkId}"); model.IsAdministrator = geoNetworkUser.Profile == Enum.GetName( typeof(GeoNetWorkProfile), GeoNetWorkProfile.Administrator); model.GeoNetworkAddress = geoNetworkUser.Addresses?.FirstOrDefault(); if (!model.IsAdministrator) { var geoNetworkUserGroups = restApiService.GetRequest <List <UserGroup> >( client, $"users/{model.GeoNetworkId}/groups"); var firstGroupId = geoNetworkUserGroups.FirstOrDefault()?.Id; model.Group = new GroupForUser { Id = firstGroupId?.GroupId }; model.Profile = profiles?.Single( item => item.Id.Equals( EnumHelper.GetProfileIdByProfile( (GeoNetWorkProfile)Enum.Parse( typeof(GeoNetWorkProfile), firstGroupId?.Profile, true)))); } } } this.InitAdminBreadcrumb( Title, string.Format( model.Id.HasValue ? string.Format(Resource.Editing, model.UserName) : string.Format(Resource.Creating, Resource.User.ToLower())), true); return(Request.IsAjaxRequest() ? PartialView(model) as ActionResult : View(model)); }
public ActionResult Upsert(UserUpsertViewModel model) { var isNewUser = !model.Id.HasValue; if (isNewUser) { User existingUser; using (ContextManager.NewConnection()) { existingUser = accountService.GetByUserName(model.UserName); } if (existingUser != null) { ModelState.AddModelError("UserName", Resource.UserNameIsAlreadyTaken); } } if (ModelState.IsValid) { try { using (var client = restApiService.GetClient()) { var json = JsonConvert.SerializeObject( Mapper.Map <UserDTO>(model), Formatting.None, new JsonSerializerSettings { ContractResolver = new CamelCaseContractResolver() }); restApiService.PutRequest( client, isNewUser ? "users" : $"users/{model.GeoNetworkId}", new StringContent(json, Encoding.UTF8, "application/json")); if (isNewUser && !model.GeoNetworkId.HasValue) { var geonetWorkUsers = restApiService.GetRequest <List <UserDTO> >(client, "users"); model.GeoNetworkId = Convert.ToInt64( geonetWorkUsers?.FirstOrDefault(x => x.Username.Equals(model.UserName))?.Id); if (model.GeoNetworkId <= 0) { throw new UserException(Resource.UserNotFound); } } } var user = Mapper.Map <User>(model); using (var transaction = ContextManager.NewTransaction()) { // set group id from our db var group = groupService.Search(new GroupQueryModel { Name = model.Group?.Name }).FirstOrDefault(); user.OrganizationId = group?.Id; user.Id = userService.Upsert(user); userService.SetUserRoles( new SetRole { UserId = user.Id.Value, Roles = model.Roles }); transaction.Commit(); } if (isNewUser) { userMailService.SendCompleteRegistrationEmail(user); } this.ShowMessage(MessageType.Success, Resource.ChangesSuccessfullySaved); return(RedirectToAction("Index", new { user.Id })); } catch (UserDbException e) { Logger.Error(e); ModelState.AddModelError(string.Empty, Resource.DbErrorMessage); } catch (UserException e) { ModelState.AddModelError(string.Empty, e.Message); } } using (ContextManager.NewConnection()) { ViewBag.Roles = roleService.Search(new RoleQuery { UserId = User.Id }); } InitBreadcrumb( string.Format( model.Id.HasValue ? string.Format(Resource.Editing, model.UserName) : string.Format(Resource.Creating, Resource.User.ToLower()))); return(View(model)); }