public ActionResult Upsert(Guid?id) { var model = new GroupUpsertModel(); if (id.HasValue) { Group group; using (ContextManager.NewConnection()) { group = groupService.Get(id.Value); } model = Mapper.Map <GroupUpsertModel>(group); InitGroupUpsertModel(model, group.GeoNetworkId); } this.InitAdminBreadcrumb( Title, string.Format( model.Id.HasValue ? string.Format(Resource.Editing, model.Names.GetValueForCurrentCulture()) : string.Format(Resource.Creating, Resource.Organization.ToLower())), true); return(Request.IsAjaxRequest() ? PartialView(model) as ActionResult : View(model)); }
private void InitGroupUpsertModel(GroupUpsertModel model, long?geoNetworkId) { using (var client = restApiService.GetClient()) { var geoNetworkGroup = restApiService.GetRequest <GroupDTO>(client, $"groups/{geoNetworkId}"); model.EnableAllowedCategories = geoNetworkGroup?.EnableAllowedCategories ?? false; model.Logo = geoNetworkGroup?.Logo; model.Label = geoNetworkGroup?.Label; model.DefaultCategory = geoNetworkGroup?.DefaultCategory; model.SelectedAllowedCategories = geoNetworkGroup?.AllowedCategories?.Select(x => x.Id.Value).ToList(); } }
private void InitLabels(GroupDTO geoNetworkGroup, GroupUpsertModel model) { if (geoNetworkGroup.Label.IsNotNullOrEmpty() && model.Names.IsNotNullOrEmpty()) { foreach (var name in model.Names) { var threeLetterLanguageName = Global.Cultures.FirstOrDefault(x => x.Value == name.Key).Key .ThreeLetterISOLanguageName.ToLower(); if (geoNetworkGroup.Label.ContainsKey(threeLetterLanguageName)) { geoNetworkGroup.Label[threeLetterLanguageName] = name.Value; } } } }
public ActionResult Upsert(GroupUpsertModel model) { if (ModelState.IsValid) { try { using (var client = restApiService.GetClient()) { // read all cagegories from api to map selected ones. The api needs all properties, not only ids!!! var all = restApiService.GetRequest <List <Category> >(client, "tags"); var groupDto = Mapper.Map <GroupDTO>(model); groupDto.DefaultCategory = model.DefaultCategory != null ? all.Single(item => item.Id.Equals(model.DefaultCategory.Id)) : null; groupDto.AllowedCategories = all.Where( item => model.SelectedAllowedCategories.IsNotNullOrEmpty() && model.SelectedAllowedCategories.Contains(item.Id.Value)); var json = SerializeGroupDTOToJson(groupDto); restApiService.PutRequest( client, model.GeoNetworkId.HasValue ? $"groups/{model.GeoNetworkId}" : "groups", new StringContent(json, Encoding.UTF8, "application/json")); var geoNetworkGroup = restApiService.GetRequest <List <GroupDTO> >(client, "groups") ?.Single( item => item.Name == model.Names.GetValueForCurrentCulture()); model.GeoNetworkId = Convert.ToInt64(geoNetworkGroup.Id); InitLabels(geoNetworkGroup, model); json = SerializeGroupDTOToJson(geoNetworkGroup); restApiService.PutRequest( client, $"groups/{model.GeoNetworkId}", new StringContent(json, Encoding.UTF8, "application/json")); } var group = Mapper.Map <Group>(model); using (var transaction = ContextManager.NewTransaction()) { groupService.Upsert(group); transaction.Commit(); } this.ShowMessage(MessageType.Success, Resource.ChangesSuccessfullySaved); return(RedirectToAction("Index", new { group.Id })); } catch (Exception e) { Logger.Error(e); ModelState.AddModelError(string.Empty, e is UserException userException ? userException.Message : Resource.InternalServerError); } } this.InitAdminBreadcrumb( Title, string.Format( model.Id.HasValue ? string.Format(Resource.Editing, model.Names.GetValueForCurrentCulture()) : string.Format(Resource.Creating, Resource.Organization.ToLower())), true); return(Request.IsAjaxRequest() ? PartialView(model) as ActionResult : View(model)); }