예제 #1
0
        public async Task <ActionResult <PagedResponse <List <Thing> > > > GetThing([FromQuery] ThingPaginationFilter filter)
        {
            var userId = HttpContext.User
                         .Claims
                         .Where(claim => claim.Type.Equals(ClaimTypes.NameIdentifier))
                         .First()
                         .Value;

            if (filter.Owner.HasValue)
            {
                if (filter.Owner.Value.ToString() != userId & !HttpContext.User.IsInRole("Admin"))
                {
                    return(Forbid());
                }
            }

            var things = Thing.Filter(_context.Thing, new Guid(userId));

            (var pagedData, var totalCount) = await filter.Process(things);

            var pagedReponse = PaginationHelper.CreatePagedReponse(
                await pagedData.ToListAsync(),
                filter,
                totalCount,
                _uriService,
                Request
                );

            return(Ok(pagedReponse));
        }
예제 #2
0
        protected override async Task OnInitializedAsync()
        {
            ThingPaginationFilter paginationFilter = new ThingPaginationFilter();

            paginationFilter.Type = ThingType.EnergyMonitor;

            var result = await IoTSuiteService.GetThings(paginationFilter);

            things            = result.Data;
            thingsPlaceholder = "Choose a Thing";

            await InvokeAsync(StateHasChanged);

            hubConnection = new HubConnectionBuilder()
                            .WithUrl(UriHelper.ToAbsoluteUri("/Hub/SignalR"), options =>
            {
                options.AccessTokenProvider = async() =>
                {
                    var tokenResult = await TokenProvider.RequestAccessToken();

                    if (tokenResult.TryGetToken(out var token))
                    {
                        return(await Task.FromResult(token.Value));
                    }
                    else
                    {
                        return(await Task.FromResult(string.Empty));
                    }
                };
예제 #3
0
 public async Task <PagedResponse <List <Thing> > > GetThings(ThingPaginationFilter paginationFilter)
 {
     try
     {
         return(await httpClient.GetFromJsonAsync <PagedResponse <List <Thing> > >($"Things?{paginationFilter.ToQueryString()}", jsonSerializerOptions));
     }
     catch (AccessTokenNotAvailableException exception)
     {
         exception.Redirect();
         return(null);
     }
 }