public async Task Then_The_Api_Is_Called_Returning_The_PledgeReference( CreatePledgeRequest pledge, CreatePledgeResponse response, [Frozen] Mock <ILevyTransferMatchingApiClient <LevyTransferMatchingApiConfiguration> > mockLevyTransferMatchingApiClient, LevyTransferMatchingService levyTransferMatchingService) { mockLevyTransferMatchingApiClient .Setup(x => x.PostWithResponseCode <CreatePledgeResponse>(It.IsAny <CreatePledgeRequest>())) .ReturnsAsync(() => new ApiResponse <CreatePledgeResponse>(response, HttpStatusCode.Accepted, null)); var actual = await levyTransferMatchingService.CreatePledge(pledge); Assert.AreEqual(actual.Id, response.Id); }
public async Task <CreatePledgeResult> Handle(CreatePledgeCommand request, CancellationToken cancellationToken) { _logger.LogInformation($"Creating Pledge for account {request.AccountId}"); var account = await _levyTransferMatchingService.GetAccount(new GetAccountRequest(request.AccountId)); if (account == null) { _logger.LogInformation($"Account {request.AccountId} does not exist - creating"); await _levyTransferMatchingService.CreateAccount(new CreateAccountRequest(request.AccountId, request.DasAccountName)); } var locationDataItems = new List <LocationDataItem>(); foreach (var location in request.Locations) { var locationInformationResult = await _locationLookupService.GetLocationInformation(location, 0, 0); locationDataItems.Add(new LocationDataItem { Name = locationInformationResult.Name, GeoPoint = locationInformationResult.GeoPoint }); } var apiRequest = new CreatePledgeRequest(request.AccountId, new CreatePledgeRequest.CreatePledgeRequestData { AccountId = request.AccountId, Amount = request.Amount, IsNamePublic = request.IsNamePublic, DasAccountName = request.DasAccountName, Sectors = request.Sectors, JobRoles = request.JobRoles, Levels = request.Levels, Locations = locationDataItems, UserId = request.UserId, UserDisplayName = request.UserDisplayName }); var result = await _levyTransferMatchingService.CreatePledge(apiRequest); return(new CreatePledgeResult { PledgeId = result.Id, }); }
public async Task <IActionResult> CreatePledge(long accountId, [FromBody] CreatePledgeRequest createPledgeRequest) { var commandResult = await _mediator.Send(new CreatePledgeCommand { AccountId = accountId, Amount = createPledgeRequest.Amount, IsNamePublic = createPledgeRequest.IsNamePublic, DasAccountName = createPledgeRequest.DasAccountName, JobRoles = createPledgeRequest.JobRoles, Levels = createPledgeRequest.Levels, Sectors = createPledgeRequest.Sectors, Locations = createPledgeRequest.Locations, UserId = createPledgeRequest.UserId, UserDisplayName = createPledgeRequest.UserDisplayName }); return(new CreatedResult( $"/accounts/{accountId}/pledges/{commandResult.PledgeId}", (PledgeIdDto)commandResult.PledgeId)); }
public async Task <IActionResult> Create([FromBody] CreatePledgeRequest request) { if (request == null) { return(BadRequest(Phrases.InvalidRequest)); } if (String.IsNullOrEmpty(request.ClientId)) { return(BadRequest(Phrases.InvalidClientId)); } var pledgesLimitReached = await _pledgesService.IsPledgesLimitReached(request.ClientId); if (pledgesLimitReached) { return(BadRequest(Phrases.PledgesLimitReached)); } await _pledgesService.Create(request); return(Created(uri: $"api/pledges/{request.ClientId}", value: string.Empty)); }
/// <summary> /// Create a new pledge. /// </summary> /// <param name='request'> /// </param> /// <param name='customHeaders'> /// Headers that will be added to request. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> /// <exception cref="HttpOperationException"> /// Thrown when the operation returned an invalid status code /// </exception> /// <return> /// A response object containing the response body and response headers. /// </return> public async Task <HttpOperationResponse> CreatePledgeWithHttpMessagesAsync(CreatePledgeRequest request = default(CreatePledgeRequest), Dictionary <string, List <string> > customHeaders = null, CancellationToken cancellationToken = default(CancellationToken)) { if (request != null) { request.Validate(); } // Tracing bool _shouldTrace = ServiceClientTracing.IsEnabled; string _invocationId = null; if (_shouldTrace) { _invocationId = ServiceClientTracing.NextInvocationId.ToString(); Dictionary <string, object> tracingParameters = new Dictionary <string, object>(); tracingParameters.Add("request", request); tracingParameters.Add("cancellationToken", cancellationToken); ServiceClientTracing.Enter(_invocationId, this, "CreatePledge", tracingParameters); } // Construct URL var _baseUrl = BaseUri.AbsoluteUri; var _url = new System.Uri(new System.Uri(_baseUrl + (_baseUrl.EndsWith("/") ? "" : "/")), "api/pledges").ToString(); // Create HTTP transport objects var _httpRequest = new HttpRequestMessage(); HttpResponseMessage _httpResponse = null; _httpRequest.Method = new HttpMethod("POST"); _httpRequest.RequestUri = new System.Uri(_url); // Set Headers if (customHeaders != null) { foreach (var _header in customHeaders) { if (_httpRequest.Headers.Contains(_header.Key)) { _httpRequest.Headers.Remove(_header.Key); } _httpRequest.Headers.TryAddWithoutValidation(_header.Key, _header.Value); } } // Serialize Request string _requestContent = null; if (request != null) { _requestContent = SafeJsonConvert.SerializeObject(request, SerializationSettings); _httpRequest.Content = new StringContent(_requestContent, System.Text.Encoding.UTF8); _httpRequest.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json-patch+json; charset=utf-8"); } // Send Request if (_shouldTrace) { ServiceClientTracing.SendRequest(_invocationId, _httpRequest); } cancellationToken.ThrowIfCancellationRequested(); _httpResponse = await HttpClient.SendAsync(_httpRequest, cancellationToken).ConfigureAwait(false); if (_shouldTrace) { ServiceClientTracing.ReceiveResponse(_invocationId, _httpResponse); } HttpStatusCode _statusCode = _httpResponse.StatusCode; cancellationToken.ThrowIfCancellationRequested(); string _responseContent = null; if ((int)_statusCode != 400 && (int)_statusCode != 201) { var ex = new HttpOperationException(string.Format("Operation returned an invalid status code '{0}'", _statusCode)); if (_httpResponse.Content != null) { _responseContent = await _httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false); } else { _responseContent = string.Empty; } ex.Request = new HttpRequestMessageWrapper(_httpRequest, _requestContent); ex.Response = new HttpResponseMessageWrapper(_httpResponse, _responseContent); if (_shouldTrace) { ServiceClientTracing.Error(_invocationId, ex); } _httpRequest.Dispose(); if (_httpResponse != null) { _httpResponse.Dispose(); } throw ex; } // Create Result var _result = new HttpOperationResponse(); _result.Request = _httpRequest; _result.Response = _httpResponse; if (_shouldTrace) { ServiceClientTracing.Exit(_invocationId, _result); } return(_result); }
public async Task <CreatePledgeResponse> CreatePledge(CreatePledgeRequest request) { var response = await _levyTransferMatchingApiClient.PostWithResponseCode <CreatePledgeResponse>(request); return(response.Body); }
/// <summary> /// Create a new pledge. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='request'> /// Pledge value. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task CreatePledgeAsync(this IBlueAPI operations, CreatePledgeRequest request = default(CreatePledgeRequest), CancellationToken cancellationToken = default(CancellationToken)) { (await operations.CreatePledgeWithHttpMessagesAsync(request, null, cancellationToken).ConfigureAwait(false)).Dispose(); }
/// <summary> /// Create a new pledge. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='request'> /// Pledge value. /// </param> public static void CreatePledge(this IBlueAPI operations, CreatePledgeRequest request = default(CreatePledgeRequest)) { operations.CreatePledgeAsync(request).GetAwaiter().GetResult(); }