コード例 #1
0
        public async Task <IActionResult> GetConcreteResourcePredicate(
            [FromQuery] QueryStringParameters queryStringParametersDto)
        {
            Parameters parameters =
                _parametersProcessorService.ProcessParameters(Request.RouteValues, Request.QueryString);
            string?query = _sparqlFactoryService.GetFinalSelectQueryForPredicate(parameters);

            if (query != null)
            {
                var sparqlResults = await _endpointService.ExecuteSelectSparqlQueryAsync(
                    parameters.RouteParameters.Endpoint,
                    parameters.RouteParameters.Graph, query);

                if (sparqlResults != null)
                {
                    PredicateVm predicateVm =
                        _resultFormatterService.FormatSparqlResultToCurieAndLiteralList(
                            parameters.RouteParameters.Predicate, sparqlResults);
                    return(Ok(predicateVm));
                }
            }

            return(NotFound(new CustomErrorVm()
            {
                CustomErrorMessage = "No results were found!",
                GeneratedQuery = query
            }));
        }
コード例 #2
0
        /// <summary>
        /// Builds the URI.
        /// </summary>
        /// <param name="hostName">Name of the host.</param>
        /// <returns></returns>
        public virtual Uri BuildUri(string hostName)
        {
            if (hostName == null)
            {
                throw new ArgumentNullException("hostName");
            }

            if (!Validate())
            {
                throw new InvalidOperationException("You cannot build a web service URI with an invalid data query");
            }

            try
            {
                var uriSuffix = string.Format("{0}/-/item/v{1}/-/actions/{2}?", hostName.TrimEnd('/'), ApiVersion, ActionName);

                var uri = string.Format("{0}{1}", uriSuffix, QueryStringParameters.ToQueryString());

                return(new Uri(uri));
            }
            catch (Exception ex)
            {
                LogFactory.Error("Could not build a URI for the data query", ex);
            }

            return(null);
        }
コード例 #3
0
        public IActionResult GetAsync([FromQuery] QueryStringParameters queryParameters)
        {
            var rng        = new Random();
            var columnsMap = new Dictionary <string, Expression <Func <WeatherForecast, object> > >()
            {
                ["date"]         = v => v.Date,
                ["temperatureC"] = v => v.TemperatureC,
                ["summary"]      = v => v.Summary
            };
            var list = PagedList <WeatherForecast> .ToPagedList(Enumerable.Range(1, 20).Select(index => new WeatherForecast
            {
                Date = DateTime.Now.AddDays(index),
                TemperatureC = rng.Next(-20, 55),
                Summary = Summaries[rng.Next(Summaries.Length)]
            }).AsQueryable().Sort(queryParameters.SortBy, columnsMap, queryParameters.IsSortAscending), queryParameters.PageNumber, queryParameters.PageSize);

            var metadata = new
            {
                list.TotalCount,
                list.PageSize,
                list.CurrentPage,
                list.TotalPages,
                list.HasNext,
                list.HasPrevious
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));
            return(Ok(list));
        }
コード例 #4
0
        public async Task <bool> CreateMasterZone(string zoneName, List <string> masterServers = null)
        {
            QueryStringParameters nvc = new QueryStringParameters();

            nvc["domain-name"] = zoneName;
            nvc["zone-type"]   = "master";

            if (masterServers != null)
            {
                if (masterServers.Any())
                {
                    foreach (string ipAddress in masterServers)
                    {
                        nvc.Add("ns[]", ipAddress);
                    }
                }
                else
                {
                    nvc["ns[]"] = string.Empty;
                }
            }

            StatusMessage status = await ExecuteGet <StatusMessage>("/dns/register.json", nvc).ConfigureAwait(false);

            return(status.Status == "Success");
        }
コード例 #5
0
        public async Task <ActionResult <IEnumerable <RecordResource> > > GetRecords([FromQuery] QueryStringParameters queryParameters)
        {
            var columnsMap = new Dictionary <string, Expression <Func <Record, object> > >()
            {
                ["patientName"] = v => v.Patient.PatientName,
                ["id"]          = v => v.Id,
                ["timeOfEntry"] = v => v.TimeOfEntry,
                ["diseaseName"] = v => v.DiseaseName
            };
            var list = await _recordService.ListAsync(queryParameters, columnsMap);

            var recordResource = _mapper.Map <IEnumerable <Record>, IEnumerable <RecordResource> >(list);
            var metadata       = new
            {
                list.TotalCount,
                list.PageSize,
                list.CurrentPage,
                list.TotalPages,
                list.HasNext,
                list.HasPrevious
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));
            return(Ok(recordResource));
        }
コード例 #6
0
        private string ApplyQueryStringParametersToSparqlQuery(string query,
                                                               QueryStringParameters queryStringParameters, string sortAndRegexParameter)
        {
            var limit  = queryStringParameters.Limit;
            var offset = queryStringParameters.Offset;
            var regex  = queryStringParameters.Regex;
            var sort   = queryStringParameters.Sort;

            if (regex != null)
            {
                var i = query.LastIndexOf("}", StringComparison.Ordinal);
                query =
                    $"{query.Substring(0, i)}FILTER regex({sortAndRegexParameter}, \"{regex}\") {query.Substring(i)}";
            }

            if (sort != null)
            {
                if (sort.Equals("asc"))
                {
                    query += $" ORDER BY ({sortAndRegexParameter})";
                }
                if (sort.Equals("desc"))
                {
                    query += $" ORDER BY DESC ({sortAndRegexParameter})";
                }
            }

            query += $" LIMIT {limit} OFFSET {offset}";

            return(query);
        }
コード例 #7
0
        private Uri BuildUri(string path, QueryStringParameters nvc)
        {
            StringBuilder sb = new StringBuilder();

            foreach (KeyValuePair <string, string[]> pair in nvc)
            {
                if (pair.Value == null)
                {
                    continue;
                }

                foreach (string val in pair.Value)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append("&");
                    }

                    sb.Append(pair.Key);
                    sb.Append("=");
                    sb.Append(Uri.EscapeUriString(val));
                }
            }

            UriBuilder builder = new UriBuilder(EndPoint);

            builder.Path  = path;
            builder.Query = sb.ToString();

            return(builder.Uri);
        }
コード例 #8
0
        public async Task <IActionResult> GetResources([FromQuery] QueryStringParameters queryStringParametersDto)
        {
            Parameters parameters =
                _parametersProcessorService.ProcessParameters(Request.RouteValues, Request.QueryString);
            string?query = _sparqlFactoryService.GetFinalQuery(
                _endpointService.GetEntryResourceQuery(parameters.RouteParameters.Endpoint,
                                                       parameters.RouteParameters.Graph), parameters);

            if (query != null)
            {
                var sparqlResults =
                    await _endpointService.ExecuteSelectSparqlQueryAsync(parameters.RouteParameters.Endpoint,
                                                                         parameters.RouteParameters.Graph, query);

                if (sparqlResults != null)
                {
                    CurieVm curiesVm = _resultFormatterService.FormatSparqlResultToCurieList(sparqlResults);
                    return(Ok(curiesVm));
                }
            }

            return(NotFound(new CustomErrorVm()
            {
                CustomErrorMessage =
                    $"No results were found! Check endpoint configuration at {UrlHelperClass.GetEndpointUrl(Request.GetEncodedUrl())}.",
                GeneratedQuery = query
            }));
        }
コード例 #9
0
        /// <summary>
        ///   Initialize the url of the API.
        /// </summary>
        /// <param name="resources"> A list of API resources. </param>
        /// <param name="parameters"> A list of parameters. </param>
        /// <returns> A <see cref="UriBuilder" /> object representing the url. </returns>
        public static UriBuilder BuildApiUrl(Collection <Resource> resources, QueryStringParameters parameters)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(Constants.ApiBaseUrl);
            foreach (Resource resource in resources)
            {
                if (string.IsNullOrEmpty(resource.Name) == false)
                {
                    sb.Append("/");
                    sb.Append(resource.Name);
                    if (string.IsNullOrEmpty(resource.Identifier) == false)
                    {
                        sb.Append("/");
                        sb.Append(resource.Identifier);
                    }
                }
            }

            UriBuilder uri = new UriBuilder(sb.ToString());

            if (parameters != null)
            {
                return(parameters.AppendToUri(uri));
            }
            else
            {
                return(uri);
            }
        }
コード例 #10
0
        public BillableActivityControllerTests()
        {
            //get Billable Activities test data
            _billableActivities = BillableActivitiesData.getTestBillableActivities();

            //AutoMapper Configuration
            var profiles      = new AutoMapperProfiles();
            var configuration = new MapperConfiguration(config => config.AddProfile(profiles));

            _mapper = new Mapper(configuration);

            //Configure Logger Mock
            var _loggerMock = new Mock <ILogger <BillableActivitiesController> >();

            _logger = _loggerMock.Object;

            //Mock Repo initialization
            _mockRepository = new Mock <IGenericRepository <BillableActivity> >();

            //Create Custom ControllerContext and add it to Controller for logging in the Controller in case of error
            //_controller.ControllerContext = new ControllerContextModel();

            //QueryStringParameters for paging
            parameters            = new QueryStringParameters();
            parameters.pageNumber = 1;
            parameters.pageSize   = 10;
        }
コード例 #11
0
 public void SetType(string filter)
 {
     if (filter != null)
     {
         QueryStringParameters.Add("type", filter.ToLower());
     }
 }
コード例 #12
0
        public async void GetAllLegalCasesAsync_Returns_LegalCases_Paged(QueryStringParameters parameters)
        {
            //get the expected LegalCases
            IEnumerable <LegalCase> expectedLegalCases = _legalCases
                                                         .OrderBy(lc => lc.Client_Id)
                                                         .Skip((parameters.pageNumber - 1) * parameters.pageSize)
                                                         .Take(parameters.pageSize);
            IEnumerable <LegalCaseDTO> expectedLegalCasesDTO = _mapper.Map <IEnumerable <LegalCaseDTO> >(expectedLegalCases);


            //configure the Repo return
            _mockRepository.Setup(repo => repo.GetAllPagedAsync(lc => lc.Client_Id, parameters)).ReturnsAsync(expectedLegalCases);

            //call the controller method
            var actionResult = await _controller.GetAllLegalCasesAsync(parameters);

            //Get the LegalCases form the ActionResult returned
            var okObjectResult = Assert.IsType <OkObjectResult>(actionResult.Result);
            IEnumerable <LegalCaseDTO> actualLegalCasesDTO = okObjectResult.Value as IEnumerable <LegalCaseDTO>;
            int?statusCode = okObjectResult.StatusCode;

            //Assertions
            Assert.Equal(200, statusCode);

            Assert.IsType <List <LegalCaseDTO> >(actualLegalCasesDTO);

            //use FluentAssertions to compare Collections of Reference types
            actualLegalCasesDTO.Should().BeEquivalentTo(expectedLegalCasesDTO, options => options.ComparingByMembers <LegalCaseDTO>());
        }
コード例 #13
0
        public async Task <bool> RecordsAlterA(string domainName, long recordId, string host, int ttl, IPAddress address)
        {
            QueryStringParameters nvc = new QueryStringParameters();

            nvc["domain-name"] = domainName;
            nvc["record-id"]   = recordId.ToString();
            nvc["host"]        = host;
            nvc["ttl"]         = ttl.ToString();
            nvc["record"]      = address.ToString();

            if (address.AddressFamily == AddressFamily.InterNetwork)
            {
                nvc["record-type"] = RecordType.A.ToString();
            }
            else if (address.AddressFamily == AddressFamily.InterNetworkV6)
            {
                nvc["record-type"] = RecordType.AAAA.ToString();
            }
            else
            {
                throw new ArgumentException("Address must be IPv4 or IPv6", nameof(address));
            }

            StatusMessage status = await ExecuteGet <StatusMessage>("/dns/mod-record.json", nvc).ConfigureAwait(false);

            if (status.Status == "Failed")
            {
                throw new Exception(status.StatusDescription);
            }

            return(status.Status == "Success");
        }
コード例 #14
0
 /// <summary>
 ///   Initialize the url of the API.
 /// </summary>
 /// <param name="identifier"> The identifier for a member. </param>
 /// <param name="resourceName"> The name of the resource. </param>
 /// <param name="parameters"> A list of parameters. </param>
 /// <returns> A <see cref="UriBuilder" /> object representing the url. </returns>
 public static UriBuilder BuildApiUrlForMember(string identifier, string resourceName,
                                               QueryStringParameters parameters)
 {
     return(BuildApiUrlForMember(identifier, new Resource {
         Name = resourceName
     }, parameters));
 }
コード例 #15
0
        protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
        {
            //there is no parent category to display for Top Level items - BD
            if (ddlCategory.SelectedValue == "-1")
            {
                lblShowParent.Visible            = false;
                chkShowParent.Visible            = false;
                chkShowParentDescription.Visible = false;
                lblShowParentDescription.Visible = false;
            }
            else
            {
                lblShowParent.Visible            = true;
                chkShowParent.Visible            = true;
                chkShowParentDescription.Visible = true;
                lblShowParentDescription.Visible = true;
            }

            var qsp = new QueryStringParameters();

            qsp.ClearKeys();
            qsp.Add("ctl", Utility.AdminContainer);
            qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
            qsp.Add("adminType", "categorysort");
            qsp.Add("itemid", ddlCategory.SelectedValue);


            lnkSortCategory.NavigateUrl = BuildSortUrl();
        }
コード例 #16
0
        public void BuildApiUrlTest()
        {
            ILinkedInAuthorization   authorization = new LinkedInAuthorizationMock();
            LinkedInService_Accessor target        = new LinkedInService_Accessor(authorization);
            Collection <Resource>    resources     = new Collection <Resource>();

            resources.Add(new Resource
            {
                Name       = Constants.PeopleResourceName,
                Identifier = Constants.CurrentUserIdentifier
            });
            resources.Add(new Resource {
                Name = Constants.ResourceName
            });
            QueryStringParameters parameters = new QueryStringParameters();

            parameters.Add(Constants.QueryStringParam1, Constants.QueryStringValue1);
            parameters.Add(Constants.QueryStringParam2, Constants.QueryStringValue2);

            UriBuilder expected =
                new UriBuilder("http://api.linkedin.com/v1/people/~/resource?param1=value1&param2=value2");

            UriBuilder actual = UriUtility.BuildApiUrl(resources, parameters);

            Assert.AreEqual(expected, actual);
        }
コード例 #17
0
        protected virtual T ExecutePostRequest <T, TBody>(string relativeUrl, QueryStringParameters parameters = null, TBody body = null, IAuthenticationData authentication = null) where TBody : class
        {
            var task = Task.Run(() => ExecutePostRequestAsync <T, TBody>(relativeUrl, parameters, body, authentication));

            task.Wait();

            return(task.Result);
        }
コード例 #18
0
        protected virtual T ExecuteGetRequest <T>(string relativeUrl, QueryStringParameters parameters = null, IAuthenticationData authentication = null)
        {
            var task = Task.Run(() => ExecuteGetRequestAsync <T>(relativeUrl, parameters, authentication));

            task.Wait();

            return(task.Result);
        }
コード例 #19
0
        public void AddWhhenNameIsNull()
        {
            var queryStringParameters = new QueryStringParameters();

            var exception = Assert.Throws <ArgumentNullException>(() => queryStringParameters.Add(null));

            Assert.AreEqual("Value cannot be null.\r\nParameter name: name", exception.Message);
        }
コード例 #20
0
        public async Task <List <ZoneUpdateStatus> > GetUpdateStatus(string domainName)
        {
            QueryStringParameters nvc = new QueryStringParameters();

            nvc["domain-name"] = domainName;

            return(await ExecuteGet <List <ZoneUpdateStatus> >("/dns/update-status.json", nvc).ConfigureAwait(false));
        }
コード例 #21
0
        public async Task <bool> IsZoneUpdated(string domainName)
        {
            QueryStringParameters nvc = new QueryStringParameters();

            nvc["domain-name"] = domainName;

            return(await ExecuteGet <bool>("/dns/is-updated.json", nvc).ConfigureAwait(false));
        }
コード例 #22
0
 [HttpGet("getOrderedTasks")] // new QuaryStringParameters { Orderby = "your ordering query" }
 public IActionResult GetOrderedTasks(QueryStringParameters taskParameters)
 {
     if (taskParameters != null)
     {
         var res = _taskService.GetOrderedTasks(taskParameters);
         return(Ok(res));
     }
     return(BadRequest(new { message = "Couldnt order tasks" }));
 }
コード例 #23
0
        public void RemoveQueryStringParameter(string key)
        {
            if (!QueryStringParameters.ContainsKey(key))
            {
                return;
            }

            QueryStringParameters.Remove(key);
        }
コード例 #24
0
        public void AddWhenValueAndValueIsNull()
        {
            const string NAME = "testName";
            var          queryStringParameters = new QueryStringParameters();

            var exception = Assert.Throws <ArgumentNullException>(() => queryStringParameters.Add(NAME, null));

            Assert.AreEqual("Value cannot be null.\r\nParameter name: value", exception.Message);
        }
コード例 #25
0
        public void LoadFromQueryStringWriteLogTrue()
        {
            QueryStringParameters p   = new QueryStringParameters();
            NameValueCollection   col = new NameValueCollection();

            col.Add("log", "true");
            p.LoadFromQueryString(col);
            UnitTestAssert.IsTrue(p.WriteLog);
        }
コード例 #26
0
        public void AddSearchParam(string key, object value)
        {
            if (string.IsNullOrEmpty(key) || value == null)
            {
                return;
            }

            QueryStringParameters.Add(key, value);
        }
コード例 #27
0
        private string GetQueryString()
        {
            if (QueryStringParameters.Count > 0)
            {
                return("?" + string.Join("&", QueryStringParameters.Select(kvp => $"{kvp.Key.ToLower()}={kvp.Value}")));
            }

            return(string.Empty);
        }
コード例 #28
0
        public async Task <IEnumerable <Passenger> > GetAllAsync(QueryStringParameters queryStringParameters)
        {
            IQueryable <Passenger> passengersIq;

            // search
            if (!string.IsNullOrEmpty(queryStringParameters.SearchString))
            {
                var search = queryStringParameters.SearchString;
                passengersIq = _context.Passengers.Where(p => p.PassportNumber == search ||
                                                         p.Citizenship == search ||
                                                         p.Surname == search ||
                                                         p.Name == search)
                               .Include(passenger => passenger.Booking)
                               .ThenInclude(booking => booking.Customer)
                               .Include(passenger => passenger.Seat)
                               .AsNoTracking();
            }
            else
            {
                passengersIq = from b in _context.Passengers
                               .Include(passenger => passenger.Booking)
                               .ThenInclude(booking => booking.Customer)
                               .Include(passenger => passenger.Seat)
                               .AsNoTracking() select b;
            }

            // page
            IEnumerable <Passenger> passengers =
                await PaginatedList <Passenger> .CreateAsync(passengersIq, queryStringParameters.PageNumber,
                                                             queryStringParameters.PageSize);


            // sort string not set
            if (string.IsNullOrEmpty(queryStringParameters.SortString))
            {
                return(passengers);
            }

            // sort
            var sort = queryStringParameters.SortString;

            var count = ((PaginatedList <Passenger>)passengers).ItemCount;
            var index = ((PaginatedList <Passenger>)passengers).PageIndex;
            var size  = ((PaginatedList <Passenger>)passengers).PageSize;

            passengers = sort switch
            {
                "name_desc" => passengers.OrderByDescending(p => p.Name),
                "surname" => passengers.OrderBy(p => p.Surname),
                "surname_desc" => passengers.OrderByDescending(p => p.Surname),
                "passport" => passengers.OrderBy(p => p.PassportNumber),
                "passport_desc" => passengers.OrderByDescending(p => p.PassportNumber),
                _ => passengers.OrderBy(p => p.Name)
            };

            return(PaginatedList <Passenger> .ParsePaginatedList(passengers, count, index, size));
        }
コード例 #29
0
        private async Task <string> ExecuteGetAsString(string url, QueryStringParameters nvc)
        {
            AddAuthentication(nvc);

            Uri uri = BuildUri(url, nvc);
            HttpResponseMessage resp = await _client.GetAsync(uri).ConfigureAwait(false);

            return(await resp.Content.ReadAsStringAsync().ConfigureAwait(false));
        }
コード例 #30
0
        public void LoadFromQueryStringFilter()
        {
            QueryStringParameters p   = new QueryStringParameters();
            NameValueCollection   col = new NameValueCollection();

            col.Add("filter", "true");
            p.LoadFromQueryString(col);
            UnitTestAssert.IsTrue(p.Filter);
        }
コード例 #31
0
        public void BuildApiUrlForMemberTest()
        {
            ILinkedInAuthorization authorization = new LinkedInAuthorizationMock();
            LinkedInService_Accessor target = new LinkedInService_Accessor(authorization);
            string identifier = Constants.CurrentUserIdentifier;
            string resourceName = Constants.ResourceName;
            QueryStringParameters parameters = new QueryStringParameters();
            UriBuilder expected = new UriBuilder("http://api.linkedin.com/v1/people/~/resource");

            UriBuilder actual = UriUtility.BuildApiUrlForMember(identifier, resourceName, parameters);
            Assert.AreEqual(expected, actual);
        }
コード例 #32
0
        public void BuildApiUrlForCurrentUserTest()
        {
            ILinkedInAuthorization authorization = new LinkedInAuthorizationMock();
            LinkedInService_Accessor target = new LinkedInService_Accessor(authorization);
            QueryStringParameters parameters = new QueryStringParameters();
            parameters.Add(Constants.QueryStringParam1, Constants.QueryStringValue1);

            UriBuilder expected = new UriBuilder("http://api.linkedin.com/v1/people/~");
            expected.Query = string.Format("{0}={1}", Constants.QueryStringParam1, Constants.QueryStringValue1);

            UriBuilder actual = UriUtility.BuildApiUrlForCurrentUser(parameters);
            Assert.AreEqual(expected, actual);
        }
コード例 #33
0
        public void BuildApiUrlTest()
        {
            ILinkedInAuthorization authorization = new LinkedInAuthorizationMock();
            LinkedInService_Accessor target = new LinkedInService_Accessor(authorization);
            Collection<Resource> resources = new Collection<Resource>();
            resources.Add(new Resource
                {
                    Name = Constants.PeopleResourceName,
                    Identifier = Constants.CurrentUserIdentifier
                });
            resources.Add(new Resource {Name = Constants.ResourceName});
            QueryStringParameters parameters = new QueryStringParameters();
            parameters.Add(Constants.QueryStringParam1, Constants.QueryStringValue1);
            parameters.Add(Constants.QueryStringParam2, Constants.QueryStringValue2);

            UriBuilder expected =
                new UriBuilder("http://api.linkedin.com/v1/people/~/resource?param1=value1&param2=value2");

            UriBuilder actual = UriUtility.BuildApiUrl(resources, parameters);
            Assert.AreEqual(expected, actual);
        }
コード例 #34
0
        protected void ddlCategory_SelectedIndexChanged(object sender, EventArgs e)
        {
            //there is no parent category to display for Top Level items - BD
            if (ddlCategory.SelectedValue == "-1")
            {
                lblShowParent.Visible = false;
                chkShowParent.Visible = false;
                chkShowParentDescription.Visible = false;
                lblShowParentDescription.Visible = false;
            }
            else
            {
                lblShowParent.Visible = true;
                chkShowParent.Visible = true;
                chkShowParentDescription.Visible = true;
                lblShowParentDescription.Visible = true;
            }

            var qsp = new QueryStringParameters();
            qsp.ClearKeys();
            qsp.Add("ctl", Utility.AdminContainer);
            qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
            qsp.Add("adminType", "categorysort");
            qsp.Add("itemid", ddlCategory.SelectedValue);

            lnkSortCategory.NavigateUrl = BuildSortUrl();
        }
コード例 #35
0
 private string BuildSortUrl()
 {
     var qsp = new QueryStringParameters();
     qsp.ClearKeys();
     qsp.Add("ctl", Utility.AdminContainer);
     qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
     qsp.Add("adminType", "categorysort");
     qsp.Add("windowClose", "true");
     qsp.Add("itemid", ddlCategory.SelectedValue);
     return DotNetNuke.Common.Globals.NavigateURL(TabId, "", qsp.ToString());
 }
コード例 #36
0
        private void BindData()
        {
            int itemId = Convert.ToInt32(cboItemType.SelectedValue, CultureInfo.InvariantCulture);
            if (CategoryId > -1)
            {
                //user clicked on a subcategory.
                itemId = CategoryId;
            }
            //set the approval status ID to approved by default, if we're using approvals look for the selected value
            int approvalStatusId = ApprovalStatus.Approved.GetId();

            if (UseApprovals)
            {
                approvalStatusId = Convert.ToInt32(cboWorkflow.SelectedValue, CultureInfo.InvariantCulture);
            }

            var qsp = new QueryStringParameters();
            DataSet ds;

            if (txtArticleSearch.Text.Trim() != string.Empty)
            {
                var objSecurity = new DotNetNuke.Security.PortalSecurity();
                string searchKey = objSecurity.InputFilter(txtArticleSearch.Text.Trim(), DotNetNuke.Security.PortalSecurity.FilterFlag.NoSQL);
                //
                ds = itemId == -1 ? DataProvider.Instance().GetAdminItemListingSearchKey(TopLevelCategoryItemType.Category.GetId(), ItemType.Category.GetId(), Util.RelationshipType.CategoryToTopLevelCategory.GetId(), Util.RelationshipType.ItemToRelatedCategory.GetId(), approvalStatusId, " vi.createddate desc ", searchKey, PortalId) : DataProvider.Instance().GetAdminItemListingSearchKey(itemId, ItemType.Category.GetId(), Util.RelationshipType.ItemToParentCategory.GetId(), Util.RelationshipType.ItemToRelatedCategory.GetId(), approvalStatusId, " vi.createddate desc ", searchKey, PortalId);
            }
            else
            {
                ds = itemId == -1 ? DataProvider.Instance().GetAdminItemListing(TopLevelCategoryItemType.Category.GetId(), ItemType.Category.GetId(), Util.RelationshipType.CategoryToTopLevelCategory.GetId(), approvalStatusId, PortalId) : DataProvider.Instance().GetAdminItemListing(itemId, ItemType.Category.GetId(), Util.RelationshipType.ItemToParentCategory.GetId(), Util.RelationshipType.ItemToRelatedCategory.GetId(), approvalStatusId, PortalId);
            }
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {

                var t = new Table
                            {
                                Width = Unit.Percentage(100),
                                CssClass = "Normal",
                                CellPadding = 4,
                                CellSpacing = 0,
                                GridLines = GridLines.Horizontal,
                                BorderColor = System.Drawing.Color.Gray,
                                BorderStyle = BorderStyle.Solid,
                                BorderWidth = Unit.Pixel(1)
                            };

                var row = new TableRow { CssClass = "listing_table_head_row" };
                t.Rows.Add(row);
                var cell = new TableCell();

                row.Cells.Add(cell);
                cell.Text = Localization.GetString("ID", LocalResourceFile);

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = Localization.GetString("Name", LocalResourceFile);

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = Localization.GetString("Description", LocalResourceFile);

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = "&nbsp;";

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = "&nbsp;";

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = "&nbsp;";

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = "&nbsp;";

                cell = new TableCell();
                row.Cells.Add(cell);
                cell.Text = "&nbsp;";

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    DataRow r = dt.Rows[i];

                    row = new TableRow
                              {
                                  CssClass = i % 2 == 0 ? "adminItemSearchDarkRow" : "adminItemSearchLightRow",
                                  VerticalAlign = VerticalAlign.Top
                              };

                    t.Rows.Add(row);
                    cell = new TableCell();

                    row.Cells.Add(cell);
                    cell.Text = r["ItemID"].ToString();

                    cell = new TableCell();
                    row.Cells.Add(cell);
                    cell.Text = r["Name"].ToString();

                    cell = new TableCell();
                    row.Cells.Add(cell);
                    cell.Text = HtmlUtils.Shorten(HtmlUtils.Clean(r["Description"].ToString(), true), 200, string.Empty) + "&nbsp;";

                    cell = new TableCell();
                    row.Cells.Add(cell);

                    //check if the category has any sub categories, if not don't display link
                    var hl = new HyperLink();

                    if (Convert.ToInt32(r["ChildCount"], CultureInfo.InvariantCulture) > 0)
                    {
                        cell.Controls.Add(hl);

                        qsp.ClearKeys();
                        qsp.Add("ctl", Utility.AdminContainer);
                        qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
                        qsp.Add("adminType", "categorylist");
                        qsp.Add("itemId", r["ItemId"]);
                        //qsp.Add("category", r["Name"]);
                        qsp.Add("parentId", itemId);
                        if (TopLevelId == -1)
                        {
                            qsp.Add("topLevelId", cboItemType.SelectedValue);
                        }
                        else
                        {
                            qsp.Add("topLevelId", TopLevelId);
                        }

                        hl.NavigateUrl = BuildLinkUrl(qsp.ToString());

                        hl.Text = Localization.GetString("SubCategories", LocalResourceFile);

                    }
                    else
                    {
                        var l1 = new Label { Text = " <br /> " };
                        cell.Controls.Add(l1);
                    }
                    //Add the CategorySort link
                    cell = new TableCell();
                    row.Cells.Add(cell);
                    hl = new HyperLink();
                    cell.Controls.Add(hl);
                    qsp.ClearKeys();
                    qsp.Add("ctl", Utility.AdminContainer);
                    qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
                    qsp.Add("adminType", "categorysort");
                    qsp.Add("itemid", r["ItemId"]);

                    hl.NavigateUrl = BuildLinkUrl(qsp.ToString());

                    hl.Text = Localization.GetString("CategorySort", LocalResourceFile);

                    cell = new TableCell();
                    row.Cells.Add(cell);

                    cell = new TableCell();
                    row.Cells.Add(cell);
                    hl = new HyperLink();
                    cell.Controls.Add(hl);
                    qsp.ClearKeys();
                    qsp.Add("ctl", Utility.AdminContainer);
                    qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
                    qsp.Add("adminType", "versionslist");
                    qsp.Add("itemid", r["ItemId"]);

                    hl.NavigateUrl = BuildLinkUrl(qsp.ToString());

                    hl.Text = Localization.GetString("Versions", LocalSharedResourceFile);

                    cell = new TableCell();
                    row.Cells.Add(cell);
                    hl = new HyperLink();
                    cell.Controls.Add(hl);
                    qsp.ClearKeys();
                    qsp.Add("ctl", Utility.AdminContainer);
                    qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
                    qsp.Add("adminType", "categoryEdit");
                    qsp.Add("versionid", r["ItemVersionId"]);
                    //qsp.Add("modid", r["ModuleId"]);
                    qsp.Add("parentId", itemId);
                    if (TopLevelId == -1)
                    {
                        qsp.Add("topLevelId",
                            cboItemType.SelectedValue);
                    }
                    else
                    {
                        qsp.Add("topLevelId", TopLevelId);
                    }

                    hl.NavigateUrl = BuildLinkUrl(qsp.ToString());
                    hl.Text = Localization.GetString("Edit", LocalResourceFile);
                }

                phList.Controls.Add(t);

                if (!cboItemType.SelectedValue.Equals("-1"))
                {
                    lblMessage.Text = Localization.GetString("SubCategoriesFor", LocalResourceFile) + " " + cboItemType.SelectedItem;
                }
            }

            else
            {
                if (!cboItemType.SelectedValue.Equals("-1"))
                {
                    lblMessage.Text = Localization.GetString("NoSubcategoriesFor", LocalResourceFile) + " " + cboItemType.SelectedItem;
                }
            }
        }
コード例 #37
0
        protected string GetVersionEditUrl(object row)
        {
            var view = (DataRowView) row;
            var qsp = new QueryStringParameters();

            qsp.ClearKeys();
            qsp.Add("ctl", Utility.AdminContainer);
            qsp.Add("mid", ModuleId.ToString(CultureInfo.InvariantCulture));
            qsp.Add("adminType", view["adminType"]);
            qsp.Add("versionid", view["ItemVersionId"]);
            //todo: why would we need modid on the URL for editing a version?
            //qsp.Add("modid", view["ModuleId"]);

            return  BuildLinkUrl(qsp.ToString());
        }