public Order(OrderResponseObject orderResponseObject, SveaHttpClient client) { BillingAddress = orderResponseObject.BillingAddress; CancelledAmount = orderResponseObject.CancelledAmount; CreationDate = orderResponseObject.CreationDate; Currency = orderResponseObject.Currency; CustomerReference = orderResponseObject.CustomerReference; EmailAddress = orderResponseObject.EmailAddress; Id = orderResponseObject.Id; IsCompany = orderResponseObject.IsCompany; MerchantOrderId = orderResponseObject.MerchantOrderId; NationalId = orderResponseObject.NationalId; OrderAmount = orderResponseObject.OrderAmount; OrderStatus = orderResponseObject.OrderStatus; PaymentType = orderResponseObject.PaymentType; PhoneNumber = orderResponseObject.PhoneNumber; ShippingAddress = orderResponseObject.ShippingAddress; SveaWillBuy = orderResponseObject.SveaWillBuy; AvailableActions = orderResponseObject.Actions; Actions = new OrderActions(orderResponseObject, client); OrderRows = orderResponseObject.OrderRows?.Select(x => new OrderRow(orderResponseObject.Id, x, client)).ToList(); Deliveries = orderResponseObject.Deliveries?.Select(x => new Delivery(orderResponseObject.Id, x, client)).ToList(); }
public OrderActions(OrderResponseObject orderResponse, SveaHttpClient client) { foreach (var action in orderResponse.Actions) { switch (action) { case OrderActionType.CanCancelOrder: Cancel = async payload => await client.HttpPatch <object>( new Uri($"/api/v1/orders/{orderResponse.Id}/", UriKind.Relative), payload); break; case OrderActionType.CanCancelOrderRow: CancelOrderRows = async payload => await client.HttpPatch <object>( new Uri($"/api/v1/orders/{orderResponse.Id}/rows/cancelOrderRows", UriKind.Relative), payload); break; case OrderActionType.CanCancelAmount: CancelAmount = async payload => await client.HttpPatch <object>( new Uri($"/api/v1/orders/{orderResponse.Id}/", UriKind.Relative), payload); break; case OrderActionType.CanDeliverOrder: case OrderActionType.CanDeliverOrderPartially: DeliverOrder = async payload => { var response = await client.HttpPost <ResourceResponseObject <OrderResponseObject>, OrderResponseObject>( new Uri($"/api/v1/orders/{orderResponse.Id}/deliveries", UriKind.Relative), payload); var resource = new ResourceResponse <OrderResponseObject, Order>(response, () => new Order(response.Resource, client)); return(resource); }; break; case OrderActionType.CanAddOrderRow: AddOrderRow = async payload => { var response = await client.HttpPost <ResourceResponseObject <AddOrderRowResponseObject>, AddOrderRowResponseObject>( new Uri($"/api/v1/orders/{orderResponse.Id}/rows", UriKind.Relative), payload); var resource = new ResourceResponse <AddOrderRowResponseObject, AddOrderRowResponse>(response, () => new AddOrderRowResponse(response.Resource)); return(resource); }; AddOrderRows = async payload => await client.HttpPost <AddOrderRowsResponse>( new Uri($"/api/v1/orders/{orderResponse.Id}/rows/addOrderRows", UriKind.Relative), payload); break; case OrderActionType.CanUpdateOrderRow: UpdateOrderRows = async payload => await client.HttpPost <object>( new Uri($"/api/v1/orders/{orderResponse.Id}/rows/updateOrderRows", UriKind.Relative), payload); ReplaceOrderRows = async payload => await client.HttpPut <object>( new Uri($"/api/v1/orders/{orderResponse.Id}/rows/replaceOrderRows", UriKind.Relative), payload); break; } } }