/// <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); } }
/// <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); }
/// <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); }