Skip to content

Commit

Permalink
#292 Add support for the Manage order lines endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
Viincenttt committed Jan 26, 2023
1 parent 25e2386 commit cfd5fa4
Show file tree
Hide file tree
Showing 5 changed files with 66 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Mollie.Api/Client/Abstract/IOrderClient.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using System.Threading.Tasks;
using Mollie.Api.Models.List;
using Mollie.Api.Models.Order;
using Mollie.Api.Models.Order.Request;
using Mollie.Api.Models.Payment.Response;
using Mollie.Api.Models.Refund;
using Mollie.Api.Models.Url;
Expand All @@ -11,6 +12,7 @@ public interface IOrderClient {
Task<OrderResponse> GetOrderAsync(string orderId, bool embedPayments = false, bool embedRefunds = false, bool embedShipments = false, bool testmode = false);
Task<OrderResponse> UpdateOrderAsync(string orderId, OrderUpdateRequest orderUpdateRequest);
Task<OrderResponse> UpdateOrderLinesAsync(string orderId, string orderLineId, OrderLineUpdateRequest orderLineUpdateRequest);
Task<OrderResponse> ManageOrderLinesAsync(string orderId, ManageOrderLinesRequest manageOrderLinesRequest);
Task CancelOrderAsync(string orderId, bool testmode = false);
Task<ListResponse<OrderResponse>> GetOrderListAsync(string from = null, int? limit = null, string profileId = null, bool testmode = false);
Task<ListResponse<OrderResponse>> GetOrderListAsync(UrlObjectLink<ListResponse<OrderResponse>> url);
Expand Down
5 changes: 5 additions & 0 deletions Mollie.Api/Client/OrderClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Mollie.Api.Models;
using Mollie.Api.Models.List;
using Mollie.Api.Models.Order;
using Mollie.Api.Models.Order.Request;
using Mollie.Api.Models.Payment.Response;
using Mollie.Api.Models.Refund;
using Mollie.Api.Models.Url;
Expand All @@ -32,6 +33,10 @@ public class OrderClient : BaseMollieClient, IOrderClient {
return await this.PatchAsync<OrderResponse>($"orders/{orderId}/lines/{orderLineId}", orderLineUpdateRequest).ConfigureAwait(false);
}

public async Task<OrderResponse> ManageOrderLinesAsync(string orderId, ManageOrderLinesRequest manageOrderLinesRequest) {
return await this.PatchAsync<OrderResponse>($"orders/{orderId}/lines", manageOrderLinesRequest).ConfigureAwait(false);
}

public async Task CancelOrderAsync(string orderId, bool testmode = false) {
var data = TestmodeModel.Create(testmode);
await this.DeleteAsync($"orders/{orderId}", data).ConfigureAwait(false);
Expand Down
57 changes: 57 additions & 0 deletions Mollie.Api/Models/Order/Request/ManageOrderLinesRequest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using System.Collections.Generic;

namespace Mollie.Api.Models.Order.Request {
public class ManageOrderLinesRequest {
/// <summary>
/// List of operations to be processed.
/// </summary>
public IList<ManageOrderLinesOperation> Operations { get; set; }
}

public static class OrderLineOperation {
public const string Add = "add";
public const string Update = "update";
public const string Cancel = "cancel";
}

public class ManageOrderLinesAddOperationData : OrderLineRequest {
}

public class ManageOrderLinesUpdateOperationData : OrderLineUpdateRequest {
public string Id { get; set; }
}

public class ManagerOrderLinesCancelOperationData : OrderLineDetails {
}

public abstract class ManageOrderLinesOperation {
/// <summary>
/// Operation type. Either `add`, `update`, or `cancel`.
/// </summary>
public string Operation { get; protected set; }
}

public class ManageOrderLinesAddOperation : ManageOrderLinesOperation {
public ManageOrderLinesAddOperationData Data { get; set; }

public ManageOrderLinesAddOperation() {
this.Operation = OrderLineOperation.Add;
}
}

public class ManageOrderLinesUpdateOperation : ManageOrderLinesOperation {
public ManageOrderLinesUpdateOperationData Data { get; set; }

public ManageOrderLinesUpdateOperation() {
this.Operation = OrderLineOperation.Update;
}
}

public class ManageOrderLinesCancelOperation : ManageOrderLinesOperation {
public ManagerOrderLinesCancelOperationData Data { get; set; }

public ManageOrderLinesCancelOperation() {
this.Operation = OrderLineOperation.Cancel;
}
}
}
2 changes: 1 addition & 1 deletion Mollie.Api/Models/Order/Request/OrderLineUpdateRequest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public class OrderLineUpdateRequest {
/// Any discounts applied to the order line. For example, if you have a two-for-one sale, you should pass the
/// amount discounted as a positive amount.
/// </summary>
public Amount DiscountPrice { get; set; }
public Amount DiscountAmount { get; set; }

/// <summary>
/// The total amount of the line, including VAT and discounts. Adding all totalAmount values together should
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ In the past, this library used enums that were decorated with the EnumMemberAttr
- Mollie.Api.Models.Order.OrderLineDetailsType
- Mollie.Api.Models.Order.OrderLineStatus
- Mollie.Api.Models.Order.OrderStatus
- Mollie.Api.Models.Order.OrderLineOperation
- Mollie.Api.Models.Profile.CategoryCode
- Mollie.Api.Models.Profile.ProfileStatus
- Mollie.Api.Models.Refund.RefundStatus
Expand Down

0 comments on commit cfd5fa4

Please sign in to comment.