public async Task <OrphansResponse> GetOrphansAsync(OrphanParametes parameters)
        {
            string queryString = $"?pageSize={parameters.PageSize}&pageNumber={parameters.PageNumber}";
            string url         = $"{ HttpRepositorySettings.BaseApiUrl }/{ Controller }{ queryString} ";

            var request = new HttpRequestMessage(HttpMethod.Get, url);

            // TODO Add JWT token to header
            // request.Headers

            var response = await _client.SendAsync(request);

            response.EnsureSuccessStatusCode();

            IEnumerable <string> xPagination;

            response.Headers.TryGetValues("X-Pagination", out xPagination);

            ResponseMetaData metaData = null;

            if (xPagination != null)
            {
                string xPaginationData = xPagination.FirstOrDefault();
                metaData = JsonSerializer.Deserialize <ResponseMetaData>(xPaginationData, new JsonSerializerOptions {
                    PropertyNameCaseInsensitive = true
                });
            }

            var content = await response.Content.ReadAsStringAsync();

            var orphans = JsonSerializer.Deserialize <List <Orphan> >(content, new JsonSerializerOptions {
                PropertyNameCaseInsensitive = true
            });

            return(new OrphansResponse {
                Orphans = orphans, MetaData = metaData
            });
        }
예제 #2
0
        private async Task LoadOrphansAsync()
        {
            //SampleItems.Clear();
            OrphanItems.Clear();

            IEnumerable <Orphan> data;

            //
            // Use Web API or db directly
            //
            if (AppSettings.UseWebApi)
            {
                using (HttpClient client = new HttpClient())
                {
                    var orphanRepo = new OrphanHttpRepository(client);
                    var parameters = new OrphanParametes
                    {
                        PageNumber = 1,
                        PageSize   = 1000
                    };
                    var response = await orphanRepo.GetOrphansAsync(parameters);

                    data = response.Orphans.AsEnumerable();
                }
            }
            else
            {
                data = await OrphanDataService.AllOrphans();

                using (HttpClient client = new HttpClient())
                {
                    var orphanRepo = new PictureHttpRepository(client);
                    var picUrls    = await orphanRepo.GetOrphanPicUrls();

                    foreach (var item in picUrls)
                    {
                        var orphan = data.FirstOrDefault(x => x.OrphanID == item.OrphanID);
                        if (orphan != null)
                        {
                            orphan.ProfilePicUri = item.PicUrl;
                        }
                    }
                }
            }

            //var data = await SampleDataService.GetMasterDetailDataAsync();
            //var data = await OrphanDataService.AllOrphans();

            foreach (var item in data)
            {
                //SampleItems.Add(item);
                OrphanItems.Add(item);
            }

            if (MasterDetailsViewControl.ViewState == MasterDetailsViewState.Both)
            {
                Selected = OrphanItems.FirstOrDefault();

                LoadNarrationItems();
            }
        }