/// <summary>
        /// Gets the voucher.
        /// </summary>
        /// <param name="accessToken">The access token.</param>
        /// <param name="applicationVersion">The application version.</param>
        /// <param name="voucherCode">The voucher code.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        public async Task <GetVoucherResponseMessage> GetVoucher(String accessToken,
                                                                 String applicationVersion,
                                                                 String voucherCode,
                                                                 CancellationToken cancellationToken)
        {
            GetVoucherResponseMessage response = null;
            String requestUri = this.BuildRequestUrl($"/api/vouchers?applicationVersion={applicationVersion}&voucherCode={voucherCode}");

            try
            {
                // Add the access token to the client headers
                this.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                // Make the Http Call here
                HttpResponseMessage httpResponse = await this.HttpClient.GetAsync(requestUri, cancellationToken);

                // Process the response
                String content = await this.HandleResponse(httpResponse, cancellationToken);

                // call was successful so now deserialise the body to the response object
                response = JsonConvert.DeserializeObject <GetVoucherResponseMessage>(content);
            }
            catch (Exception ex)
            {
                // An exception has occurred, add some additional information to the message
                Exception exception = new Exception($"Error getting voucher for voucher code {voucherCode}.", ex);

                throw exception;
            }

            return(response);
        }
        public async Task WhenIGetTheFollowingVouchersTheVoucherIsReturned(Table table)
        {
            foreach (TableRow tableRow in table.Rows)
            {
                EstateDetails estateDetails = this.TestingContext.GetEstateDetails(tableRow);

                String operatorIdentifier = SpecflowTableHelper.GetStringRowValue(tableRow, "OperatorName");
                Guid   transactionId      = Guid.Parse(SpecflowTableHelper.GetStringRowValue(tableRow, "TransactionId"));

                (Guid transactionId, Decimal value, String voucherCode, Guid voucherId)voucher = estateDetails.GetVoucher(operatorIdentifier, transactionId);

                // Build URI
                String uri = $"api/vouchers?applicationVersion=1.0.0&voucherCode={voucher.voucherCode}";

                String accessToken = estateDetails.GetVoucherRedemptionUserToken(operatorIdentifier);

                this.TestingContext.DockerHelper.HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

                HttpResponseMessage response = await this.TestingContext.DockerHelper.HttpClient.GetAsync(uri, CancellationToken.None).ConfigureAwait(false);

                String content = await response.Content.ReadAsStringAsync(CancellationToken.None).ConfigureAwait(false);

                //var gimp = JsonConvert.DeserializeObject<GetVoucherResponseMessage>(content);
                response.IsSuccessStatusCode.ShouldBeTrue();

                GetVoucherResponseMessage getVoucherResponse = JsonConvert.DeserializeObject <GetVoucherResponseMessage>(await response.Content.ReadAsStringAsync().ConfigureAwait(false));

                getVoucherResponse.VoucherCode.ShouldBe(voucher.voucherCode);
                getVoucherResponse.VoucherId.ShouldBe(voucher.voucherId);
                getVoucherResponse.Value.ShouldBe(voucher.value);
            }
        }
Exemple #3
0
        /// <summary>
        /// Gets the voucher details.
        /// </summary>
        /// <param name="voucherCode">The voucher code.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns></returns>
        private async Task <GetVoucherResponseMessage> GetVoucherDetails(String voucherCode,
                                                                         CancellationToken cancellationToken)
        {
            await this.Database.InsertLogMessage(DatabaseContext.CreateInformationLogMessage($"About to get voucher details for voucher code {voucherCode}"));

            GetVoucherResponseMessage voucherDetails = null;

            await
            this.Database.InsertLogMessage(DatabaseContext
                                           .CreateInformationLogMessage($"Message Sent to Host Application version [{this.Device.GetSoftwareVersion()}] Voucher code [{voucherCode}]"));

            voucherDetails = await this.VoucherManagerAclClient.GetVoucher(App.TokenResponse.AccessToken,
                                                                           this.Device.GetSoftwareVersion(),
                                                                           voucherCode,
                                                                           cancellationToken);

            String responseJson = JsonConvert.SerializeObject(voucherDetails);

            await this.Database.InsertLogMessage(DatabaseContext.CreateInformationLogMessage($"Message Rcv from Host [{responseJson}]"));

            if (voucherDetails.ResponseCode != "0000")
            {
                return(null);
            }

            return(voucherDetails);
        }
        public void ModelFactory_ConvertFrom_GetVoucherResponse_NullValue_IsConverted()
        {
            ModelFactory modelFactory = new ModelFactory();

            GetVoucherResponse        model = null;
            GetVoucherResponseMessage dto   = modelFactory.ConvertFrom(model);

            dto.ShouldBeNull();
        }
        public void ModelFactory_ConvertFrom_GetVoucherResponse_IsConverted()
        {
            ModelFactory modelFactory = new ModelFactory();

            GetVoucherResponse        model = TestData.GetVoucherResponseModel;
            GetVoucherResponseMessage dto   = modelFactory.ConvertFrom(model);

            dto.ShouldNotBeNull();
            dto.ContractId.ShouldBe(model.ContractId);
            dto.VoucherCode.ShouldBe(model.VoucherCode);
            dto.EstateId.ShouldBe(model.EstateId);
            dto.Value.ShouldBe(model.Value);
            dto.ExpiryDate.ShouldBe(model.ExpiryDate);
            dto.VoucherId.ShouldBe(model.VoucherId);
            dto.ResponseMessage.ShouldBe(model.ResponseMessage);
            dto.ResponseCode.ShouldBe(model.ResponseCode);
            dto.Balance.ShouldBe(model.Balance);
        }
Exemple #6
0
        /// <summary>
        /// Displays the voucher details.
        /// </summary>
        /// <param name="voucherCode">The voucher code.</param>
        private async Task DisplayVoucherDetails(String voucherCode)
        {
            GetVoucherResponseMessage voucherDetails = await this.GetVoucherDetails(voucherCode, CancellationToken.None);

            if (voucherDetails == null)
            {
                CrossToastPopUp.Current.ShowToastWarning($"No voucher details found with code {voucherCode}");
                return;
            }

            // TODO: Create a factory
            this.RedemptionVoucherDetailsViewModel.ExpiryDate  = voucherDetails.ExpiryDate;
            this.RedemptionVoucherDetailsViewModel.Value       = voucherDetails.Value;
            this.RedemptionVoucherDetailsViewModel.VoucherCode = voucherDetails.VoucherCode;

            this.RedemptionVoucherDetailsPage.Init(this.RedemptionVoucherDetailsViewModel);

            await Application.Current.MainPage.Navigation.PushAsync((Page)this.RedemptionVoucherDetailsPage);
        }
        /// <summary>
        /// Converts from.
        /// </summary>
        /// <param name="model">The model.</param>
        /// <returns></returns>
        public GetVoucherResponseMessage ConvertFrom(GetVoucherResponse model)
        {
            if (model == null)
            {
                return(null);
            }

            GetVoucherResponseMessage responseMessage = new GetVoucherResponseMessage
            {
                ContractId      = model.ContractId,
                EstateId        = model.EstateId,
                VoucherCode     = model.VoucherCode,
                VoucherId       = model.VoucherId,
                ExpiryDate      = model.ExpiryDate,
                Value           = model.Value,
                ResponseMessage = model.ResponseMessage,
                ResponseCode    = model.ResponseCode,
                Balance         = model.Balance
            };

            return(responseMessage);
        }