public void TestFilteredEventTopics_FilterTopicWithType()
        {
            var handler = CreateHandler();
            var request = new ListFilteredEventTopicsRequest
            {
                FilterTopicByType = 2
            };

            var response = HandleRequest<ListFilteredEventTopicsResponse>(handler, request);
            Assert.AreEqual(1, response.EventTopics.Count());
        }
        public void ListFilteredEventTopics()
        {
            //setup
            var handler = CreateHandler();
            var request = new ListFilteredEventTopicsRequest();

            //act
            var response = HandleRequest<ListFilteredEventTopicsResponse>(handler, request);

            List<EventTopicDto> topics = new List<EventTopicDto>(response.EventTopics);

            //assert
            Assert.AreEqual(4, topics.Count);
        }
 /// <summary>
 /// Determines whether the specified <see cref="ListFilteredEventTopicsRequest" /> is equal to this instance.
 /// </summary>
 /// <param name="other">The other.</param>
 /// <returns></returns>
 public bool Equals(ListFilteredEventTopicsRequest other)
 {
     return base.Equals(other)
            && EnabledOnly == other.EnabledOnly
            && OrganizationalUnitId == other.OrganizationalUnitId
            && OrgUnitTypeId == other.OrgUnitTypeId
            && DescendantOption == other.DescendantOption
            && LinkedOption == other.LinkedOption
            && FilterTopicByType == other.FilterTopicByType;
 }
        private string LoadDropdownValues(ModuleInstanceView parent, SearchView viewSettings, IDictionary<string, string> parameters)
        {
            List<DropdownOption> records = new List<DropdownOption>();

            // Get location context settings
            var locationId = LocationContextHelper.ResolveLocationContext(parent, viewSettings, parameters).Id;
            var descendantOption = LocationContextHelper.ResolveLocationDescendantOption(viewSettings, parameters);

            switch (parameters["FieldName"])
            {
                case "Event":
                    var eventTitleRequest = new SearchEventsUniqueTitleRequest() { Title = parameters["Search"], OrganizationalUnitId = locationId, DescendantOption = descendantOption };
                    var eventTitleResponse = parent.ProcessRequest<SearchEventsUniqueTitleResponse>(eventTitleRequest);
                    foreach (var eventTitle in eventTitleResponse.Results)
                    {
                        records.Add(new DropdownOption
                        {
                            DisplayName = eventTitle,
                            Id = eventTitle
                        });
                    }
                    break;
                case "Location":
                    var locationRequest = new SearchEventLocationsRequest() { OrganizationalUnitName = parameters["Search"], OrganizationalUnitId = locationId, DescendantOption = descendantOption };
                    var locationResponse = parent.ProcessRequest<SearchEventLocationsResponse>(locationRequest);
                    foreach (var location in locationResponse.OrgUnitInfo)
                    {
                        records.Add(new DropdownOption
                        {
                            DisplayName = location.Value,
                            Id = location.Key
                        });
                    }
                    break;
                case "EventType":
                    var eventTypeRequest = new ListFilteredEventTypesRequest() { EnabledOnly = true, OrganizationalUnitId = locationId, DescendantOption = descendantOption };
                    var eventTypeResponse = parent.ProcessRequest<ListFilteredEventTypesResponse>(eventTypeRequest);
                    foreach (var type in eventTypeResponse.EventTypes.Where(t => t.Name.ToLowerInvariant().StartsWith(parameters["Search"].ToLowerInvariant())))
                    {
                        records.Add(new DropdownOption
                        {
                            DisplayName = type.Name,
                            Id = type.Id
                        });
                    }
                    break;
                case "EventTopic":
                    var eventTopicsRequest = new ListFilteredEventTopicsRequest() { EnabledOnly = true, OrganizationalUnitId = locationId, DescendantOption = descendantOption };
                    var eventTopicsResponse = parent.ProcessRequest<ListFilteredEventTopicsResponse>(eventTopicsRequest);
                    foreach (var topic in eventTopicsResponse.EventTopics.Where(t => t.Name.ToLowerInvariant().StartsWith(parameters["Search"].ToLowerInvariant())))
                    {
                        records.Add(new DropdownOption
                        {
                            DisplayName = topic.Name,
                            Id = topic.Id
                        });
                    }
                    break;
            }

            return CommonUtils.JsonSerialize(records);
        }