Exemple #1
0
        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));
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
        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;
                    }
                }
            }
        }
Exemple #4
0
        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));
        }