/// <summary>
        /// Loads the stories.
        /// </summary>
        /// <returns>The stories.</returns>
        /// <param name="type">Type.</param>
        private async Task LoadStories(string type)
        {
            var tokens = this.keychainService.GetAuthorizedKeychainRequestModel();

            var requestModel =
                new AuthorizedPaginatedFacadeRequestModel
            {
                AccessToken  = tokens.AccessToken,
                RefreshToken = tokens.RefreshToken,
                Paging       = new PaginationConfigModel {
                    PageToGet = 1, NumberItems = 4
                },
                QueryParameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(MagicStrings.StoryTypes, type),
                    new KeyValuePair <string, object>(MagicStrings.FilterByLocation, false)
                }
            };

            var result = await this.storyFacade.GetStories(requestModel);

            if (result.StatusCode == HttpStatusCode.OK)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    this.ReloadStories(type, result.Content.Stories);
                });
            }
            else
            {
                await this.DialogService.DisplayAlertAsync(GrosvenorConstants.ApiCallErrorMessageTitle, Constants.LeaseErrorMessage, GrosvenorConstants.ApiCallErrorMessageOkButton);
            }
        }
        private async Task LoadAccountStatement()
        {
            var atuhorizedRequestModel =
                Mapper.Map <AuthorizedFacadeRequestModel>(this.keychainService.GetAuthorizedKeychainRequestModel());

            var requestModel =
                new AuthorizedPaginatedFacadeRequestModel
            {
                AccessToken  = atuhorizedRequestModel.AccessToken,
                RefreshToken = atuhorizedRequestModel.RefreshToken,
                Paging       = new PaginationConfigModel {
                    PageToGet = 1, NumberItems = 10
                },
                QueryParameters = new List <KeyValuePair <string, object> >
                {
                    new KeyValuePair <string, object>(MagicStrings.LeaseId, this.Properties.LeaseId),
                    new KeyValuePair <string, object>(MagicStrings.StartDate, DateTime.Now.AddYears(-1).AddDays(-10)),
                    new KeyValuePair <string, object>(MagicStrings.EndDate, DateTime.Now.AddDays(-10))
                }
            };

            var result = await this.propertyFacade.GetAccountStatement(requestModel);

            if (result.StatusCode == HttpStatusCode.OK)
            {
                Device.BeginInvokeOnMainThread(() =>
                {
                    this.ReloadStatement(result.Content);
                });
            }
            else
            {
                await this.DialogService.DisplayAlertAsync(
                    GrosvenorConstants.ApiCallErrorMessageTitle,
                    Constants.LeaseErrorMessage,
                    GrosvenorConstants.ApiCallErrorMessageOkButton);
            }
        }
Example #3
0
        /// <summary>The get stories.</summary>
        /// <param name="model">The model.</param>
        /// <returns>The <see cref="Task"/>.</returns>
        public async Task <BaseFacadeResponseModel <GetStoriesResponseModel> > GetStories(
            AuthorizedPaginatedFacadeRequestModel model)
        {
            var apiModel = new GetStoriesApiRequestModel
            {
                NumberOfItems = model.Paging.NumberItems,
                PageToGet     = model.Paging.PageToGet,
                StoryTypes    =
                    model.QueryParameters.GetValue(
                        MagicStrings.StoryTypes),
                TagList =
                    model.QueryParameters.GetValue(MagicStrings.TagList),
                FilterByLocation = (bool)model.QueryParameters.GetValue(
                    MagicStrings.FilterByLocation,
                    ListExtensions.DictReturnType.Boolean)
            };

            // try api call with access token
            var runner = await this.authWrapper.TraverseReauth(
                () => this.storyApi.GetStories(
                    model.AccessToken,
                    apiModel.StoryTypes,
                    apiModel.TagList,
                    apiModel.PageToGet,
                    apiModel.NumberOfItems,
                    apiModel.FilterByLocation),
                model.RefreshToken);

            // generic runner response that sets up the return object
            var runnerResponse = await new ApiRunnerResponseHelper().ReturnRunnerResponse(
                runner,
                new GetStoriesResponseModel(),
                new GetStoriesApiResponseModel());

            var mappedFacadeResponse =
                runnerResponse.FacadeResponseModel as BaseFacadeResponseModel <GetStoriesResponseModel>;

            // here we need to translate the api content response into the UI response
            if (runnerResponse.ApiContentResponseModelContent != null)
            {
                var apiResponse = runnerResponse.ApiContentResponseModelContent as GetStoriesApiResponseModel;
                var stories     = new List <Story>();
                if (apiResponse != null)
                {
                    foreach (var story in apiResponse.Stories)
                    {
                        stories.Add(
                            new Story
                        {
                            Id           = story.Id,
                            Content      = story.HtmlContent,
                            Category     = story.Category,
                            DateCreated  = story.DateCreated,
                            DateModified = story.DateModified,
                            ImageAlt     = story.ImageAlt,
                            ImageUrl     = story.ImageUrl,
                            StoryFormat  = story.StoryFormat,
                            StoryUrl     = story.StoryUrl,
                            Tags         = story.Tags.Select(x => x.Tag).ToList(),
                            Title        = story.Title,
                            Description  = story.Description
                        });
                    }

                    if (mappedFacadeResponse != null)
                    {
                        mappedFacadeResponse.Content =
                            new GetStoriesResponseModel
                        {
                            Stories            = stories,
                            TotalNumberOfItems = apiResponse.TotalNumberOfItems
                        };
                    }
                }
            }

            return(mappedFacadeResponse);
        }
        /// <summary>
        /// The get account statement.
        /// </summary>
        /// <param name="requestModel">
        /// The request model.
        /// </param>
        /// <returns>
        /// The
        ///     <see cref="Task"/>
        ///     .
        /// </returns>
        /// <exception cref="NotImplementedException">
        /// </exception>
        public async Task <BaseFacadeResponseModel <AccountStatementResponseModel> > GetAccountStatement(
            AuthorizedPaginatedFacadeRequestModel requestModel)
        {
            var apiAccountStatement =
                new AccountStatementApiRequestModel
            {
                LeaseId =
                    requestModel.QueryParameters.GetValue(
                        MagicStrings.LeaseId,
                        true),
                StartDate =
                    ((DateTime)requestModel.QueryParameters.GetValue(
                         MagicStrings.StartDate,
                         ListExtensions.DictReturnType.DateTime)).ToString(
                        SharedConfig.LongDateFormat,
                        CultureInfo.InvariantCulture),
                EndDate =
                    ((DateTime)requestModel.QueryParameters.GetValue(
                         MagicStrings.EndDate,
                         ListExtensions.DictReturnType.DateTime)).ToString(
                        SharedConfig.LongDateFormat,
                        CultureInfo.InvariantCulture)
            };

            // try api call with access token
            var runner = await this.authenticationWrapper.TraverseReauth(
                () => this.propertyApi.GetAccountStatement(
                    requestModel.AccessToken,
                    apiAccountStatement.LeaseId,
                    apiAccountStatement.StartDate,
                    apiAccountStatement.EndDate,
                    requestModel.Paging.PageToGet,
                    requestModel.Paging.NumberItems),
                requestModel.RefreshToken);

            // generic runner response that sets up the return object
            var runnerResponse = await new ApiRunnerResponseHelper().ReturnRunnerResponse(
                runner,
                new AccountStatementResponseModel(),
                new AccountStatementApiResponseModel());

            var mappedFacadeResponse =
                runnerResponse.FacadeResponseModel as BaseFacadeResponseModel <AccountStatementResponseModel>;

            // here we need to translate the api content response into the UI response
            if (runnerResponse.ApiContentResponseModelContent != null)
            {
                var apiResponse = runnerResponse.ApiContentResponseModelContent as AccountStatementApiResponseModel;
                if (apiResponse != null)
                {
                    mappedFacadeResponse.Content =
                        new AccountStatementResponseModel()
                    {
                        AccountStatementEntries =
                            Mapper.Map <IEnumerable <AccountStatementEntry> >(
                                apiResponse.AccountStatementEntries),
                        TotalNumberOfItems = apiResponse.TotalNumberOfItems
                    }
                }
                ;
            }

            return(mappedFacadeResponse);
        }