Beispiel #1
0
 public async Task <IActionResult> UpdateOrder(UpdateOrderRequestDto updateOrderRequestDto)
 {
     return(Ok(await _mediator.Send(new UpdateOrderCommand
     {
         UpdateOrderRequestDto = updateOrderRequestDto
     })));
 }
Beispiel #2
0
        public async Task <BaseResponseDto <UpdateOrderResponseDto> > UpdateOrder(
            UpdateOrderRequestDto request,
            CancellationToken cancellationToken
            )
        {
            if (request is null)
            {
                throw new ArgumentNullException(nameof(request));
            }

            var payload = new UpdateOrderRequestRemoteDto
            {
                transport_type = TransportTypeToString(request.TransportType),
                cashed         = request.Cashed,
                credit         = request.Credit,
                delay          = request.Delay,
                has_return     = request.HasReturn,
                pay_at_dest    = request.PayAtDest
            };
            var payloadJson = JsonSerializer.Serialize(payload);

            var path = UpdateOrderV2EndpointPath.Replace(OrderIdPlaceholder, request.OrderId);

            var retryContext = await RetryHandler.BeginTry(cancellationToken);

            HttpResponseMessage response = null;
            bool retry = false;

            var content = new StringContent(payloadJson, Encoding.UTF8, ApplicationJsonMime);

            path = CreatePath(path);

            do
            {
                try
                {
                    response = await Send(
                        new HttpRequestMessage(HttpMethod.Put, path)
                    {
                        Content = content
                    },
                        cancellationToken
                        );

                    if (!response.IsSuccessStatusCode)
                    {
                        return(await ThrowOnInvalidStatusCode <UpdateOrderResponseDto>(response));
                    }

                    await RetryHandler.EndTry(retryContext, cancellationToken);
                }
                catch (Exception ex)
                {
                    retry = await RetryHandler.CatchException(retryContext, ex, cancellationToken);
                }
            } while (retry);

            if (response is null)
            {
                throw new InvalidOperationException();
            }

            var responseStream = await response.Content.ReadAsStreamAsync();

            var result =
                JsonSerializer.Deserialize <RemoteBaseResponseDto <UpdateOrderResponseRemoteDto> >(responseStream);

            if (result is null)
            {
                throw new AlopeykException("Object was empty in alopeyk's response.");
            }

            var obj = result.@object;

            UpdateOrderResponseDto resultObject = null;

            if (!(obj is null))
            {
                resultObject = new UpdateOrderResponseDto();
                MapGetOrderDetailsResponseRDtoToResponseDto(resultObject, obj);
            }

            var output = new BaseResponseDto <UpdateOrderResponseDto>
            {
                Status  = FormatStatusCode(result.status),
                Message = result.message,
                Object  = resultObject
            };

            BindBaseResponse(output, response);

            return(output);
        }