Skip to content

Commit dbe1433

Browse files
authored
Merge pull request #631 from nofrixion/feature/MOOV-4729-Sub-merchants
Added get child merchants to merchant api client
2 parents 179a8f4 + 8d5ece6 commit dbe1433

File tree

2 files changed

+62
-16
lines changed

2 files changed

+62
-16
lines changed

src/NoFrixion.MoneyMoov/ApiClients/MerchantClient.cs

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ public interface IMerchantClient
5656
Task<RestApiResponse<Merchant>> GetMerchantAsync(string userAccessToken, Guid merchantID);
5757

5858
Task<RestApiResponse<Merchant>> UpdateMerchantAsync(string userAccessToken, Guid merchantID, MerchantUpdate merchantUpdate);
59+
60+
Task<RestApiResponse<MerchantPageResponse>> GetChildMerchantsAsync(string userAccessToken, Guid parentMerchantID,
61+
int pageNumber = 1,
62+
int pageSize = 20,
63+
string? search = null,
64+
string? sort = null);
5965
}
6066

6167
public class MerchantClient : IMerchantClient
@@ -365,4 +371,36 @@ public Task<RestApiResponse<Merchant>> UpdateMerchantAsync(string userAccessToke
365371
_ => Task.FromResult(new RestApiResponse<Merchant>(HttpStatusCode.PreconditionFailed, new Uri(url), prob))
366372
};
367373
}
374+
375+
/// <summary>
376+
/// Calls the MoneyMoov Merchant get child merchants endpoint to get a paged list of child merchants.
377+
/// </summary>
378+
/// <param name="userAccessToken">A user-scoped JWT access token.</param>
379+
/// <param name="parentMerchantID">The unique identifier of the parent merchant.</param>
380+
/// <param name="pageNumber">The page number of the result set to retrieve.</param>
381+
/// <param name="pageSize">The number of records to return per page.</param>
382+
/// <param name="search">A search filter to apply to the child merchant list. Typically searches against merchant name or ID.</param>
383+
/// <param name="sort">The sort expression for the result set, e.g., "Name asc".</param>
384+
/// <returns>A paged response containing a list of child merchants if successful.</returns>
385+
public Task<RestApiResponse<MerchantPageResponse>> GetChildMerchantsAsync(string userAccessToken, Guid parentMerchantID,
386+
int pageNumber = 1,
387+
int pageSize = 20,
388+
string? search = null,
389+
string? sort = null)
390+
{
391+
var url = MoneyMoovUrlBuilder.MerchantsApi.ChildMerchantsUrl(_apiClient.GetBaseUri().ToString(),
392+
parentMerchantID,
393+
pageNumber,
394+
pageSize,
395+
search,
396+
sort);
397+
398+
var prob = _apiClient.CheckAccessToken(userAccessToken, nameof(GetMerchantTokenAsync));
399+
400+
return prob switch
401+
{
402+
var p when p.IsEmpty => _apiClient.GetAsync<MerchantPageResponse>(url, userAccessToken),
403+
_ => Task.FromResult(new RestApiResponse<MerchantPageResponse>(HttpStatusCode.PreconditionFailed, new Uri(url), prob))
404+
};
405+
}
368406
}

src/NoFrixion.MoneyMoov/MoneyMoovUrlBuilder.cs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace NoFrixion.MoneyMoov;
1818
public enum MoneyMoovResources
1919
{
2020
accounts,
21-
21+
2222
banksettings,
2323

2424
batch,
@@ -54,7 +54,7 @@ public enum MoneyMoovResources
5454
userroles,
5555

5656
webhooks,
57-
57+
5858
roles,
5959

6060
users,
@@ -80,13 +80,13 @@ public static string AccountsUrl(string moneyMoovBaseUrl)
8080

8181
public static string AccountPayoutsUrl(string moneyMoovBaseUrl, Guid accountID)
8282
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.accounts}/{accountID}/{MoneyMoovResources.payouts}";
83-
83+
8484
public static string StatementsUrl(string moneyMoovBaseUrl)
8585
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.accounts}/{MoneyMoovResources.statements}";
8686

8787
public static string StatementsUrlWithAccountPlaceholder(string moneyMoovBaseUrl)
8888
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.accounts}/##account##/{MoneyMoovResources.statements}";
89-
89+
9090
public static string StatementsUrl(string moneyMoovBaseUrl, Guid accountID, Guid statementID)
9191
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.accounts}/{accountID}/{MoneyMoovResources.statements}/{statementID}";
9292
}
@@ -114,20 +114,20 @@ public static string MerchantAccountsUrl(string moneyMoovBaseUrl, Guid merchantI
114114
public static string MerchantBankSettings(string moneyMoovBaseUrl, Guid merchantID,
115115
CurrencyTypeEnum? currency = null)
116116
{
117-
return currency.HasValue
118-
? $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.banksettings}?currency={currency}"
117+
return currency.HasValue
118+
? $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.banksettings}?currency={currency}"
119119
: $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.banksettings}";
120120
}
121-
121+
122122
public static string MerchantTokensUrl(string moneyMoovBaseUrl, Guid merchantID)
123123
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.tokens}";
124124

125125
public static string MerchantUserInvitesUrl(string moneyMoovBaseUrl, Guid merchantID)
126126
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.userinvites}";
127-
127+
128128
public static string MerchantWebHooksUrl(string moneyMoovBaseUrl, Guid merchantID)
129129
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.webhooks}";
130-
130+
131131
public static string MerchantRolesUrl(string moneyMoovBaseUrl, Guid merchantID)
132132
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.roles}";
133133

@@ -136,15 +136,23 @@ public static string MerchantRoleUrl(string moneyMoovBaseUrl, Guid merchantID, G
136136

137137
public static string MerchantRoleUsersUrl(string moneyMoovBaseUrl, Guid merchantID, Guid roleID)
138138
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.roles}/{roleID}/{MoneyMoovResources.users}";
139-
139+
140140
public static string MerchantRoleUsersUrl(string moneyMoovBaseUrl, Guid merchantID, Guid roleID, Guid userID)
141141
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.roles}/{roleID}/{MoneyMoovResources.users}/{userID}";
142142

143143
public static string MerchantRolesUserUrl(string moneyMoovBaseUrl, Guid merchantID, Guid userID)
144144
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.users}/{userID}/{MoneyMoovResources.roles}";
145-
145+
146146
public static string MerchantRolesBatchCreateUrl(string moneyMoovBaseUrl, Guid merchantID)
147147
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{merchantID}/{MoneyMoovResources.roles}/batchcreate";
148+
149+
public static string ChildMerchantsUrl(string moneyMoovBaseUrl, Guid parentMerchantID,
150+
int? pageNumber,
151+
int? pageSize,
152+
string? search,
153+
string? sort)
154+
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.merchants}/{parentMerchantID}/childmerchants" +
155+
$"?pageNumber={pageNumber}&pageSize={pageSize}&search={search}&sort={sort}";
148156
}
149157

150158
/// <summary>
@@ -202,7 +210,7 @@ public static string PaymentRequestUrl(string moneyMoovBaseUrl, Guid paymentRequ
202210

203211
public static string GetByOrderIDUrl(string moneyMoovBaseUrl, string orderID)
204212
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.paymentrequests}/getbyorderid/{orderID}";
205-
213+
206214
public static string BatchPaymentRequestsUrl(string moneyMoovBaseUrl)
207215
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.paymentrequests}/batchcreate";
208216
}
@@ -238,7 +246,7 @@ public static string SubmitBatchPayoutUrl(string moneyMoovBaseUrl, Guid payoutID
238246

239247
public static string CancelScheduledPayoutUrl(string moneyMoovBaseUrl, Guid payoutID)
240248
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.payouts}/cancel/{payoutID}";
241-
249+
242250
public static string RejectPayoutUrl(string moneyMoovBaseUrl, Guid payoutID)
243251
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.payouts}/reject/{payoutID}";
244252

@@ -327,7 +335,7 @@ public static string AuthoriseUserInviteUrl(string moneyMoovBaseUrl, Guid userIn
327335

328336
public static string UserInviteDetailsUrl(string moneyMoovBaseUrl, Guid userInviteID)
329337
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.userinvites}/{userInviteID}/details";
330-
338+
331339
public static string BatchUserInvitesUrl(string moneyMoovBaseUrl)
332340
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.userinvites}/batchcreate";
333341
}
@@ -357,7 +365,7 @@ public static string BeneficiaryUrl(string moneyMoovBaseUrl)
357365

358366
public static string AuthoriseBeneficiaryUrl(string moneyMoovBaseUrl, Guid beneficiaryID)
359367
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.beneficiaries}/authorise/{beneficiaryID}";
360-
368+
361369
public static string BatchBeneficiariesUrl(string moneyMoovBaseUrl)
362370
=> $"{moneyMoovBaseUrl}/{MoneyMoovResources.beneficiaries}/batchcreate";
363371
}
@@ -429,5 +437,5 @@ public static string BeneficiaryGroupsGetAllApiUrl(string moneyMoovBaseUrl, Guid
429437
public static string BusinessHubUrl(string moneyMoovBaseUrl)
430438
{
431439
return $"{moneyMoovBaseUrl}/signalr/business";
432-
}
440+
}
433441
}

0 commit comments

Comments
 (0)